feat(battle-engine): close the AI-simulation subsystem (verbatim)
Copied the 89 uncopied AI*SimulationUtility/extension files defining the AIVirtualCard/AIVirtualField extension methods; the compile loop then auto-closed the revealed type deps (~3049 files total, drift-clean). 10.0k -> 62 errors.
This commit is contained in:
298
SVSim.BattleEngine/Engine/Wizard/GatheringChat.cs
Normal file
298
SVSim.BattleEngine/Engine/Wizard/GatheringChat.cs
Normal file
@@ -0,0 +1,298 @@
|
||||
using System.Collections.Generic;
|
||||
using Cute;
|
||||
using UnityEngine;
|
||||
using Wizard.RoomMatch;
|
||||
|
||||
namespace Wizard;
|
||||
|
||||
public class GatheringChat : MonoBehaviour
|
||||
{
|
||||
[SerializeField]
|
||||
private GameObject _rootObj;
|
||||
|
||||
[SerializeField]
|
||||
private Chat _chatPrefab;
|
||||
|
||||
private Chat _chat;
|
||||
|
||||
[SerializeField]
|
||||
private GatheringChatSettings _chatSettings;
|
||||
|
||||
[SerializeField]
|
||||
private GatheringChatDeckList _gatheringDeckListUI;
|
||||
|
||||
[SerializeField]
|
||||
private GatheringChatAutoJoinRoomMatch _autoJoinRoomMatchUI;
|
||||
|
||||
[SerializeField]
|
||||
private ChatSendDeckUI _sendDeckUI;
|
||||
|
||||
[SerializeField]
|
||||
private ChatSendReplayUI _sendReplayUI;
|
||||
|
||||
[SerializeField]
|
||||
private GatheringChatSendRoomMatchUI _sendRoomMatchUI;
|
||||
|
||||
[SerializeField]
|
||||
private ChatShareDeckUI _shareDeckUI;
|
||||
|
||||
[SerializeField]
|
||||
private GatheringChatInterruptOrLeave _interruptOrLeaveUI;
|
||||
|
||||
[SerializeField]
|
||||
private NotificatonAnimation _notificationAnimationPrefab;
|
||||
|
||||
[SerializeField]
|
||||
private GameObject _notificationParent;
|
||||
|
||||
private DialogBase _confirmStateChangeDialog;
|
||||
|
||||
public void OpenCategory()
|
||||
{
|
||||
ClearActionUI();
|
||||
List<IChatActionUI> chatActionUIList = new List<IChatActionUI> { _gatheringDeckListUI, _autoJoinRoomMatchUI, _sendDeckUI, _sendReplayUI, _sendRoomMatchUI, _shareDeckUI, _interruptOrLeaveUI };
|
||||
GatheringGetSelfInfoTask task = new GatheringGetSelfInfoTask(isDependGatheringInfo: true);
|
||||
UIManager.GetInstance().StartCoroutine(Toolbox.NetworkManager.Connect(task, delegate
|
||||
{
|
||||
_chatSettings.SetGatheringInfo(task.Info, task.EntrySetting);
|
||||
_chat = NGUITools.AddChild(_rootObj, _chatPrefab.gameObject).GetComponent<Chat>();
|
||||
_chat.OnAddNewChatMessage = OnAddNewChatMessage;
|
||||
_chat.OnMissionCleared = ShowMissionClearedNotifications;
|
||||
_chat.gameObject.transform.localPosition = new Vector3(2000f, 0f, 0f);
|
||||
_chat.Init(_chatSettings, chatActionUIList, task.ChatStampList, NetworkDefine.MAINTENANCE_TYPE.CHAT_GATHERING, delegate(ChatInfo chatInfo)
|
||||
{
|
||||
ChangeActionUI(_chatSettings.GatheringInfo, chatInfo);
|
||||
_chat.gameObject.transform.localPosition = Vector3.zero;
|
||||
bool b = _chatSettings.GatheringInfo.Rule.BattleParameterInstance.DeckFormat == Format.Avatar;
|
||||
UIManager.SetObjectToGrey(_shareDeckUI.gameObject, b);
|
||||
UIManager.SetObjectToGrey(_sendDeckUI.gameObject, b);
|
||||
});
|
||||
}));
|
||||
}
|
||||
|
||||
public void ReadyCloseCategory()
|
||||
{
|
||||
_chat.ReadyClose();
|
||||
}
|
||||
|
||||
public void CloseCategory()
|
||||
{
|
||||
_chat.ExecuteClose();
|
||||
}
|
||||
|
||||
private void ChangeActionUI(GatheringInfo gatheringInfo, ChatInfo chatInfo)
|
||||
{
|
||||
ClearActionUI();
|
||||
bool canBattleJoin = gatheringInfo.CanBattleJoin;
|
||||
switch (gatheringInfo.State)
|
||||
{
|
||||
case GatheringInfo.eState.BEFORE_BATTLE:
|
||||
_gatheringDeckListUI.gameObject.SetActive(canBattleJoin);
|
||||
break;
|
||||
case GatheringInfo.eState.ACTIVE_BATTLE:
|
||||
_gatheringDeckListUI.gameObject.SetActive(canBattleJoin);
|
||||
if (!gatheringInfo.Rule.IsTournament)
|
||||
{
|
||||
_sendRoomMatchUI.gameObject.SetActive(canBattleJoin);
|
||||
}
|
||||
UpdateActiveAutoJoinRoomMatchUI(chatInfo);
|
||||
break;
|
||||
case GatheringInfo.eState.AFTER_BATTLE:
|
||||
_sendDeckUI.gameObject.SetActive(value: true);
|
||||
_sendReplayUI.gameObject.SetActive(value: true);
|
||||
_shareDeckUI.gameObject.SetActive(value: true);
|
||||
_interruptOrLeaveUI.gameObject.SetActive(value: true);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
private void ClearActionUI()
|
||||
{
|
||||
_gatheringDeckListUI.gameObject.SetActive(value: false);
|
||||
_autoJoinRoomMatchUI.gameObject.SetActive(value: false);
|
||||
_sendRoomMatchUI.gameObject.SetActive(value: false);
|
||||
_sendDeckUI.gameObject.SetActive(value: false);
|
||||
_sendReplayUI.gameObject.SetActive(value: false);
|
||||
_shareDeckUI.gameObject.SetActive(value: false);
|
||||
_interruptOrLeaveUI.gameObject.SetActive(value: false);
|
||||
}
|
||||
|
||||
private void OnAddNewChatMessage(ChatInfo chatInfo)
|
||||
{
|
||||
UpdateActiveAutoJoinRoomMatchUI(chatInfo);
|
||||
UpdateStateByChatMessage(chatInfo.MessageList);
|
||||
}
|
||||
|
||||
private void UpdateActiveAutoJoinRoomMatchUI(ChatInfo chatInfo)
|
||||
{
|
||||
if (_chatSettings.GatheringInfo.State != GatheringInfo.eState.ACTIVE_BATTLE)
|
||||
{
|
||||
_autoJoinRoomMatchUI.gameObject.SetActive(value: false);
|
||||
return;
|
||||
}
|
||||
if (!_chatSettings.GatheringInfo.CanBattleJoin)
|
||||
{
|
||||
_autoJoinRoomMatchUI.gameObject.SetActive(value: false);
|
||||
return;
|
||||
}
|
||||
_autoJoinRoomMatchUI.gameObject.SetActive(value: true);
|
||||
if (_chatSettings.GatheringInfo.Rule.Type == GatheringRule.eType.TOURNAMENT)
|
||||
{
|
||||
_autoJoinRoomMatchUI.SetViewTournamentRoomMatch(chatInfo.GatheringMatchedRoom);
|
||||
}
|
||||
}
|
||||
|
||||
private void UpdateStateByChatMessage(List<ChatMessageInfo> chatMessageList)
|
||||
{
|
||||
GatheringInfo.eState state = _chatSettings.GatheringInfo.State;
|
||||
GatheringInfo.eState eState = state;
|
||||
if (state == GatheringInfo.eState.AFTER_BATTLE)
|
||||
{
|
||||
return;
|
||||
}
|
||||
using (List<ChatMessageInfo>.Enumerator enumerator = chatMessageList.GetEnumerator())
|
||||
{
|
||||
while (enumerator.MoveNext())
|
||||
{
|
||||
switch (enumerator.Current.MessageType)
|
||||
{
|
||||
case ChatMessageInfo.eMessageType.GATHERING_BATTLE_END:
|
||||
eState = GatheringInfo.eState.AFTER_BATTLE;
|
||||
goto end_IL_003e;
|
||||
case ChatMessageInfo.eMessageType.GATHERING_BATTLE_START:
|
||||
eState = GatheringInfo.eState.ACTIVE_BATTLE;
|
||||
break;
|
||||
}
|
||||
continue;
|
||||
end_IL_003e:
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (eState != state)
|
||||
{
|
||||
CreateConfirmStateChangeDialog(eState);
|
||||
}
|
||||
}
|
||||
|
||||
private void ChangeViewSceneGoToGatheringActionMenu()
|
||||
{
|
||||
UIManager.ChangeViewSceneParam changeViewSceneParam = new UIManager.ChangeViewSceneParam();
|
||||
changeViewSceneParam.MyPageMenuIndex = 3;
|
||||
changeViewSceneParam.OnFinishChangeView = delegate
|
||||
{
|
||||
MyPageMenu.Instance.GoToGatheringActionMenu();
|
||||
};
|
||||
UIManager.GetInstance().ChangeViewScene(UIManager.ViewScene.MyPage, changeViewSceneParam);
|
||||
}
|
||||
|
||||
private void CreateConfirmStateChangeDialog(GatheringInfo.eState state)
|
||||
{
|
||||
if (state != GatheringInfo.eState.BEFORE_BATTLE)
|
||||
{
|
||||
if (_confirmStateChangeDialog != null)
|
||||
{
|
||||
_confirmStateChangeDialog.OnCloseStart = null;
|
||||
_confirmStateChangeDialog.Close();
|
||||
}
|
||||
_confirmStateChangeDialog = UIManager.GetInstance().CreateDialogClose();
|
||||
string text = string.Empty;
|
||||
switch (state)
|
||||
{
|
||||
case GatheringInfo.eState.ACTIVE_BATTLE:
|
||||
text = Data.SystemText.Get("Gathering_Chat_0009");
|
||||
break;
|
||||
case GatheringInfo.eState.AFTER_BATTLE:
|
||||
text = Data.SystemText.Get("Gathering_Chat_0010");
|
||||
break;
|
||||
}
|
||||
_confirmStateChangeDialog.SetText(text);
|
||||
_confirmStateChangeDialog.SetButtonLayout(DialogBase.ButtonLayout.OkBtn);
|
||||
_confirmStateChangeDialog.OnCloseStart = delegate
|
||||
{
|
||||
GameMgr.GetIns().GetSoundMgr().PlaySe(Se.TYPE.SYS_BTN_CANCEL_TRANS);
|
||||
ChangeViewSceneGoToGatheringActionMenu();
|
||||
UIManager.GetInstance().dialogAllClear();
|
||||
};
|
||||
_confirmStateChangeDialog.SetPanelDepth(4000);
|
||||
}
|
||||
}
|
||||
|
||||
public static bool IsMaintenance(List<NetworkDefine.MAINTENANCE_TYPE> maintenanceCodeList, GatheringRule rule)
|
||||
{
|
||||
if (maintenanceCodeList.Contains(NetworkDefine.MAINTENANCE_TYPE.ROOM_ALL_MAINTENANCE) || maintenanceCodeList.Contains(NetworkDefine.MAINTENANCE_TYPE.ROOM_BATTLE_MAINTENANCE))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
switch (rule.BattleParameterInstance.DeckFormat)
|
||||
{
|
||||
case Format.Rotation:
|
||||
if (maintenanceCodeList.Contains(NetworkDefine.MAINTENANCE_TYPE.ROOM_ROTATION))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
break;
|
||||
case Format.Unlimited:
|
||||
if (maintenanceCodeList.Contains(NetworkDefine.MAINTENANCE_TYPE.ROOM_UNLIMITED))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
break;
|
||||
case Format.PreRotation:
|
||||
if (maintenanceCodeList.Contains(NetworkDefine.MAINTENANCE_TYPE.ROOM_PRE_ROTATION))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
break;
|
||||
}
|
||||
switch (rule.BattleParameterInstance.Rule)
|
||||
{
|
||||
case RoomConnectController.BattleRule.Bo1:
|
||||
if (maintenanceCodeList.Contains(NetworkDefine.MAINTENANCE_TYPE.ROOM_RULE_BO1))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
break;
|
||||
case RoomConnectController.BattleRule.Bo3:
|
||||
if (maintenanceCodeList.Contains(NetworkDefine.MAINTENANCE_TYPE.ROOM_RULE_BO3))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
break;
|
||||
case RoomConnectController.BattleRule.Bo5:
|
||||
if (maintenanceCodeList.Contains(NetworkDefine.MAINTENANCE_TYPE.ROOM_RULE_BO5))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
break;
|
||||
case RoomConnectController.BattleRule.Bo3Ban:
|
||||
if (maintenanceCodeList.Contains(NetworkDefine.MAINTENANCE_TYPE.ROOM_RULE_BO3_BAN1))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
break;
|
||||
case RoomConnectController.BattleRule.Bo5Ban:
|
||||
if (maintenanceCodeList.Contains(NetworkDefine.MAINTENANCE_TYPE.ROOM_RULE_BO5_BAN1))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
break;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public static void ResetLatestReadChatMessageId()
|
||||
{
|
||||
PlayerPrefsWrapper.SetValue(PlayerPrefsWrapper.READ_LATEST_GATHERING_CHAT_MESSAGE_ID, -1);
|
||||
}
|
||||
|
||||
private void ShowMissionClearedNotifications(List<string> messages)
|
||||
{
|
||||
List<NotificatonAnimation.Param> list = new List<NotificatonAnimation.Param>();
|
||||
for (int i = 0; i < messages.Count; i++)
|
||||
{
|
||||
list.Add(new NotificatonAnimation.Param(NotificatonAnimation.Param.Type.MissionCleared, messages[i]));
|
||||
}
|
||||
NotificatonAnimation component = NGUITools.AddChild(_notificationParent, _notificationAnimationPrefab.gameObject).GetComponent<NotificatonAnimation>();
|
||||
StartCoroutine(component.Exec(list));
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user