260 lines
11 KiB
C#
260 lines
11 KiB
C#
using cfg.CharacterCfg;
|
|
using Cysharp.Threading.Tasks;
|
|
using Framework;
|
|
using Gameplay;
|
|
using Gameplay.Area;
|
|
using Gameplay.Guide;
|
|
using Gameplay.Level;
|
|
using Gameplay.Level.FightInfo;
|
|
using PhxhSDK;
|
|
using UnityEngine;
|
|
using Constants = Framework.Constants;
|
|
|
|
public partial class TeamManager
|
|
{
|
|
private UIWindow _curFightPosterUI;
|
|
public async void OpenFightPosterUI(uint uid = 0)
|
|
{
|
|
// if (GetSingleCharacByUid(uid).Type != SingleTeamCharacterInfo.CharacType.Hero)
|
|
// {
|
|
// return;
|
|
// }
|
|
|
|
if (_curFightPosterUI == null)
|
|
{
|
|
// if(uid != 0)
|
|
// _curFightPosterUI = await UIPosterAndSkillInfoController.Open(uid);
|
|
// else
|
|
// _curFightPosterUI = await UIPosterAndSkillInfoController.Open();
|
|
// return;
|
|
if(uid != 0)
|
|
LevelManager.Instance.SkillInfoOpen(uid);
|
|
else
|
|
LevelManager.Instance.SkillInfoOpen(0);
|
|
}
|
|
|
|
}
|
|
|
|
public void CloseFightPosterUI(bool isRelease = false)
|
|
{
|
|
// if (isRelease)
|
|
// {
|
|
// UIManager.Instance.CloseWindow(UINameConst.UIFightPoster);
|
|
// return;
|
|
// }
|
|
// if (_curFightPosterUI != null)
|
|
// {
|
|
// _curFightPosterUI.HideWindow();
|
|
// }
|
|
LevelManager.Instance.SkillInfoClose(isRelease);
|
|
|
|
//_curFightPosterUI = null;
|
|
}
|
|
|
|
#region Load
|
|
|
|
/// <summary>
|
|
/// 初始化战斗内UI
|
|
/// </summary>
|
|
public async UniTask TeamUIInit()
|
|
{
|
|
await _Init();
|
|
//InputManager.Instance.OnFingerUp += _OnFingerUp;
|
|
|
|
var window = await UIManager.Instance.LoadWindow(UINameConst.UIFightScene);
|
|
UIManager.Instance.PushWindow(window);
|
|
window = await UIManager.Instance.LoadWindow(UINameConst.UIFightTarget);
|
|
UIManager.Instance.PushWindow(window);
|
|
window = await UIManager.Instance.LoadWindow(UINameConst.UI_StartBtn_CMSBtn);
|
|
UIManager.Instance.PushWindow(window);
|
|
window = await UIManager.Instance.LoadWindow(UINameConst.UITeamFight);
|
|
UIManager.Instance.PushWindow(window);
|
|
window = await UIManager.Instance.LoadWindow(UINameConst.UIFightClock);
|
|
UIManager.Instance.PushWindow(window);
|
|
|
|
var battleTeamWindow = await UIFightTeamController.Open();
|
|
battleTeamWindow.HideWindow();
|
|
FightTeamManager.SetFightTeamWindow(battleTeamWindow);
|
|
|
|
FightInfoManager.CreateFightInfoWindow();
|
|
|
|
// window = await UIManager.Instance.LoadWindow(UINameConst.UISKillPut);
|
|
// UIManager.Instance.PushWindow(window);
|
|
var skillWindow = await UISkillPutController.Open();
|
|
skillWindow.HideWindow();
|
|
FightSkillPutManager.Instance.SetSKillPutWindow(skillWindow);
|
|
|
|
var storyWindow = await UIStoryFightMainController.Open();
|
|
if (storyWindow != null)
|
|
{
|
|
storyWindow.HideWindow();
|
|
}
|
|
|
|
AssetManager.Instance.PostPreload(string.Format(UIManager.UI_PREFAB_PATH, UINameConst.UICharacterStateBar));
|
|
AssetManager.Instance.PostPreload(string.Format(UIManager.UI_PREFAB_PATH, UINameConst.UIVehicleStateBar));
|
|
AssetManager.Instance.PostPreload(string.Format(UIManager.UI_PREFAB_PATH, UINameConst.UIEnemyStateBar));
|
|
AssetManager.Instance.PostPreload(string.Format(UIManager.UI_PREFAB_PATH, UINameConst.UICharacterDamage));
|
|
|
|
//预加载士气值图片
|
|
AssetManager.Instance.PostPreload<Sprite>(LevelUIManager.GetMoralePic(true));
|
|
AssetManager.Instance.PostPreload<Sprite>(LevelUIManager.GetMoralePic(false));
|
|
//预加载数字图片
|
|
for (int i = 0; i < 10; i++)
|
|
{
|
|
AssetManager.Instance.PostPreload<Sprite>(LevelUIManager.GetNumberImage(i));
|
|
}
|
|
for (int i = 0; i < 7; i++)
|
|
{
|
|
AssetManager.Instance.PostPreload<Sprite>(LevelUIManager.GetNumberImgPath(i));
|
|
}
|
|
|
|
var teamCharacterIDs = GetCharacterIDs();
|
|
var vehicleIDs = GetVehicleIDs();
|
|
for (int i = 0; i < teamCharacterIDs.Count; i++)
|
|
{
|
|
var uid = teamCharacterIDs[i];
|
|
var singleData = m_allCharactersMap[uid];
|
|
var cfg = singleData.GetConfigInfo();
|
|
var str = CommonUtils.GetCharacterPicPath(cfg.Cfg.RoleID, CommonUtils.ECharacterPicPathType.HeadPic, (int)cfg.SkinID); //CommonUtils.GetDefaultHeadPathByUid((uint)cfg.Cfg.RoleID);
|
|
var posterStr = CommonUtils.GetCharacterPicPath(cfg.Cfg.RoleID, CommonUtils.ECharacterPicPathType.Poster);
|
|
AssetManager.Instance.PostPreload<Sprite>(str);
|
|
AssetManager.Instance.PostPreload<Sprite>(posterStr);
|
|
}
|
|
|
|
for (int i = 0; i < vehicleIDs.Count; i++)
|
|
{
|
|
var uid = vehicleIDs[i];
|
|
var singleData = m_allCharactersMap[uid];
|
|
AssetManager.Instance.PostPreload<Sprite>(CommonUtils.GetDefaultVehicleHeadPath((uint)singleData.GetVehicleInfo().Cfg.ID)); //singleData.GetVehicleInfo().Cfg.UIHeadPath
|
|
}
|
|
|
|
//预加载职业图标
|
|
for (var i = Ejob.Job_Commander; i < Ejob.Job_Other; i++)
|
|
{
|
|
var path = JobHelper.GetJobSpritePathFight(i);
|
|
AssetManager.Instance.PostPreload<Sprite>(path);
|
|
}
|
|
|
|
//预加载状态图片
|
|
AssetManager.Instance.PostPreload<Sprite>(Constants.UI_RETREATE_STATE);
|
|
AssetManager.Instance.PostPreload<Sprite>(Constants.UI_SUPPRESS_STATE);
|
|
AssetManager.Instance.PostPreload<Sprite>(Constants.UI_RETREATE_STATE_MAP);
|
|
AssetManager.Instance.PostPreload<Sprite>(Constants.UI_SUPPRESS_STATE_MAP);
|
|
AssetManager.Instance.PostPreload<Sprite>(Constants.UI_INVEHICLE_STATE);
|
|
|
|
//预加载血条Prefab
|
|
AssetManager.Instance.PostPreload<GameObject>(Constants.UI_STATE_BAR_SELF_CHARACTER);
|
|
AssetManager.Instance.PostPreload<GameObject>(Constants.UI_STATE_BAR_SELF_VEHICLE);
|
|
AssetManager.Instance.PostPreload<GameObject>(Constants.UI_STATE_BAR_ENEMY_VEHICLE);
|
|
AssetManager.Instance.PostPreload<GameObject>(Constants.UI_STATE_BAR_SELF_SUMMON);
|
|
AssetManager.Instance.PostPreload<GameObject>(Constants.UI_STATE_BAR_SELF_PROTECTED);
|
|
AssetManager.Instance.PostPreload<GameObject>(Constants.UI_STATE_BAR_ENEMY_CHARACTER);
|
|
AssetManager.Instance.PostPreload<GameObject>(Constants.UI_STATE_BAR_ENEMY_BUILDING);
|
|
AssetManager.Instance.PostPreload<GameObject>(Constants.UI_STATE_BAR_NPC_CHARACTER);
|
|
AssetManager.Instance.PostPreload<GameObject>(Constants.UI_STATE_BAR_NPC_VEHICLE);
|
|
|
|
//预加载gridIcon
|
|
AssetManager.Instance.PostPreload<Sprite>(Constants.UI_GRID_TYPE_CAPTURE);
|
|
AssetManager.Instance.PostPreload<Sprite>(Constants.UI_GRID_TYPE_HOLDFLAG);
|
|
AssetManager.Instance.PostPreload<Sprite>(Constants.UI_GRID_TYPE_FLAGRETURN);
|
|
AssetManager.Instance.PostPreload<Sprite>(Constants.UI_GRID_TYPE_RETREAT0);
|
|
AssetManager.Instance.PostPreload<Sprite>(Constants.UI_GRID_TYPE_RETREAT1);
|
|
AssetManager.Instance.PostPreload<GameObject>(Constants.UI_GRID_TYPE_PREFAB);
|
|
|
|
await AssetManager.Instance.WaitAllPreloads();
|
|
|
|
}
|
|
|
|
/// <summary>
|
|
/// 释放加载的UI相关资源
|
|
/// </summary>
|
|
public void UnLoadAllPost()
|
|
{
|
|
AssetManager.Instance.Unload(string.Format(UIManager.UI_PREFAB_PATH, UINameConst.UICharacterStateBar), true);
|
|
AssetManager.Instance.Unload(string.Format(UIManager.UI_PREFAB_PATH, UINameConst.UIVehicleStateBar), true);
|
|
AssetManager.Instance.Unload(string.Format(UIManager.UI_PREFAB_PATH, UINameConst.UIEnemyStateBar), true);
|
|
AssetManager.Instance.Unload(string.Format(UIManager.UI_PREFAB_PATH, UINameConst.UICharacterDamage), true);
|
|
|
|
AssetManager.Instance.Unload(LevelUIManager.GetMoralePic(true), true);
|
|
AssetManager.Instance.Unload(LevelUIManager.GetMoralePic(false), true);
|
|
|
|
for (int i = 0; i < 10; i++)
|
|
{
|
|
AssetManager.Instance.Unload(LevelUIManager.GetNumberImage(i), true);
|
|
}
|
|
|
|
var teamCharacterIDs = GetCharacterIDs();
|
|
var vehicleIDs = GetVehicleIDs();
|
|
for (int i = 0; i < teamCharacterIDs.Count; i++)
|
|
{
|
|
var uid = teamCharacterIDs[i];
|
|
var singleData = m_allCharactersMap[uid];
|
|
var cfg = singleData.GetConfigInfo();
|
|
var str = CommonUtils.GetCharacterPicPath(cfg.Cfg.RoleID, CommonUtils.ECharacterPicPathType.HeadPic, (int)cfg.SkinID); //CommonUtils.GetDefaultHeadPathByUid((uint)cfg.Cfg.RoleID);
|
|
var posterStr = CommonUtils.GetCharacterPicPath(cfg.Cfg.RoleID, CommonUtils.ECharacterPicPathType.Poster);
|
|
AssetManager.Instance.Unload(str);
|
|
AssetManager.Instance.Unload(posterStr);
|
|
}
|
|
if (vehicleIDs.Count > 0)
|
|
{
|
|
var uid = vehicleIDs[0];
|
|
var singleData = m_allCharactersMap[uid];
|
|
AssetManager.Instance.Unload(CommonUtils.GetDefaultVehicleHeadPath((uint)singleData.GetVehicleInfo().Cfg.ID)); //singleData.GetVehicleInfo().Cfg.UIHeadPath
|
|
}
|
|
|
|
AssetManager.Instance.Unload(Constants.UI_RETREATE_STATE, true);
|
|
AssetManager.Instance.Unload(Constants.UI_SUPPRESS_STATE, true);
|
|
AssetManager.Instance.Unload(Constants.UI_RETREATE_STATE_MAP, true);
|
|
AssetManager.Instance.Unload(Constants.UI_SUPPRESS_STATE_MAP, true);
|
|
AssetManager.Instance.Unload(Constants.UI_INVEHICLE_STATE, true);
|
|
}
|
|
|
|
private void _OnFingerUp(Vector2 pos)
|
|
{
|
|
// if (IsHideAllUI)
|
|
// {
|
|
// IsHideAllUI = false;
|
|
// }
|
|
}
|
|
|
|
/// <summary>
|
|
/// 打开加载好的战斗内UI
|
|
/// </summary>
|
|
public void TeamUIOpen()
|
|
{
|
|
//UIManager.Instance.OpenLoadedNormalUI(UINameConst.UISkillPut);
|
|
UIManager.Instance.OpenLoadedNormalUI(UINameConst.UI_StartBtn_CMSBtn);
|
|
UIManager.Instance.OpenLoadedNormalUI(UINameConst.UIFightTarget);
|
|
UIManager.Instance.OpenLoadedNormalUI(UINameConst.UITeamFight);
|
|
UIManager.Instance.OpenLoadedNormalUI(UINameConst.UIFightClock);
|
|
UIManager.Instance.OpenLoadedNormalUI(UINameConst.UIFightScene);
|
|
|
|
var level = LevelManager.Instance.CurrentLevel;
|
|
if (level != null)
|
|
{
|
|
var levelInfo = level.GetLevelInfo();
|
|
if (levelInfo.fightStoryData != null)
|
|
{
|
|
EventManager.Instance.Send(EventManager.EventName.UI_FIGHT_STORY_PREPARE);
|
|
}
|
|
}
|
|
|
|
LevelManager.Instance.CurrentLevel.Map.ShowInfo(Map.InfoMask.ShowCells, true);
|
|
AreaManager.instance.readyAreaManager.ShowReadyArea();
|
|
}
|
|
|
|
public void TeamUIClose()
|
|
{
|
|
UIManager.Instance.CloseWindow(UINameConst.UI_StartBtn_CMSBtn);
|
|
UIManager.Instance.CloseWindow(UINameConst.UISkillPut);
|
|
UIManager.Instance.CloseWindow(UINameConst.UITeamFight);
|
|
UIManager.Instance.CloseWindow(UINameConst.UIFightClock);
|
|
UIManager.Instance.CloseWindow(UINameConst.UIFightTarget);
|
|
UIManager.Instance.CloseWindow(UINameConst.UIFightScene);
|
|
UIManager.Instance.CloseWindow(UINameConst.UIFightTeam);
|
|
FightInfoManager.RemoveFightInfoWindow();
|
|
LevelManager.Instance.SkillInfoClose(true);
|
|
}
|
|
|
|
#endregion
|
|
} |