public void ReadCallback(IAsyncResult ar) { Encoding enc = Encoding.UTF8; int bytes = stream.EndRead(ar); if (bytes == 0) { StopClient(); return; } string message = enc.GetString(readbuf, 0, bytes); message = message.Replace("\r", "").Replace("\n", ""); ClientBaseDebugLog("ReadCallback " + message); ProtocolItem item = null; try { item = JsonUtility.FromJson <ProtocolItem>(message); mainThread.Post(d => { if (item != null) { // ProtocolMaker.DebugDeserializeProtocol(item); switch ((ProtocolType)item.msgType) { case ProtocolType.A2C_UpdateClientInfo: A2C_UpdateClientInfo(item); break; case ProtocolType.A2C_ResponseStartGame: A2C_ResponseStartGame(); break; case ProtocolType.A2C_AddForceToBall: A2C_AddForceToBall(item); break; case ProtocolType.A2C_UpdateLine: A2C_UpdateLine(item); break; case ProtocolType.A2C_GameResult: A2C_GameResult(item); break; } } }, null); } catch { ClientBaseDebugLog("JsonUtility.From Json Failed"); } readbuf = new byte[2048]; stream.BeginRead(readbuf, 0, readbuf.Length, new AsyncCallback(ReadCallback), null); }
// // ログイン // public static ProtocolItem Mk_C2A_RegisterHost() { ProtocolItem item = new ProtocolItem(); item.msgType = ProtocolType.C2A_RegisterHost; return(item); }
public static ProtocolItem Mk_A2C_ResponseStartGame() { ProtocolItem item = new ProtocolItem(); item.msgType = ProtocolType.A2C_ResponseStartGame; return(item); }
// // ゲームスタート // public static ProtocolItem Mk_C2A_RequestStartGame() { ProtocolItem item = new ProtocolItem(); item.msgType = ProtocolType.C2A_RequestStartGame; return(item); }
/// <summary> /// Navigate through the local file system /// </summary> private void LocalBrowser(ProtocolItem protocolItem) { if (protocolItem.Type is FolderType) { GetLocalFilesAndFolders(LocalItems, protocolItem.FullPath); LocalPath = protocolItem.FullPath; } }
/// <summary> /// Browse into the folder /// </summary> /// <param name="obj"></param> private void RemoteBrowser(ProtocolItem obj) { if (obj.Type is FolderType) { GetRemoteFilesAndFolders(RemoteItems, obj.FullPath); RemotePath = obj.FullPath; } }
// // Result // public static ProtocolItem Mk_C2A_GameResult(int objectId) { ProtocolItem item = new ProtocolItem(); item.msgType = ProtocolType.C2A_GameResult; item.objectId_1 = objectId; return(item); }
public static ProtocolItem Mk_Position(int sendFrom, Vector3 vector) { ProtocolItem item = new ProtocolItem(); item.sendFrom = sendFrom; item.vectorParam_1 = FormartVector3ToVector_3(vector); item.msgType = ProtocolType.Position; return(item); }
public static ProtocolItem Mk_A2C_UpdateClientInfo(int hostId, int guestId) { ProtocolItem item = new ProtocolItem(); item.msgType = ProtocolType.A2C_UpdateClientInfo; item.objectId_1 = hostId; item.objectId_2 = guestId; return(item); }
public static ProtocolItem Mk_SimpleMsg(int sendFrom, string msg) { ProtocolItem item = new ProtocolItem(); item.sendFrom = sendFrom; item.stringParam = msg; item.msgType = ProtocolType.SimpleMsg; return(item); }
public static ProtocolItem Mk_C2A_UpdateLine(int sendFrom, int id, Vector3 pos, Vector3 dir, Vector3 scale, bool isCreate) { ProtocolItem item = new ProtocolItem(); item.sendFrom = sendFrom; item.objectId_1 = id; item.msgType = ProtocolType.C2A_UpdateLine; item.vectorParam_1 = FormartVector3ToVector_3(pos); item.vectorParam_2 = FormartVector3ToVector_3(dir); item.vectorParam_3 = FormartVector3ToVector_3(scale); item.boolParam = isCreate; return(item); }
public static void DebugDeserializeProtocol(ProtocolItem item) { switch (item.msgType) { case ProtocolType.SimpleMsg: Debug.Log("DeserializeProtocol" + item.sendFrom + " " + item.stringParam); break; case ProtocolType.Position: Debug.Log("DeserializeProtocol" + item.sendFrom + " " + item.vectorParam_1); break; } }
public void A2C_AddForceToBall(ProtocolItem item) { ClientBaseDebugLog("A2C_AddForceToBall"); if (item.sendFrom != SelfClientObjectID) { ClientBaseDebugLog("A2C_AddForceToBall Excuted!!"); FieldManager.GetInstance().Ball.SetupRemoteAddForece( ProtocolMaker.FormartVector_3ToVector3(item.vectorParam_1), ProtocolMaker.FormartVector_3ToVector3(item.vectorParam_2), ProtocolMaker.FormartVector_3ToVector3(item.vectorParam_3) ); } }
void A2C_UpdateClientInfo(ProtocolItem item) { ClientBaseDebugLog("A2C_UpdateClientInfo id " + item.objectId_1 + " result " + item.objectId_2); HostClientObjectID = item.objectId_1; GuestClientObjectID = item.objectId_2 >= 0 ? item.objectId_2 : new int?(); if (IsGameHost) { SelfClientObjectID = HostClientObjectID; } else { SelfClientObjectID = GuestClientObjectID; } }
// // Ball // public static ProtocolItem Mk_C2A_AddForceToBall(int sendFrom, Vector3 dir, Vector3 pos, Vector3 velocity) { ProtocolItem item = new ProtocolItem(); item.sendFrom = sendFrom; item.msgType = ProtocolType.C2A_AddForceToBall; item.vectorParam_1 = FormartVector3ToVector_3(dir); item.vectorParam_2 = FormartVector3ToVector_3(pos); item.vectorParam_3 = FormartVector3ToVector_3(velocity); // item.vectorParam_1.x = Mathf.Floor(dir.x * 1000) / 1000f; // item.vectorParam_1.y = Mathf.Floor(dir.y * 1000) / 1000f; // item.vectorParam_1.z = Mathf.Floor(dir.z * 1000) / 1000f; // item.vectorParam_2.x = Mathf.Floor(pos.x * 1000) / 1000f; // item.vectorParam_2.y = Mathf.Floor(pos.y * 1000) / 1000f; // item.vectorParam_2.z = Mathf.Floor(pos.z * 1000) / 1000f; return(item); }
public void A2C_UpdateLine(ProtocolItem item) { ClientBaseDebugLog("A2C_UpdateLine"); if (item.sendFrom != SelfClientObjectID) { ClientBaseDebugLog("A2C_UpdateLine Excuted!!" + item.boolParam); if (item.boolParam) { Debug.LogError("A2C_UpdateLine"); var id = item.objectId_1; var pos = ProtocolMaker.FormartVector_3ToVector3(item.vectorParam_1); var dir = ProtocolMaker.FormartVector_3ToVector3(item.vectorParam_2); var scl = ProtocolMaker.FormartVector_3ToVector3(item.vectorParam_3); FieldManager.GetInstance().OnRemoteLineCreated(id, pos, dir, scl); } else { Debug.LogError("OnRemoteLineDead"); FieldManager.GetInstance().OnRemoteLineDead(item.objectId_1); } } }
public void A2C_GameResult(ProtocolItem item) { ClientBaseDebugLog("A2C_GameResult"); WinObjectID = item.objectId_1; FieldManager.GetInstance().RequestUpdateGameStateAsync(GameState.Goal); }
public static ProtocolItem Mk_A2C_AddForceToBall(ProtocolItem c2a_item) { c2a_item.msgType = ProtocolType.A2C_AddForceToBall; return(c2a_item); }
void On_A2C_RegisterAsClient(ProtocolItem item) { }
void On_A2C_RegisterAsHost(ProtocolItem item) { }
// クライアントからメッセージ受信 protected override void OnMessage(string msg, TcpClient client) { //base.OnMessage(msg, client); // ------------------------------------------------------------- // あとは送られてきたメッセージによって何かしたいことを書く // ------------------------------------------------------------- ProtocolItem item = null; try { item = ProtocolMaker.MakeToJson(msg); } catch { Debug.LogError("ProtocolMaker.MakeToJson(msg); failed" + msg); } ServerDebugLog("OnMessage : " + item.msgType.ToString() + " From " + item.sendFrom); switch (item.msgType) { case ProtocolType.C2A_RegisterHost: hostObjectId = GetClientObjectId(client); var host_logined = ProtocolMaker.Mk_A2C_UpdateClientInfo(hostObjectId.Value, -1); msg = ProtocolMaker.SerializeToJson(host_logined); SendMessageToClientAll(msg); break; case ProtocolType.C2A_RegisterClient: guestObjectId = GetClientObjectId(client); var guest_logined = ProtocolMaker.Mk_A2C_UpdateClientInfo(hostObjectId.Value, guestObjectId.Value); msg = ProtocolMaker.SerializeToJson(guest_logined); SendMessageToClientAll(msg); break; case ProtocolType.C2A_RequestStartGame: var game_start = ProtocolMaker.Mk_A2C_ResponseStartGame(); msg = ProtocolMaker.SerializeToJson(game_start); SendMessageToClientAll(msg); break; case ProtocolType.C2A_AddForceToBall: var add_forec = ProtocolMaker.Mk_A2C_AddForceToBall(item); msg = ProtocolMaker.SerializeToJson(add_forec); SendMessageToClientAll(msg); break; case ProtocolType.C2A_UpdateLine: var update_line = ProtocolMaker.Mk_A2C_UpdateLine(item); msg = ProtocolMaker.SerializeToJson(update_line); SendMessageToClientAll(msg); break; case ProtocolType.C2A_GameResult: var result = ProtocolMaker.Mk_A2C_GameResult(item); msg = ProtocolMaker.SerializeToJson(result); SendMessageToClientAll(msg); break; default: // クライアントに受領メッセージを返す SendMessageToClientAll(msg); break; } }
public static ProtocolItem Mk_A2C_UpdateLine(ProtocolItem c2a_item) { c2a_item.msgType = ProtocolType.A2C_UpdateLine; return(c2a_item); }
public static ProtocolItem Mk_A2C_GameResult(ProtocolItem item) { item.msgType = ProtocolType.A2C_GameResult; return(item); }
public static string SerializeToJson(ProtocolItem item) { return(JsonUtility.ToJson(item)); }