NLDClient-yudde/ProjectNLD/Assets/Code/Scripts/Gameplay/Team/TeamManager.UI.cs

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
}