void SetUserData() { string data = JsonFactory.Load(Const.UserDataName); StructUserData _data = JsonUtility.FromJson <StructUserData>(data); Const.UserData = _data; }
/* @ url : SyncMovement * @ request : * posX * posY * opponentUid * @ response : * opponentPosX * opponentPosY */ StructRequest SyncMovement(StructRequest request) { string user_id = request.uid; // 유저가 없을 때 if (!mUserData.ContainsKey(user_id)) { return(ServerNet.ErrorStructRequest()); } StructUserData user_data = mUserData[user_id]; // 파라매터가 오지 않았을 경우 if (request.parameter == null) { return(ServerNet.ErrorStructRequest()); } // 유저 위치 기록 if (request.parameter.ContainsKey("posX")) { user_data.posX = request.parameter["posX"]; } if (request.parameter.ContainsKey("posY")) { user_data.posY = request.parameter["posY"]; } if (request.parameter.ContainsKey("opponentUid")) { user_data.opponentUid = request.parameter["opponentUid"]; } mUserData[user_id] = user_data; // 상대방 정보 if (!request.parameter.ContainsKey("opponentUid")) { return(ServerNet.ErrorStructRequest()); } string opponentUid = request.parameter["opponentUid"]; // 상대방 정보 없을 경우 if (!mUserData.ContainsKey(opponentUid)) { return(ServerNet.ErrorStructRequest()); } StructUserData opponent_data = mUserData[opponentUid]; // 상대방 위치를 response로 전달 Dictionary <string, string> dic_param = new Dictionary <string, string>(); dic_param["opponentPosX"] = opponent_data.posX == null ? "0" : opponent_data.posX; dic_param["opponentPosY"] = opponent_data.posY == null ? "0" : opponent_data.posY; return(MakeResponse(request, dic_param)); }
/* @ url : InitUser * @ request : * @ response : * uid * mapData */ StructRequest InitUserID(StructRequest request) { int user_id = mUIDIndex % 2; // uid는 0 과 1 만 발급 mUIDIndex += 1; if (mUserData == null) { mUserData = new Dictionary <string, StructUserData>(); } // 유저 데이터 생성 StructUserData user_data = new StructUserData(); user_data.uid = user_id.ToString(); // 파라매터 생성 Dictionary <string, string> dic_param = new Dictionary <string, string>(); dic_param["mapData"] = mMapData; dic_param["itemData"] = mItemList; // 유저 데이터에 저장 request.uid = user_data.uid; mUserData[user_id.ToString()] = user_data; return(MakeResponse(request, dic_param)); }
// PVP public void GotoPVPGame() { // @request 상대 UID 요청 StructRequest request = new StructRequest(); request.uid = mUserData.uid; request.request_url = URL.GetOpponentData.ToString(); void mCallBack(StructRequest response) { if (response.parameter != null) { if (response.parameter["opponentUid"] != null) { StructUserData user_data = mUserData; user_data.opponentUid = response.parameter["opponentUid"]; // 발급받은 UID는 로컬 데이터에 저장 JsonFactory.Write(Const.UserDataName, user_data); // 상대 클라이언트가 준비되었다면 게임 실행 SceneManager.LoadScene("GameScene"); } } } mNet.SetCallBack(mCallBack); mNet.RequestMsg(request); }
void SetSocket() { // 소켓 설치 gameObject.AddComponent <ClientNet>(); mNet = GetComponent <ClientNet>(); // @request UID 발급 신청 StructRequest request = new StructRequest(); request.uid = ""; request.request_url = URL.InitUser.ToString(); void CallBack(StructRequest response) { if (response.uid != null) { mUserData = new StructUserData(); mUserData.uid = response.uid; mUserData.isPVPMode = true; string map_data = response.parameter["mapData"]; string item_data = response.parameter["itemData"]; // 맵 데이터에 저장 JsonFactory.WriteString(Const.MapDataName, map_data); mUserData.itemData = item_data; } } mNet.SetCallBack(CallBack); mNet.RequestMsg(request); }
/* @ url : AttackBomb * @ request : * @ response : * bombIndex */ // @Send 함수가 별도로 있음 주의할 것 void AttackBomb(StructRequest request) { string user_id = request.uid; // 유저가 없을 경우 if (!mUserData.ContainsKey(user_id)) { return; } // 물풍선 위치 저장 StructUserData user_data = mUserData[user_id]; if (request.parameter.ContainsKey("bombIndex")) { user_data.bombIndex = request.parameter["bombIndex"]; } // 바로 쏴주기 떄문에 사실 필요는 없다. mUserData[user_id] = user_data; // 파라매터 Dictionary <string, string> dic_param = new Dictionary <string, string>(); dic_param["bombIndex"] = user_data.bombIndex; StructRequest res = MakeResponse(request, dic_param); // 상대 클라이언트 소켓에 물풍선 통신 Socket socket; if (request.uid == "0") { socket = mBombSocket1; } else { socket = mBombSocket2; } string send = NetFormatHelper.StructRequestToString(res); byte[] _data = new Byte[ServerNet.BYTESIZE]; _data = NetFormatHelper.StringToByte(send); try { Console.WriteLine("수신 : " + send); socket.Send(_data); } catch (Exception err) { Console.WriteLine("Send error"); return; } }
private void Start() { // 소켓 설치 gameObject.AddComponent <ClientNet>(); mNEt = this.GetComponent <ClientNet>(); // 로컬 데이터에 들어있는 유저 정보 저장 string data = JsonFactory.Load(Const.UserDataName); StructUserData _data = JsonUtility.FromJson <StructUserData>(data); Const.UserData = _data; }
public void SetPVEMode() { mIsPVPMode = false; SetMode(); StructUserData user_data = new StructUserData(); user_data.uid = ""; user_data.isPVPMode = false; // PVE 모드 저장 JsonFactory.Write(Const.UserDataName, user_data); }
public void Start() { // 로컬 데이터에 들어있는 유저 정보 저장 string data = JsonFactory.Load(Const.UserDataName); StructUserData _data = JsonUtility.FromJson <StructUserData>(data); Const.UserData = _data; if (Const.UserData.isPVPMode) { SetItemList(); } }
void Start() { string data = JsonFactory.Load(Const.UserDataName); StructUserData _data = JsonUtility.FromJson <StructUserData>(data); if (_data.isPVPMode) { SetPVPMode(); } else { SetPVEMode(); } }
/* @ url : GetOpponentData * @ request : * @ response : * opponentUid */ StructRequest GetOpponentData(StructRequest request) { string user_uid = request.uid; string opponent_uid = ErrorCode.Error.ToString(); if (user_uid == "1") { opponent_uid = "0"; } else { opponent_uid = "1"; } if (mUserData.ContainsKey(opponent_uid)) { StructUserData opponent_data = mUserData[opponent_uid]; Dictionary <string, string> dic_param = new Dictionary <string, string>(); dic_param["opponentUid"] = opponent_data.uid; return(MakeResponse(request, dic_param)); } return(ServerNet.ErrorStructRequest()); }