public void ReceiveNetworkMessage(NetworkManager.MessageEvent e) { if (NetworkOrderController.OBSERVER_MODE) { if (e.msgType.Equals(NetworkManager.USER_PLACE_CHANGE)) { if (m_gameUserInfo == null) { return; } for (int i = 0; i < m_gameUserInfo.Count; i++) { if (m_gameUserInfo[i].player.USERNAME.Equals(e.user + "_robo")) { m_gameUserInfo[i].place = (PLACE)e.msg.GetField(NetworkManager.USER_PLACE_CHANGE).i; if (i == m_curIndex) { ChangeUser(m_curIndex); } return; } } } } }
void NetworkManager.NetworkMessageEventListenrer.ReceiveNetworkMessage(NetworkManager.MessageEvent e) { if (e.msgType.Equals(NetworkManager.HP_UPDATE)) { // 데미지 입은것이 들어옴 if (e.targetName.Equals(m_name) && !GameManager.Instance().PLAYER.USER_NAME.Equals(e.user)) { if (m_damageCoolTime) { return; } m_damageCoolTime = true; GameManager.Instance().SetCurrentEnemy(this); base.Damage((int)e.msg.GetField(NetworkManager.HP_UPDATE).i); if (m_hp <= 0) { MapManager.Instance().AddObject(GamePath.EFFECT, transform.position); NetworkManager.Instance().SendOrderMessage(JSONMessageTool.ToJsonRemoveOrder(m_name, "Monster")); NetworkManager.Instance().RemoveNetworkOrderMessageEventListener(this); GameObject.Destroy(gameObject); return; } m_damageCoolTime = true; if (!IsInvoking("DamageEffect")) { InvokeRepeating("DamageEffect", 0.1f, 0.1f); } } } }
// 상태값 교환으로 애니메이션 void NetworkManager.NetworkMessageEventListenrer.ReceiveNetworkMessage(NetworkManager.MessageEvent e) { if (e.msgType == NetworkManager.STATE_CHANGE) { if (GameManager.Instance().PLAYER.USER_NAME == m_movePlayerName) { return; } //상태값 뽑기 m_roboState = (int)e.msg.GetField(NetworkManager.STATE_CHANGE).i; // 공격 애니메이션을 gun 을 작동시키는 녀석이 재생할 필요가 없다고 가정하고 해보자 if (BitControl.Get(m_roboState, (int)ROBO_STATE.ATTACK) || BitControl.Get(m_roboState, (int)ROBO_STATE.COOLTIME)) { if (m_gunPlayerName == GameManager.Instance().PLAYER.USER_NAME) { m_roboState = BitControl.Clear(m_roboState, (int)ROBO_STATE.ATTACK); m_roboState = BitControl.Clear(m_roboState, (int)ROBO_STATE.COOLTIME); } } } else if (e.msgType == NetworkManager.GUN_ANGLE_CHANGE) { // 앵글 또한 보간해야함 if (GameManager.Instance().PLAYER.USER_NAME == m_gunPlayerName) { return; } m_targetAngle = e.msg.GetField(NetworkManager.GUN_ANGLE_CHANGE).f; m_syncTime_angle = 0.0f; m_delay_angle = Time.time - m_lastSyncTimeAngle; m_lastSyncTimeAngle = Time.time; } else if (e.msgType == NetworkManager.HP_UPDATE) { if (GameManager.Instance().PLAYER.USER_NAME.Equals(e.user) || !e.targetName.EndsWith("robo")) { return; } m_hp = (int)e.msg.GetField(NetworkManager.HP_UPDATE).i; } else if (e.msgType == NetworkManager.ENERGY_UPDATE) { if (GameManager.Instance().PLAYER.USER_NAME.Equals(e.user) || !e.targetName.EndsWith("robo")) { return; } m_roboEnergy = e.msg.GetField(NetworkManager.ENERGY_UPDATE).f; } else if (e.msgType.Equals(NetworkManager.ROBOT_PLACE)) { if (!string.IsNullOrEmpty(m_movePlayerName) && m_movePlayerName.Equals(e.user) || (!string.IsNullOrEmpty(m_gunPlayerName) && m_gunPlayerName.Equals(e.user))) { return; } m_controllName = e.targetName; } }
void NetworkManager.NetworkMessageEventListenrer.ReceiveNetworkMessage(NetworkManager.MessageEvent e) { if (e.msgType.Equals(NetworkManager.HP_UPDATE)) { // 데미지 입은것이 들어옴 if (e.targetName.Equals(m_name) && !GameManager.Instance().PLAYER.USER_NAME.Equals(e.user)) { GameManager.Instance().SetCurrentEnemy(this); base.Damage((int)e.msg.GetField(NetworkManager.HP_UPDATE).i); if (m_hp <= 0) { MapManager.Instance().AddObject(GamePath.EFFECT, transform.position); if (!m_tutorial) { NetworkManager.Instance().SendOrderMessage(JSONMessageTool.ToJsonRemoveOrder(m_name, "Monster")); NetworkManager.Instance().RemoveNetworkOrderMessageEventListener(this); } else { m_tutoRobo.TutoKillMonster(); } GameObject.Destroy(gameObject); } } } }
void NetworkManager.NetworkMessageEventListenrer.ReceiveNetworkMessage(NetworkManager.MessageEvent e) { if (e.targetName.Equals(m_name)) { m_index = (int)e.msg.GetField(NetworkManager.STATE_CHANGE).i; DamageFix(); } }
public void ReceiveNetworkMessage(NetworkManager.MessageEvent e) { switch (e.msgType) { case NetworkManager.REMOVE: if (e.targetName.Equals(m_name)) { NetworkManager.Instance().RemoveNetworkOrderMessageEventListener(this); NetworkManager.Instance().RemoveNetworkEnemyMoveEventListener(this.GetComponent <NetworkMoving>()); GameObject.Destroy(gameObject); } break; case NetworkManager.HP_UPDATE: if (e.targetName.Equals(m_name)) { GameManager.Instance().SetCurrentEnemy(GetComponent <Monster>()); if (IsInvoking("DamageEffect") || IsInvoking("DamageEffectEnd")) { CancelInvoke(); m_meshRenderer.material.color = Color.white; } InvokeRepeating("DamageEffect", 0.1f, 0.1f); } break; case NetworkManager.STATE_CHANGE: break; case NetworkManager.AI_ANI_NAME: if (!e.targetName.Equals(m_name) || m_skeletonAnimation == null || e.msg.GetField(NetworkManager.AI_ANI_NAME) == null || m_skeletonAnimation.state.GetCurrent(0) == null || m_skeletonAnimation.state.GetCurrent(0).animation == null || m_skeletonAnimation.state.GetCurrent(0).animation.name == null) { return; } if (m_skeletonAnimation.state.GetCurrent(0).animation.name.Equals(e.msg.GetField(NetworkManager.AI_ANI_NAME).str)) { return; } m_skeletonAnimation.state.SetAnimation(0, e.msg.GetField(NetworkManager.AI_ANI_NAME).str, e.msg.GetField(NetworkManager.AI_ANI_LOOP).b); AudioSource source = GetComponent <AudioSource>(); if (source != null && !source.isPlaying) { source.Play(); } break; } }
public void ReceiveNetworkMessage(NetworkManager.MessageEvent e) { if (e.msgType.Equals(NetworkManager.DAMAGE)) { if (e.targetName.Equals(m_name)) { GameManager.Instance().SetCurrentEnemy(this); Damage((int)e.msg.GetField(NetworkManager.DAMAGE).i); } } }
void NetworkManager.NetworkMessageEventListenrer.ReceiveNetworkMessage(NetworkManager.MessageEvent e) { if (e.msgType.Equals(NetworkManager.DAMAGE)) { if (e.targetName.Equals(m_name) && !GameManager.Instance().PLAYER.USER_NAME.Equals(e.user)) { GameManager.Instance().SetCurrentEnemy(this); Damage((int)e.msg.GetField(NetworkManager.DAMAGE).i); } } }
public void ReceiveNetworkMessage(NetworkManager.MessageEvent e) { if (e.msgType.Equals(NetworkManager.ENERGY_UPDATE)) { if (!e.targetName.Equals("robo")) { return; } GameManager.Instance().ROBO.ENERGY = e.msg.GetField(NetworkManager.ENERGY_UPDATE).f; UpdateEnergy(); } }
void NetworkManager.NetworkMessageEventListenrer.ReceiveNetworkMessage(NetworkManager.MessageEvent e) { if (e.msgType != NetworkManager.CHAT) { return; } m_messageStrs.Add(e.user + " : " + e.msg.GetField(NetworkManager.MSG)); transform.GetChild(0).gameObject.SetActive(true); transform.GetComponent <Image>().enabled = true; CancelInvoke("HideChatUI"); Invoke("HideChatUI", 2.0f); }
public void ReceiveNetworkMessage(NetworkManager.MessageEvent e) { if (e.msgType.Equals(NetworkManager.PART_DESTROY)) { m_destroyBoneList[(int)e.msg.GetField(NetworkManager.PART_DESTROY).i].enabled = true; } else if (e.msgType.Equals(NetworkManager.HP_UPDATE)) { if (e.targetName.Equals(m_name)) { GameManager.Instance().SetCurrentEnemy(GetComponent <Monster>()); } } }
void NetworkManager.NetworkMessageEventListenrer.ReceiveNetworkMessage(NetworkManager.MessageEvent e) { switch (e.msgType) { case NetworkManager.REMOVE: if (e.targetName.Equals(m_name)) { NetworkManager.Instance().RemoveNetworkOrderMessageEventListener(this); NetworkManager.Instance().RemoveNetworkEnemyMoveEventListener(this.GetComponent <NetworkMoving>()); GameObject.Destroy(gameObject); } break; case NetworkManager.HP_UPDATE: if (e.targetName.Equals(m_name)) { GameManager.Instance().SetCurrentEnemy(GetComponent <Monster>()); } break; case NetworkManager.AI_ANI_NAME: if (!e.targetName.Equals(m_name) || m_skeletonAnimation == null || e.msg.GetField(NetworkManager.AI_ANI_NAME) == null || m_skeletonAnimation.state.GetCurrent(0) == null || m_skeletonAnimation.state.GetCurrent(0).animation == null || m_skeletonAnimation.state.GetCurrent(0).animation.name == null) { return; } if (m_skeletonAnimation.state.GetCurrent(0).animation.name.Equals(e.msg.GetField(NetworkManager.AI_ANI_NAME).str)) { return; } m_skeletonAnimation.state.SetAnimation(0, e.msg.GetField(NetworkManager.AI_ANI_NAME).str, e.msg.GetField(NetworkManager.AI_ANI_LOOP).b); break; } }
public void ReceiveNetworkMessage(NetworkManager.MessageEvent e) { if (NetworkOrderController.ORDER_NAME != null && NetworkOrderController.ORDER_NAME.Equals(GameManager.Instance().PLAYER.USER_NAME)) { return; } if (e.msgType.Equals(NetworkManager.PLANET_INFO)) { if (e.targetName.Equals(m_mapName)) { float leftX = e.msg.GetField(NetworkManager.PLANET_INFO)[0].f; float rightX = e.msg.GetField(NetworkManager.PLANET_INFO)[1].f; Vector3 lPos = m_leftMap.transform.localPosition; Vector3 rPos = m_rightMap.transform.localPosition; m_leftMap.transform.localPosition = new Vector3(leftX, lPos.y, lPos.z); m_rightMap.transform.localPosition = new Vector3(rightX, rPos.y, rPos.z); } } }
// 다른 플레이어의 체력 갱신용 ( 옵저버일 경우 전부 갱신용 ) public void ReceiveNetworkMessage(NetworkManager.MessageEvent e) { if (e.msgType.Equals(NetworkManager.CHARACTER_HPUPDATE)) { // HP UPDATE int curHP = (int)e.msg.GetField(NetworkManager.CHARACTER_HPUPDATE).i; int maxHP = GameSetting.HERO_MAX_HP;//(int)e.msg.GetField(NetworkManager.CHARACTER_MAXHP).i; string name = e.user; for (int i = 0; i < m_userList.Count; i++) { PlayerInfo info = m_userList[i]; if (info.userName.text.Equals(name)) { CharacterHPUpdate(i, curHP, maxHP); return; } } } else if (e.msgType.Equals(NetworkManager.HP_UPDATE)) { if (e.targetName.Equals("robo")) { ((GameUI.RobotHPUpdateEvent) this).HPUpdate( (int)e.msg.GetField(NetworkManager.HP_UPDATE).i, GameSetting.HERO_ROBO_MAX_HP); } else if (e.targetName.Equals("targetMon")) { if (!NetworkOrderController.OBSERVER_MODE || e.user.Equals(GameManager.Instance().PLAYER.USER_NAME)) { return; } gameObject.SetActive(true); m_topEnemyHPBar.transform.parent.gameObject.SetActive(true); float width = m_topEnemyHPBar.sprite.rect.size.x; RectTransform t = m_topEnemyHPBar.GetComponent <RectTransform>(); t.sizeDelta = new Vector2(width * e.msg.GetField(NetworkManager.HP_UPDATE).f, t.sizeDelta.y); float arrowWidth = m_enemyHPLeftArrow.sprite.rect.size.x * 0.5f; Vector3 left = new Vector3( m_topEnemyHPBar.transform.position.x - (t.sizeDelta.x / 2.0f) - arrowWidth, m_enemyHPLeftArrow.transform.position.y); Vector3 right = new Vector3( m_topEnemyHPBar.transform.position.x + (t.sizeDelta.x / 2.0f) + arrowWidth, m_enemyHPLeftArrow.transform.position.y); CancelInvoke("MonsterHPOutCheck"); Invoke("MonsterHPOutCheck", 3.0f); } } else if (e.msgType.Equals(NetworkManager.ENERGY_UPDATE)) { if (e.targetName.Equals("robo")) { ((GameUI.ENERGYUpdateEvent) this).EnergyUpdate( e.msg.GetField(NetworkManager.ENERGY_UPDATE).f); } } }
// Order 받는용 void NetworkManager.NetworkMessageEventListenrer.ReceiveNetworkMessage(NetworkManager.MessageEvent e) { if (e.msgType == NetworkManager.CHARACTER_HPUPDATE && (e.user).Equals(USERNAME)) { InvokeRepeating("DamageEffect", 0.1f, 0.1f); } if (e.msgType == NetworkManager.CHARACTER_HPUPDATE && e.targetName.Equals(USERNAME)) { Damage(1); } // 상태 체인지 else if (e.msgType == NetworkManager.STATE_CHANGE && (e.targetName).Equals(m_userName)) { if (m_isMe) { return; } m_curState = (int)e.msg.GetField(NetworkManager.STATE_CHANGE).i; } // 로봇 조종자 else if (e.msgType == NetworkManager.ROBOT_DRIVER) { if (e.msg.GetField(NetworkManager.ROBOT_DRIVER).b) { GameManager.Instance().ROBO.MOVE_PLYAER = e.user; //test if (m_isMe && m_userName.Equals(e.user + "_robo")) { GameManager.Instance().ChangeScene(GameManager.PLACE.ROBO, gameObject, "InteractionEffect", false); } } else { if (m_isMe && m_userName.Equals(e.user + "_robo")) { m_curState = BitControl.Clear(m_curState, (int)HERO_STATE.CONTROL_DRIVE); GameManager.Instance().ChangeScene(GameManager.PLACE.ROBO_IN_DRIVE); GameManager.Instance().HeroSetup(this); } GameManager.Instance().ROBO.MOVE_PLYAER = null; } } // 이녀석은 총기를 조작하는 사람 else if (e.msgType == NetworkManager.ROBOT_GUNNER) { if (e.msg.GetField(NetworkManager.ROBOT_GUNNER).b) { GameManager.Instance().ROBO.GUN_PLAYER = e.user; if (m_isMe && m_userName.Equals(e.user + "_robo")) { GameManager.Instance().ChangeScene(GameManager.PLACE.ROBO, gameObject, "InteractionEffect", false); } } else { if (m_isMe && m_userName.Equals(e.user + "_robo")) { m_curState = BitControl.Clear(m_curState, (int)HERO_STATE.CONTROL_GUN); GameManager.Instance().ChangeScene(GameManager.PLACE.ROBO_IN_GUN); GameManager.Instance().HeroSetup(this); } GameManager.Instance().ROBO.GUN_PLAYER = null; } } }
// 다른 사람 정보 void NetworkManager.NetworkMessageEventListenrer.ReceiveNetworkMessage( NetworkManager.MessageEvent e) { //연결된게 아닌 경우 / if (e.msgType != NetworkManager.USER_CONNECT) { // 다른사람이 내게 요청을 했다. 나의 정보를 if (e.msgType == NetworkManager.USER_INFO_REQ) { NetworkManager.Instance().SendOrderMessage( JSONMessageTool.ToJsonOrderUserEnter( GameManager.Instance().PLAYER.NETWORK_INDEX, GameManager.Instance().PLAYER.STATUS, GameManager.Instance().PLAYER.USER_NAME, GameManager.Instance().PLAYER.SKELETON_DATA_ASSET, m_readyButton.sprite.name == m_sprReady_setting.name)); } //유저가 나갔다 else if (e.msgType == NetworkManager.USER_LOGOUT) { // 로그아웃 GameObject user = m_playerList[(int)e.msg .GetField(NetworkManager.USER_LOGOUT) .GetField(NetworkManager.USER_LOGOUT).i - 2]; if (GetProfileWait(user) != null) { GetProfileWait(user).enabled = true; } GetProfileHide(user).enabled = true; GetProfileName(user).enabled = false; GetProfileImage(user).color = Color.black; SetPlayerStatus(user, 0, 0); SetPlayerStatus(user, 1, 0); SetPlayerStatus(user, 2, 0); // 레디 정보를 받아와야함 if (e.msg.GetField(NetworkManager.USER_LOGOUT) .GetField(NetworkManager.READY_STATE).b) { m_readyCount--; GetRush(m_playerList[(int)e.orders.GetField(NetworkManager.MSG) .GetField(NetworkManager.USER_LOGOUT) .GetField(NetworkManager.USER_INDEX).i - 2]).SetActive(false); } if (m_readyCount >= 3) { m_startButton.sprite = m_sprStart_setting; } else { m_startButton.sprite = m_sprStart_normal; } } else if (e.msgType == NetworkManager.USER_READY) { //레디 bool b = e.msg.GetField(NetworkManager.USER_READY) .GetField(NetworkManager.USER_READY).b; if (b) { GetRushName( m_playerList[(int)e.msg .GetField(NetworkManager.USER_READY) .GetField(NetworkManager.USER_INDEX).i - 2]) .text = e.targetName; GetRush(m_playerList[(int)e.msg .GetField(NetworkManager.USER_READY) .GetField(NetworkManager.USER_INDEX).i - 2]).SetActive(true); m_readyCount++; SoundManager.Instance().PlaySound(m_ready); } else { GetRush(m_playerList[(int)e.msg .GetField(NetworkManager.USER_READY).GetField(NetworkManager.USER_INDEX).i - 2]) .SetActive(false); m_readyCount--; } if (m_readyCount >= 3) { m_startButton.sprite = m_sprStart_setting; } else { m_startButton.sprite = m_sprStart_normal; } } else if (e.msgType == NetworkManager.GAME_START) { SoundManager.Instance().PlaySound(m_gameStart); // 여기서 게임 시작 처리 List <string> users = new List <string>(); for (int i = 0; i < m_playerList.Count; i++) { MDebug.Log(" " + i + " " + GetProfileName(m_playerList[i]).text); if (string.IsNullOrEmpty(GetProfileName(m_playerList[i]).text)) { continue; } users.Add(GetProfileName(m_playerList[i]).text); } GameManager.Instance().HudSetup(users); //NetworkManager.Instance().GameStartSetup(m_playerAssetList); NetworkManager.Instance().RemoveNetworkOrderMessageEventListener(this); PopupManager.Instance().ClosePopup(gameObject); } return; } //########################################################################################## //#### 다른 유저의 정보가 넘어왔으니 세팅 ################################################## int index = (int)e.msg .GetField(NetworkManager.USER_CONNECT).GetField(NetworkManager.USER_CONNECT).i; bool check = false; foreach (Test t in m_playerAssetList) { if (index == 1) { check = true; break; } if (t.networkIndex == index) { check = true; break; } } if (!check) { m_playerAssetList.Add(new Test(e.msg.GetField(NetworkManager.USER_CONNECT) .GetField(NetworkManager.USER_SKELETON_DATA_ASSET).str, e.orders.GetField(NetworkManager.MSG) .GetField(NetworkManager.USER_CONNECT).GetField(NetworkManager.CLIENT_ID).str, index)); } // 나자신을 세팅할 필요는 없음 if (index == GameManager.Instance().PLAYER.NETWORK_INDEX) { return; } if (index - 2 < 0) { return; } if (index - 2 == 0 && NetworkOrderController.OBSERVER_MODE) { GameManager.Instance().PLAYER.SKELETON_DATA_ASSET = e.msg.GetField(NetworkManager.USER_CONNECT) .GetField(NetworkManager.USER_SKELETON_DATA_ASSET).str; } GameObject player = m_playerList[index - 2]; if (player == null) { return; } // 이미 세팅되어있다면 패스 if (GetProfileName(player).text == e.msg .GetField(NetworkManager.USER_CONNECT).GetField(NetworkManager.CLIENT_ID).str) { return; } else { // 정보를 던져줘야함 NetworkManager.Instance().SendOrderMessage(JSONMessageTool.ToJsonOrderUserEnter( GameManager.Instance().PLAYER.NETWORK_INDEX, GameManager.Instance().PLAYER.STATUS, GameManager.Instance().PLAYER.USER_NAME, GameManager.Instance().PLAYER.SKELETON_DATA_ASSET, false)); } if (GetProfileWait(player) != null) { GetProfileWait(player).enabled = false; } GetProfileHide(player).enabled = false; GetProfileName(player).enabled = true; GetProfileImage(player).color = Color.white; GetProfileName(player).text = e.orders.GetField(NetworkManager.MSG) .GetField(NetworkManager.USER_CONNECT).GetField(NetworkManager.CLIENT_ID).str; SetPlayerStatus(player, 0, (int)e.msg.GetField(NetworkManager.USER_CONNECT).GetField(NetworkManager.STATUS_SPEED).i); SetPlayerStatus(player, 1, (int)e.msg.GetField(NetworkManager.USER_CONNECT).GetField(NetworkManager.STATUS_POWER).i); SetPlayerStatus(player, 2, (int)e.msg.GetField(NetworkManager.USER_CONNECT).GetField(NetworkManager.STATUS_REPAIR).i); try { GetRush(player).SetActive(e.orders.GetField(NetworkManager.MSG).GetField(NetworkManager.USER_CONNECT).GetField(NetworkManager.READY_STATE).b); GetRushName(player).text = e.orders.GetField(NetworkManager.MSG).GetField(NetworkManager.USER_CONNECT).GetField(NetworkManager.CLIENT_ID).str; }catch (Exception) { } }
public void ReceiveNetworkMessage(NetworkManager.MessageEvent e) { switch (e.msgType) { case NetworkManager.DAMAGE: { if (!e.targetName.Equals(m_bossName)) { return; } } break; case NetworkManager.HP_UPDATE: if (e.targetName.Equals(m_bossName)) { GameManager.Instance().SetCurrentEnemy(GetComponent <Monster>()); } break; case NetworkManager.AI_ANI_NAME: { if (e.targetName.Equals(m_bossName)) { switch (e.msg.GetField(NetworkManager.AI_PATTERN_NAME).str) { //A 패턴과 B패턴은 단순 이동 / 공격 애니메이션 처리만 함 case "A": case "B": case "D": m_skeletonAnimation.state.SetAnimation(0, e.msg.GetField(NetworkManager.AI_ANI_NAME).str, e.msg.GetField(NetworkManager.AI_ANI_LOOP).b); break; case "C": m_skeletonAnimation.state.SetAnimation(2, e.msg.GetField(NetworkManager.AI_ANI_NAME)[0].str, false); for (int i = 1; i < e.msg.GetField(NetworkManager.AI_ANI_NAME).Count; i++) { m_skeletonAnimation.state.AddAnimation(2, e.msg.GetField(NetworkManager.AI_ANI_NAME)[i].str, false, 0.0f); } AudioSource source = GetComponent <AudioSource>(); if (source != null && !source.isPlaying) { source.Play(); } break; } m_curPattern = e.msg.GetField(NetworkManager.AI_PATTERN_NAME).str; } } break; case NetworkManager.AI_PATTERN_EXIT: { if (e.targetName.Equals(m_bossName)) { switch (e.msg.GetField(NetworkManager.AI_PATTERN_NAME).str) { case "C": m_boss.m_laser.SetInteger("laser", 1); m_boss.m_laser.Play("Wait"); m_boss.m_laser.gameObject.SetActive(false); m_skeletonAnimation.state.ClearTrack(2); break; } } break; } } }
//ORDER 타겟 변경 // msg orderName 이름 / orderTarget 어떤 내용의 오더를 내리는지 // 우주 / 로봇안 / 행성 - space - robot - planet z값 0 / 1 / 2로 구별 // TODO // ORDER void NetworkManager.NetworkMessageEventListenrer.ReceiveNetworkMessage(NetworkManager.MessageEvent e) { switch (e.msgType) { case NetworkManager.PLACE_CHANGE: GameManager.Instance().CUR_PLACE = (GameManager.ROBO_PLACE)((int)e.msg.GetField(NetworkManager.PLACE_CHANGE).i); break; case NetworkManager.CREATE: // 생성해라 switch (e.msg .GetField(NetworkManager.CREATE) .GetField(NetworkManager.CREATE_TARGET).str) { case "effect": { if (e.user.Equals(GameManager.Instance().PLAYER.USER_NAME)) { return; } JSONObject json = e.msg; GameObject effect = MapManager.Instance().AddObject( GamePath.EFFECT, new Vector3(json.GetField("X").f, json.GetField("Y").f, -1.0f)); } break; case "DamagePoint": if (e.targetName.IndexOf(GameManager.Instance().PLAYER.USER_NAME) >= 0) { return; } JSONObject dpJson = e.msg; GameObject dp = MapManager.Instance().AddObject( GamePath.DAMAGE_POINT, new Vector3( dpJson.GetField("X").f, dpJson.GetField("Y").f, -1.0f)); RoboDamagePoint dps = dp.GetComponent <RoboDamagePoint>(); dps.name = e.targetName; dps.NETWORK_OBJECT = true; break; case "boss1_bullet": { if (e.targetName.IndexOf(GameManager.Instance().PLAYER.USER_NAME) >= 0) { return; } Bullet bullet = BulletManager.Instance().AddBullet(BulletManager.BULLET_TYPE.B_BOSS1_P1); // MDebug.Log("Target " + e.targetName); bullet.SetupBullet(e.targetName, true, Vector3.zero); JSONObject json = e.msg; Vector3 pos = new Vector3(json.GetField("X").f, json.GetField("Y").f, -1.0f); //bullet.GetComponent<SpriteRenderer>().flipX = e.orders.GetField(NetworkManager.MSG).GetField(NetworkManager.DIR).b; bullet.transform.position = new Vector3(pos.x, pos.y); } break; case "myTeam_bullet": { if (e.targetName.IndexOf(GameManager.Instance().PLAYER.USER_NAME) >= 0) { return; } Bullet bullet = BulletManager.Instance().AddBullet(BulletManager.BULLET_TYPE.B_HERO_DEF); // MDebug.Log("Target " + e.targetName); bullet.SetupBullet(e.targetName, true, Vector3.zero); JSONObject json = e.msg; Vector3 pos = new Vector3(json.GetField("X").f, json.GetField("Y").f, -1.0f); //bullet.GetComponent<SpriteRenderer>().flipX = e.orders.GetField(NetworkManager.MSG).GetField(NetworkManager.DIR).b; bullet.transform.position = new Vector3(pos.x, pos.y); //총알을 생성하고 좌표 및 로테이션 처리를 해주고 업데이트는 Recvieve 에서 } break; case "boss1": { CreateBOSS(1, e.user, e.targetName, e.msg.GetField("X").f, e.msg.GetField("Y").f); } break; case "boss2": { CreateBOSS(2, e.user, e.targetName, e.msg.GetField("X").f, e.msg.GetField("Y").f); } break; case "monster1": { CreateMonster(e.user, GamePath.MONSTER1, e.targetName, e.msg.GetField("X").f, e.msg.GetField("Y").f); } break; case "monster2": { CreateMonster(e.user, GamePath.MONSTER2, e.targetName, e.msg.GetField("X").f, e.msg.GetField("Y").f); } break; case "SpaceMonster1": { CreateMonster(e.user, GamePath.SPACE_MONSTER1, e.targetName, e.msg.GetField("X").f, e.msg.GetField("Y").f); } break; case "SpaceMonster2": { CreateMonster(e.user, GamePath.SPACE_MONSTER2, e.targetName, e.msg.GetField("X").f, e.msg.GetField("Y").f); } break; case "InsidePentrationMonster": { CreateInsideMonster(e.user, e.targetName, e.msg.GetField("X").f, e.msg.GetField("Y").f); } break; case "PentrationMonsterSpace": { CreatePentrationMonster(e.user, e.targetName, e.msg.GetField("X").f, e.msg.GetField("Y").f); } break; case "PlanetMonster1": { CreatePlanetMonster(e.user, GamePath.PLANET_MONSTER1, e.targetName, e.msg.GetField("X").f, e.msg.GetField("Y").f); } break; case "PlanetMonster2": { CreatePlanetMonster(e.user, GamePath.PLANET_MONSTER2, e.targetName, e.msg.GetField("X").f, e.msg.GetField("Y").f); } break; case "PlanetMonster3": { CreatePlanetMonster(e.user, GamePath.PLANET_MONSTER3, e.targetName, e.msg.GetField("X").f, e.msg.GetField("Y").f); } break; } break; case NetworkManager.CH_ORIGINUSER: // 조작자를 바꿔라 ORDER_NAME = e.msg.GetField(NetworkManager.ORDER).GetField(NetworkManager.ORDER).str; ORDER_SPACE = (short)e.msg.GetField(NetworkManager.ORDER).GetField("order_space").i; if (ORDER_NAME == GameManager.Instance().PLAYER.USER_NAME&& ORDER_SPACE == 0) { } else { } break; case NetworkManager.CH_ORIGINUSER_REQ: //호스트 요청이 왔으므로 호스트를 쏜다 if (ORDER_NAME == GameManager.Instance().PLAYER.USER_NAME) { NetworkManager.Instance().SendOrderMessage(JSONMessageTool.ToJsonOrderChange(ORDER_NAME, 0)); } break; case NetworkManager.REMOVE: // 지워라 string removeTarget = e.targetName; if (e.user == GameManager.Instance().PLAYER.USER_NAME) { return; } switch (e.msg.GetField(NetworkManager.REMOVE).str) { case "myTeam_bullet": BulletManager.Instance().RemoveBullet(removeTarget, Bullet.BULLET_TARGET.PLAYER); break; case "boss1_bullet": BulletManager.Instance().RemoveBullet(removeTarget, Bullet.BULLET_TARGET.ENEMY); break; case "Monster": MapManager.Instance().RemoveObjectName(removeTarget); break; } break; case NetworkManager.USER_LOGOUT: NetworkManager.Instance().LogOutUser(e.user); break; case NetworkManager.ROBOT_DRIVER: // 로봇 조종자 if (e.msg.GetField(NetworkManager.ROBOT_DRIVER).b) { GameManager.Instance().ROBO.MOVE_PLYAER = e.user; } else { GameManager.Instance().ROBO.MOVE_PLYAER = null; } //GameManager.Instance().ROBO.name = e.user + "_robot"; break; case NetworkManager.ROBOT_GUNNER: // 로봇 총 쏘는사람 if (e.msg.GetField(NetworkManager.ROBOT_GUNNER).b) { GameManager.Instance().ROBO.GUN_PLAYER = e.user; } else { GameManager.Instance().ROBO.GUN_PLAYER = null; } break; case NetworkManager.GAME_START: break; case NetworkManager.USER_CHARACTER_CREATE: if (e.user.Equals(GameManager.Instance().PLAYER.USER_NAME)) { return; } NetworkManager.Instance().CreateUserCharacter( e.user, e.msg.GetField(NetworkManager.USER_CHARACTER_CREATE).str); break; } }