/// <summary> /// Parse the specified data. /// command부분을 읽어서 해당 객체를 생성 /// </summary> /// <param name="data">Data.</param> public static ReceiveMessage Parse(List <byte> data) { ReceiveMessage msg = null; int cmd = data [0]; switch (cmd) { case 0: // BindSuccess msg = new BindSuccessMessage(data); break; case 1: // Bind Failed msg = new BindFailedMessage(data); break; case 2: //Move and Rotate msg = new MoveAndRotateMessage(data); break; case 3: // Shoot msg = new ShootMessage(data); break; case 4: // game_count msg = new GameCountMessage(data); break; case 5: // game_start msg = new GameStartMessage(data); break; case 6: // game_end msg = new GameEndMessage(data); break; case 7: // attacked msg = new AttackedMessage(data); break; case 8: // map msg = new MapMessage(data); break; case 9: // player_position msg = new PlayerPosition(data); break; case 10: // death msg = new DeathMessage(data); break; case 11: // sold_out msg = new SoldOutMessage(data); break; case 12: // emergency_stop msg = new EmergencyStopMessage(data); break; case 13: // death_stop msg = new DeathStopMessage(data); break; } return(msg); }
/// <summary> /// Processes the message. /// Server to Client Message. /// 서버로부터 온 메세지를 큐에서 꺼내 읽고 해당 이벤트 발생. /// </summary> /// <param name="msg">Message.</param> protected void ProcessMessage(Receive.ReceiveMessage msg) { if (msg is Receive.BindSuccessMessage) { if (OnBindSuccess != null) { OnBindSuccess(); } } else if (msg is Receive.BindFailedMessage) { if (OnBindFailed != null) { OnBindFailed(((Receive.BindFailedMessage)msg).Code); } } else if (msg is Receive.MoveAndRotateMessage) { Receive.MoveAndRotateMessage m = (Receive.MoveAndRotateMessage)msg; Vector2 move = new Vector2(m.moveX, m.moveY); Vector2 rotate = new Vector2(m.rotateX, m.rotateY); if (OnControl != null) { OnControl(move, rotate); } if (OnControlType != null) { OnControlType(getMoveType(move), getRotateType(rotate)); } } else if (msg is Receive.ShootMessage) { Receive.ShootMessage m = (Receive.ShootMessage)msg; Vector3 position = new Vector3(m.positionX, m.positionY, m.positionZ); Vector3 velocity = new Vector3(m.velocityX, m.velocityY, m.velocityZ); if (OnShoot != null) { OnShoot(position, velocity); } } else if (msg is Receive.GameStartMessage) { if (OnGameStart != null) { OnGameStart(); } } else if (msg is Receive.GameCountMessage) { if (OnGameCount != null) { OnGameCount(((Receive.GameCountMessage)msg).value); } } else if (msg is Receive.GameEndMessage) { if (OnGameEnd != null) { OnGameEnd(((Receive.GameEndMessage)msg).value); } } else if (msg is Receive.AttackedMessage) { if (OnAttacked != null) { OnAttacked(); } } else if (msg is Receive.MapMessage) { if (OnMap != null) { OnMap(); } } else if (msg is Receive.DeathMessage) { if (OnDeath != null) { OnDeath(((Receive.DeathMessage)msg).uid); } } else if (msg is Receive.SoldOutMessage) { if (OnSoldOut != null) { OnSoldOut(((Receive.SoldOutMessage)msg).uid, ((Receive.SoldOutMessage)msg).unitnum); } } else if (msg is Receive.DeathStopMessage) { if (OnDeathStop != null) { OnDeathStop(((Receive.DeathMessage)msg).uid); } } else if (msg is Receive.EmergencyStopMessage) { if (OnEmergencyStop != null) { OnEmergencyStop(((Receive.DeathMessage)msg).uid); } } }