public override float GetUtility(Character enemyCharacter, AICharacter ai) { if (AIMelee.IsEndState(ai.parent.state)) { return(0.0f); } switch (ai.parent.state) { case Character.State.Attack: return(0.0f); } if (enemyCharacter == null) { return(0.1f); } if (ai.parent.NextAttackOn() == true) { return(0.0f); } if (MagiUtil.IsInRange(enemyCharacter.transform.position - ai.parent.transform.position, ai.parent.keepDistance + enemyCharacter.radius) == false) { return(0.0f); } return(0.1f); }
public override void Process(AICharacter ai) { if (ai.parent.GetCountAttackComboID() != 0) { end = true; return; } if (AIMelee.IsEndState(ai.parent.state)) { end = true; return; } Character enemyPresent = ai.parent.EnemyPresent; if (enemyPresent == null) { end = true; return; } if (Time.time - checkTime_ > 2.0f) { checkTime_ = Time.time; float fLength = (lastChasePos_ - ai.parent.transform.position).magnitude; if (fLength < 1.0f) { end = true; return; } lastChasePos_ = ai.parent.transform.position; } if (MagiUtil.IsInRange(enemyPresent.transform.position - ai.parent.transform.position, ai.parent.keepDistance + enemyPresent.radius)) { end = true; return; } if (MagiUtil.IsInRange(enemyPresent.transform.position - ai.parent.transform.position, ai.parent.AttackRange)) { end = true; return; } if (MagiUtil.IsInRange(enemyPresent.transform.position - ai.parent.transform.position, ai.ChaseRange) == false) { end = true; return; } }
/// <summary> /// <para>name : GetMessage</para> /// <para>parameter : string</para> /// <para>return : void</para> /// <para>describe : Get (string)parameter and parsing it.</para> /// </summary> void GetMessage(string message) { Hashtable resultHash; string[] personArray = MagiUtil.GetTcpMessage(message); for (int i = 0; i < personArray.Length; i++) { if (CheckMessage(personArray[i], out resultHash)) { ShowMessage(resultHash); } } }
public override float GetUtility(Character enemyCharacter, AICharacter ai) { if (AIMelee.IsEndState(ai.parent.state)) { return(0.0f); } if (enemyCharacter == null) { return(0.0f); } if (MagiUtil.IsInRange(enemyCharacter.transform.position - ai.parent.transform.position, ai.parent.keepDistance + enemyCharacter.radius)) { return(0.0f); } if (MagiUtil.IsInRange(enemyCharacter.transform.position - ai.parent.transform.position, ai.ChaseRange)) { return(0.6f); } return(0.0f); }
/// <summary> /// <para>name : ShowMessage</para> /// <para>parameter : Hashtable</para> /// <para>return : void</para> /// <para>describe : Parsing (Hashtable)parameter and show message.</para> /// </summary> void ShowMessage(Hashtable resultHash) { int pno = 0; if (resultHash.ContainsKey("pno")) { int.TryParse(resultHash["pno"].ToString(), out pno); } SendMessageType messageType = (SendMessageType)pno; switch (messageType) { case SendMessageType.Type_UserConnect: case SendMessageType.Type_ChangeChannel: { if (resultHash.ContainsKey("roomNo")) { int.TryParse(resultHash["roomNo"].ToString(), out channel); switch (ClientDataManager.Instance.SelectSceneMode) { case ClientDataManager.SceneMode.Lobby: if (LobbySceneScriptManager.Instance == null) { break; } if (LobbySceneScriptManager.Instance.m_ChatEvent != null) { LobbySceneScriptManager.Instance.m_ChatEvent.ChangeChannel(channel); } break; case ClientDataManager.SceneMode.Dungeon: if (DungeonSceneScriptManager.Instance == null) { break; } if (DungeonSceneScriptManager.Instance.m_ChatEvent != null) { DungeonSceneScriptManager.Instance.m_ChatEvent.ChangeChannel(channel); } break; } } } break; case SendMessageType.Type_GetMessage: { string szMessage = ""; string nickName = ""; if (resultHash.ContainsKey("Msg")) { szMessage = resultHash["Msg"].ToString(); } if (resultHash.ContainsKey("Nickname")) { nickName = resultHash["Nickname"].ToString(); } UIMessage uiMessage = new UIMessage(); uiMessage.type = messageType; uiMessage.message = MagiStringUtil.GetReplaceString(nickName.Equals(ClientDataManager.Instance.OwnName) ? 10005006 : 10005007, "#@Name@#", nickName, "#@Message@#", MagiUtil.MessageCutByte(szMessage, 80)); switch (ClientDataManager.Instance.SelectSceneMode) { case ClientDataManager.SceneMode.Lobby: if (LobbySceneScriptManager.Instance == null) { break; } if (LobbySceneScriptManager.Instance.m_ChatEvent != null) { LobbySceneScriptManager.Instance.m_ChatEvent.AddUserMessage(uiMessage); } else { AddMessage(uiMessage); } if (LobbySceneScriptManager.Instance.m_LobbyEvent != null && LobbySceneScriptManager.Instance.m_LobbyEvent.GetLobbyMenuFrame != null) { uiMessage.message = MagiStringUtil.GetReplaceString(nickName.Equals(ClientDataManager.Instance.OwnName) ? 10005006 : 10005007, "#@Name@#", nickName, "#@Message@#", MagiUtil.MessageCutByte(szMessage, 35)); LobbySceneScriptManager.Instance.m_LobbyEvent.GetLobbyMenuFrame.UpdateLobbyChat(uiMessage); } break; case ClientDataManager.SceneMode.Dungeon: if (DungeonSceneScriptManager.Instance == null) { break; } if (DungeonSceneScriptManager.Instance.m_ChatEvent != null) { DungeonSceneScriptManager.Instance.m_ChatEvent.AddUserMessage(uiMessage); } else { AddMessage(uiMessage); } if (DungeonSceneScriptManager.Instance.m_DungeonPlayEvent != null) { uiMessage.message = MagiStringUtil.GetReplaceString(nickName.Equals(ClientDataManager.Instance.OwnName) ? 10005006 : 10005007, "#@Name@#", nickName, "#@Message@#", MagiUtil.MessageCutByte(szMessage, 25)); DungeonSceneScriptManager.Instance.m_DungeonPlayEvent.UpdateInGameChat(uiMessage); } break; default: AddMessage(uiMessage); break; } } break; case SendMessageType.Type_GetItemMessage: { int from = 0; int what = 0; string nickName = ""; if (resultHash.ContainsKey("From")) { int.TryParse(resultHash["From"].ToString(), out from); } if (resultHash.ContainsKey("What")) { int.TryParse(resultHash["What"].ToString(), out what); } if (resultHash.ContainsKey("Nickname")) { nickName = resultHash["Nickname"].ToString(); } UIMessage uiMessage = new UIMessage(); uiMessage.type = messageType; uiMessage.message = MagiStringUtil.GetReplaceString(10005010, "#@Name@#", nickName, "#@Where@#", GetFromTypeText(from), "#@ItemName@#", GetItemNameText(what)); switch (ClientDataManager.Instance.SelectSceneMode) { case ClientDataManager.SceneMode.Lobby: if (LobbySceneScriptManager.Instance == null) { break; } if (LobbySceneScriptManager.Instance.m_ChatEvent != null) { LobbySceneScriptManager.Instance.m_ChatEvent.AddMessage(uiMessage); } else { AddMessage(uiMessage); } break; case ClientDataManager.SceneMode.Dungeon: if (DungeonSceneScriptManager.Instance == null) { break; } if (DungeonSceneScriptManager.Instance.m_ChatEvent != null) { DungeonSceneScriptManager.Instance.m_ChatEvent.AddMessage(uiMessage); } else { AddMessage(uiMessage); } break; default: AddMessage(uiMessage); break; } } break; case SendMessageType.Type_GetNoticeMessage: { string szMessage = ""; if (resultHash.ContainsKey("Msg")) { szMessage = resultHash["Msg"].ToString(); } UIMessage uiMessage = new UIMessage(); uiMessage.type = messageType; uiMessage.message = MagiStringUtil.GetReplaceString(10005009, "#@Message@#", MagiUtil.MessageCutByte(szMessage, 80)); switch (ClientDataManager.Instance.SelectSceneMode) { case ClientDataManager.SceneMode.Lobby: if (LobbySceneScriptManager.Instance == null) { break; } if (LobbySceneScriptManager.Instance.m_ChatEvent != null) { LobbySceneScriptManager.Instance.m_ChatEvent.AddUserMessage(uiMessage); } else { AddMessage(uiMessage); } if (LobbySceneScriptManager.Instance.m_LobbyEvent != null && LobbySceneScriptManager.Instance.m_LobbyEvent.GetLobbyMenuFrame != null) { uiMessage.message = MagiStringUtil.GetReplaceString(10005009, "#@Message@#", MagiUtil.MessageCutByte(szMessage, 35)); LobbySceneScriptManager.Instance.m_LobbyEvent.GetLobbyMenuFrame.UpdateLobbyChat(uiMessage); } break; case ClientDataManager.SceneMode.Dungeon: if (DungeonSceneScriptManager.Instance == null) { break; } if (DungeonSceneScriptManager.Instance.m_ChatEvent != null) { DungeonSceneScriptManager.Instance.m_ChatEvent.AddUserMessage(uiMessage); } else { AddMessage(uiMessage); } if (DungeonSceneScriptManager.Instance.m_DungeonPlayEvent != null) { uiMessage.message = MagiStringUtil.GetReplaceString(10005009, "#@Message@#", MagiUtil.MessageCutByte(szMessage, 25)); DungeonSceneScriptManager.Instance.m_DungeonPlayEvent.UpdateInGameChat(uiMessage); } break; default: AddMessage(uiMessage); break; } } break; } }