[add] Lobby

This commit is contained in:
2023-11-24 11:15:26 +08:00
parent bd457c7f10
commit 987aa1cb5e
27 changed files with 1985 additions and 27 deletions

View File

@@ -1,6 +1,7 @@
import { BusinessEnum } from "@/_BusinessTypeSetting/BusinessTypeSetting";
import MainControl from "@/Common/MainControl/MainControl";
import BusinessTypeSetting, { BusinessEnum } from "@/_BusinessTypeSetting/BusinessTypeSetting";
import { PlayerData } from "@/define/playerData";
import { IGameItems } from "@/types";
import { LineTools } from "@/utils/LineTools";
import { ReactNode, createContext, useContext, useState } from "react";
type GameItemsProviderProps = {
@@ -15,26 +16,70 @@ export let gameObj: IGameItems = null;
export function GameItemsProvider({ children }: GameItemsProviderProps) {
const [gameId, setGameId] = useState<number>(null);
const [player, setPlayer] = useState<PlayerData>({
token: "",
});
const game: IGameItems = gameObj = {
onLoad,
gameId,
setGameId
setGameId,
player,
setPlayer
};
async function onLoad(serverType: BusinessEnum.ServerType) {
new MainControl();
await Promise.all([
// // 設定執行環境
// setBusinessType(),
// 設定執行環境
setBusinessType(serverType),
// // 設定LineTools環境
// await setLineTools(),
]);
}
/** 設定LineTools環境 */
async function setLineTools() {
await LineTools.onLoad();
/** 設定執行環境 */
function setBusinessType(useServerType: BusinessEnum.ServerType): void {
// 連線參數自定義
const queryParameters = new URLSearchParams(location.search);
const servertype: string = queryParameters.get("servertype") ?? useServerType.toString();
const host: string = queryParameters.get("host");
const port: string = queryParameters.get("port");
const patch: string = queryParameters.get("patch");
const downloadurl: string = queryParameters.get("downloadurl");
const liffid: string = queryParameters.get("liffid");
if (servertype) {
// 自定預設環境
BusinessTypeSetting.UseServerType = +servertype;
BusinessTypeSetting.UseHost = BusinessTypeSetting.GetHostUrl(BusinessTypeSetting.UseServerType);
BusinessTypeSetting.UsePort = BusinessTypeSetting.GetPortNum(BusinessTypeSetting.UseServerType);
BusinessTypeSetting.UsePatch = BusinessTypeSetting.GetPatchUrl(BusinessTypeSetting.UseServerType);
BusinessTypeSetting.UseDownloadUrl = BusinessTypeSetting.GetDownloadUrl(BusinessTypeSetting.UseServerType);
BusinessTypeSetting.UseLiffID = BusinessTypeSetting.GetLiffID(BusinessTypeSetting.UseServerType);
BusinessTypeSetting.UseLineID = BusinessTypeSetting.GetLineID(BusinessTypeSetting.UseServerType);
}
if (host) {
// 自定連線1(有自定則無視UseServerType)
BusinessTypeSetting.UseHost = host;
}
if (port) {
// 自定連線2(有自定則無視UseServerType)
BusinessTypeSetting.UsePort = +port;
}
if (patch) {
// 自定連資源伺服器(有自定則無視UseServerType)
BusinessTypeSetting.UsePatch = patch;
}
if (downloadurl) {
// 自定連靜態伺服器(有自定則無視UseServerType)
BusinessTypeSetting.UseDownloadUrl = downloadurl;
}
if (liffid) {
// 自定連Line Liff(有自定則無視UseServerType)
BusinessTypeSetting.UseLiffID = liffid;
}
return;
}
return (