Files
test/Assets/PerfectWorld/Scripts/UI/GamePlay/CdlgQuickBar.cs
T
2026-01-27 18:04:32 +07:00

518 lines
26 KiB
C#

//#define Applyforalicense
using BrewMonster.Assets.PerfectWorld.Scripts.UI.GamePlay;
using BrewMonster.Network;
using BrewMonster.Scripts;
using BrewMonster.Scripts.Skills;
using BrewMonster.UI;
using System.Collections.Generic;
using System.Linq;
using UnityEngine;
using UnityEngine.UI;
using static BrewMonster.PET_EGG_ESSENCE;
namespace BrewMonster
{
public class CDlgQuickBar : AUIDialog
{
//[SerializeField] List<Image> m_aSkillImage = new List<Image>();
//[SerializeField] List<Button> m_aSkillButton = new List<Button>();
[SerializeField] List<AUIImagePicture> AUIImagePictureList = new List<AUIImagePicture>();
int m_nCurPanel1 = 1;
int m_nCurPanel2 = 1;
/// <summary>
/// Apply for a license remove later
/// </summary>
/// <returns></returns>
#if !Applyforalicense
public bool UpdateShortcuts()
{
CECShortcut pSC;
Image skillImage;
CECSCSkill pSCSkill;
int iIconFile, nMax;
AUIImagePicture pCell;
CECSkill pSkill = new CECSkill(-1, -1);
AUIClockIcon pClock;
int nCurPanel9 = GetCurPanel1();
int nCurPanel8 = GetCurPanel2();
CECHostPlayer pHost = EC_Game.GetGameRun().GetHostPlayer();
if (pHost == null) return false;
var a_pSCS = new List<CECShortcutSet>();
var a_pszPanel = new List<string>();
GetQuickBarNameAndSC(pHost, a_pszPanel, a_pSCS, nCurPanel9, nCurPanel8);
for (int i = 0; i <= 1/*(int)a_pSCS.Count*/; i++)
{
if (a_pSCS[i] == null)
continue;
//*//*CDlgQuickBar* pQuickBar = dynamic_cast<CDlgQuickBar*>(GetGameUIMan()->GetDialog(a_pszPanel[i]));
//if (!pQuickBar || !pQuickBar->IsShow()) continue;*//*
for (int j = 0; j < AUIImagePictureList.Count; j++)
{
pCell = AUIImagePictureList[j];
pSC = a_pSCS[i].GetShortcut(j);
pClock = pCell.GetClockIcon();
pClock.SetProgressRange(0, 1);
pClock.SetProgressPos(1);
if (pSC != null)
{
if (pSC.GetType() == (int)CECShortcut.ShortcutType.SCT_SKILL)
{
iIconFile = (int)EC_GAMEUI_ICONS.ICONS_SKILL;
pSCSkill = (CECSCSkill)pSC;
pSkill = pSCSkill.GetSkill();
if (false/*m_bDelGoblinSkillSC && GNET::ElementSkill::IsGoblinSkill(pSkill->GetSkillID())*/)
{
/* a_pSCS[i]->SetShortcut(j, NULL);
pSC = NULL;*/
}
else
{
if (pSkill != null && pSkill.ReadyToCast() && pHost.GetPrepSkill() != pSkill)
{
if (ElementSkill.IsGoblinSkill((uint)pSkill.GetSkillID()))
{
/* if (pHostGoblin && !pHostGoblin->CheckSkillCastCondition(pSkill))
{
pCell->SetColor(A3DCOLORRGB(255, 255, 255));
}
else
{
pCell->SetColor(A3DCOLORRGB(128, 128, 128));
}*/
}
else
{
if (pHost.CheckSkillCastCondition(pSkill) == 0)
{
//pCell.SetColor(A3DCOLORRGB(255, 255, 255));
}
else
{
//pCell.SetColor(A3DCOLORRGB(128, 128, 128));
}
}
}
/*else
pClock.SetColor(A3DCOLORRGBA(0, 0, 0, 128));*/
if (pSkill != null && (pSkill.GetCoolingTime() > 0 ||
pHost.GetPrepSkill() == pSkill))
{
pClock.SetProgressRange(0, pSkill.GetCoolingTime());
if (pHost.GetPrepSkill() == pSkill)
{
pClock.SetProgressPos(0);
}
else
{
pClock.SetProgressPos(pSkill.GetCoolingTime() - pSkill.GetCoolingCnt());
}
}
}
}
/*else if (pSC->GetType() == CECShortcut::SCT_ITEM)
{
iIconFile = CECGameUIMan::ICONS_INVENTORY;
pCell->SetColor(A3DCOLORRGB(255, 255, 255));
pSCItem = (CECSCItem*)pSC;
pIvtr = GetHostPlayer()->GetPack(pSCItem->GetInventory());
pItem = pIvtr->GetItem(pSCItem->GetIvtrSlot());
if (pItem && pItem->GetCoolTime(&nMax) > 0)
{
pClock->SetProgressRange(0, nMax);
pClock->SetProgressPos(nMax - pItem->GetCoolTime());
pClock->SetColor(A3DCOLORRGBA(0, 0, 0, 128));
}
if (pSCItem->GetInventory() == IVTRTYPE_EQUIPPACK)
pCell->SetColor(A3DCOLORRGBA(128, 128, 255, 128));
}
else if (pSC->GetType() == CECShortcut::SCT_PET)
{
pSCPet = (CECSCPet*)pSC;
CECPetData* pPet = pPetCorral->GetPetData(pSCPet->GetPetIndex());
iIconFile = CECGameUIMan::ICONS_INVENTORY;
pCell->SetColor(A3DCOLORRGB(255, 255, 255));
if (pPet)
{
// dead combat pet
if ((pPet->GetClass() == GP_PET_CLASS_COMBAT || pPet->GetClass() == GP_PET_CLASS_EVOLUTION) && pPet->GetHPFactor() == 0.0f)
{
pCell->SetColor(A3DCOLORRGB(128, 128, 128));
}
// current active pet
else if (pSCPet->IsActivePet())
{
pCell->SetColor(A3DCOLORRGB(255, 255, 0));
}
}
}
else if (pSC->GetType() == CECShortcut::SCT_AUTOFASHION)
{
iIconFile = CECGameUIMan::ICONS_SUITE;
fashionCoolTime = pHost->GetCoolTime(GP_CT_EQUIP_FASHION_ITEM, &fashionCoolTimeMax);
pCell->SetColor(A3DCOLORRGB(255, 255, 255));
if (fashionCoolTimeMax > 0)
{
pClock->SetProgressRange(0, fashionCoolTimeMax);
pClock->SetProgressPos(fashionCoolTimeMax - fashionCoolTime);
pClock->SetColor(A3DCOLORRGBA(0, 0, 0, 175));
}
}
else
{
iIconFile = CECGameUIMan::ICONS_ACTION;
if (pSC->GetType() == CECShortcut::SCT_COMMAND)
{
CECSCCommand* pCommandSC = (CECSCCommand*)pSC;
if (GetHostPlayer()->IsInvisible())
{
if (pCommandSC->GetCommandID() == CECSCCommand::CMD_STARTTRADE ||
pCommandSC->GetCommandID() == CECSCCommand::CMD_SELLBOOTH ||
pCommandSC->GetCommandID() == CECSCCommand::CMD_BINDBUDDY)
{
pCell->SetColor(A3DCOLORRGB(128, 128, 128));
}
else
{
pCell->SetColor(A3DCOLORRGB(255, 255, 255));
}
}
else
{
pCell->SetColor(A3DCOLORRGB(255, 255, 255));
}
}
if (pSC->GetCoolTime(&nMax) > 0)
{
pClock->SetProgressRange(0, nMax);
pClock->SetProgressPos(nMax - pSC->GetCoolTime());
pClock->SetColor(A3DCOLORRGBA(0, 0, 0, 128));
}
}*//**/
if (pSC != null)
{
if(pCell.GetDataPtr() == pSC)
{
continue;
}
pCell.SetDataPtr(pSC);
if (pSC.GetType() == (int)CECShortcut.ShortcutType.SCT_SKILLGRP)
{
EC_VIDEO_SETTING setting = EC_Game.GetConfigs().GetVideoSettings();
/* pCell.SetCover(GetGameUIMan()->m_pA2DSpriteIcons[CECGameUIMan::ICONS_SKILLGRP],
setting.comboSkill[((CECSCSkillGrp)pSC).GetGroupIndex()].nIcon + 1);
setting.comboSkill[((CECSCSkillGrp)pSC).GetGroupIndex()].nIcon + 1;*/
// fix later now haven't skill group icon yet
GetGameUIMan().SetCover(pCell, "unknown", EC_GAMEUI_ICONS.ICONS_SKILL);
}
else
{
if (pSkill != null)
{
pCell.gameObject.SetActive(true);
//BMLogger.Log("HoangDev: QuickBar Set Skill Icon: " + (uint)pSkill.GetSkillID() + " : " + ElementSkill.GetIcon((uint)pSkill.GetSkillID()));
var nameskill = ElementSkill.GetIcon((uint)pSkill.GetSkillID());
GetGameUIMan().SetCover(pCell, nameskill, EC_GAMEUI_ICONS.ICONS_SKILL);
}
/* af_GetFileTitle(pSC->GetIconFile(), strFile);
strFile.MakeLower();
pCell->SetCover(GetGameUIMan()->m_pA2DSpriteIcons[iIconFile],
GetGameUIMan()->m_IconMap[iIconFile][strFile]); */
}
}
}
else
{
/* pCell->SetCover(NULL, -1);
pCell->SetText(_AL(""));
pCell->SetDataPtr(NULL);
pCell->SetColor(A3DCOLORRGB(255, 255, 255)); */
}
}
}
return true;
}
#else
//public bool UpdateShortcuts()
//{
// CECShortcut pSC;
// Image skillImage;
// CECSCSkill pSCSkill;
// int iIconFile, nMax;
// AUIImagePicture pCell;
// CECSkill pSkill = new CECSkill(-1, -1);
// AUIClockIcon pClock;
// int nCurPanel9 = GetCurPanel1();
// int nCurPanel8 = GetCurPanel2();
// CECHostPlayer pHost = EC_Game.GetGameRun().GetHostPlayer();
// if (pHost == null) return false;
// var a_pSCS = new List<CECShortcutSet>();
// var a_pszPanel = new List<string>();
// GetQuickBarNameAndSC(pHost, a_pszPanel, a_pSCS, nCurPanel9, nCurPanel8);
// for (int i = 0; i <= 1(int)a_pSCS.Count; i++)
// {
// if (a_pSCS[i] == null)
// continue;
// CDlgQuickBar* pQuickBar = dynamic_cast<CDlgQuickBar*>(GetGameUIMan()->GetDialog(a_pszPanel[i]));
// if (!pQuickBar || !pQuickBar->IsShow()) continue;
// int slotIndex = 0;
// for (int j = 0; j < a_pSCS.Count; j++)
// {
// pCell = AUIImagePictureList[slotIndex];
// pSC = a_pSCS[i].GetShortcut(j);
// pClock = pCell.GetClockIcon();
// pClock.SetProgressRange(0, 1);
// pClock.SetProgressPos(1);
// if (pSC != null)
// {
// if (pSC.GetType() == (int)CECShortcut.ShortcutType.SCT_SKILL)
// {
// iIconFile = (int)EC_GAMEUI_ICONS.ICONS_SKILL;
// pSCSkill = (CECSCSkill)pSC;
// pSkill = pSCSkill.GetSkill();
// if (falsem_bDelGoblinSkillSC && GNET::ElementSkill::IsGoblinSkill(pSkill->GetSkillID()))
// {
// a_pSCS[i]->SetShortcut(j, NULL);
// pSC = NULL;
// }
// else
// {
// if (pSkill != null && pSkill.ReadyToCast() && pHost.GetPrepSkill() != pSkill)
// {
// if (ElementSkill.IsGoblinSkill((uint)pSkill.GetSkillID()))
// {
// if (pHostGoblin && !pHostGoblin->CheckSkillCastCondition(pSkill))
// {
// pCell->SetColor(A3DCOLORRGB(255, 255, 255));
// }
// else
// {
// pCell->SetColor(A3DCOLORRGB(128, 128, 128));
// }
// }
// else
// {
// if (pHost.CheckSkillCastCondition(pSkill) == 0)
// {
// //pCell.SetColor(A3DCOLORRGB(255, 255, 255));
// }
// else
// {
// //pCell.SetColor(A3DCOLORRGB(128, 128, 128));
// }
// }
// }
// else
// pClock.SetColor(A3DCOLORRGBA(0, 0, 0, 128));
// if (pSkill != null && (pSkill.GetCoolingTime() > 0 ||
// pHost.GetPrepSkill() == pSkill))
// {
// pClock.SetProgressRange(0, pSkill.GetCoolingTime());
// if (pHost.GetPrepSkill() == pSkill)
// {
// pClock.SetProgressPos(0);
// }
// else
// {
// pClock.SetProgressPos(pSkill.GetCoolingTime() - pSkill.GetCoolingCnt());
// }
// }
// }
// }
// else if (pSC->GetType() == CECShortcut::SCT_ITEM)
// {
// iIconFile = CECGameUIMan::ICONS_INVENTORY;
// pCell->SetColor(A3DCOLORRGB(255, 255, 255));
// pSCItem = (CECSCItem*)pSC;
// pIvtr = GetHostPlayer()->GetPack(pSCItem->GetInventory());
// pItem = pIvtr->GetItem(pSCItem->GetIvtrSlot());
// if (pItem && pItem->GetCoolTime(&nMax) > 0)
// {
// pClock->SetProgressRange(0, nMax);
// pClock->SetProgressPos(nMax - pItem->GetCoolTime());
// pClock->SetColor(A3DCOLORRGBA(0, 0, 0, 128));
// }
// if (pSCItem->GetInventory() == IVTRTYPE_EQUIPPACK)
// pCell->SetColor(A3DCOLORRGBA(128, 128, 255, 128));
// }
// else if (pSC->GetType() == CECShortcut::SCT_PET)
// {
// pSCPet = (CECSCPet*)pSC;
// CECPetData* pPet = pPetCorral->GetPetData(pSCPet->GetPetIndex());
// iIconFile = CECGameUIMan::ICONS_INVENTORY;
// pCell->SetColor(A3DCOLORRGB(255, 255, 255));
// if (pPet)
// {
// // dead combat pet
// if ((pPet->GetClass() == GP_PET_CLASS_COMBAT || pPet->GetClass() == GP_PET_CLASS_EVOLUTION) && pPet->GetHPFactor() == 0.0f)
// {
// pCell->SetColor(A3DCOLORRGB(128, 128, 128));
// }
// // current active pet
// else if (pSCPet->IsActivePet())
// {
// pCell->SetColor(A3DCOLORRGB(255, 255, 0));
// }
// }
// }
// else if (pSC->GetType() == CECShortcut::SCT_AUTOFASHION)
// {
// iIconFile = CECGameUIMan::ICONS_SUITE;
// fashionCoolTime = pHost->GetCoolTime(GP_CT_EQUIP_FASHION_ITEM, &fashionCoolTimeMax);
// pCell->SetColor(A3DCOLORRGB(255, 255, 255));
// if (fashionCoolTimeMax > 0)
// {
// pClock->SetProgressRange(0, fashionCoolTimeMax);
// pClock->SetProgressPos(fashionCoolTimeMax - fashionCoolTime);
// pClock->SetColor(A3DCOLORRGBA(0, 0, 0, 175));
// }
// }
// else
// {
// iIconFile = CECGameUIMan::ICONS_ACTION;
// if (pSC->GetType() == CECShortcut::SCT_COMMAND)
// {
// CECSCCommand* pCommandSC = (CECSCCommand*)pSC;
// if (GetHostPlayer()->IsInvisible())
// {
// if (pCommandSC->GetCommandID() == CECSCCommand::CMD_STARTTRADE ||
// pCommandSC->GetCommandID() == CECSCCommand::CMD_SELLBOOTH ||
// pCommandSC->GetCommandID() == CECSCCommand::CMD_BINDBUDDY)
// {
// pCell->SetColor(A3DCOLORRGB(128, 128, 128));
// }
// else
// {
// pCell->SetColor(A3DCOLORRGB(255, 255, 255));
// }
// }
// else
// {
// pCell->SetColor(A3DCOLORRGB(255, 255, 255));
// }
// }
// if (pSC->GetCoolTime(&nMax) > 0)
// {
// pClock->SetProgressRange(0, nMax);
// pClock->SetProgressPos(nMax - pSC->GetCoolTime());
// pClock->SetColor(A3DCOLORRGBA(0, 0, 0, 128));
// }
// }
// if (pSC != null)
// {
// pCell.SetDataPtr(pSC, "ptr_CECShortcut");
// if (pSC.GetType() == (int)CECShortcut.ShortcutType.SCT_SKILLGRP)
// {
// EC_VIDEO_SETTING setting = GetGame()->GetConfigs()->GetVideoSettings();
// pCell->SetCover(GetGameUIMan()->m_pA2DSpriteIcons[CECGameUIMan::ICONS_SKILLGRP],
// setting.comboSkill[((CECSCSkillGrp*)pSC)->GetGroupIndex()].nIcon + 1);
// }
// else
// {
// if (pSkill != null)
// {
// slotIndex++;
// //BMLogger.Log("HoangDev: QuickBar Set Skill Icon: " + (uint)pSkill.GetSkillID() + " : " + ElementSkill.GetIcon((uint)pSkill.GetSkillID()));
// var nameskill = ElementSkill.GetIcon((uint)pSkill.GetSkillID());
// GetGameUIMan().SetCover(pCell, nameskill, EC_GAMEUI_ICONS.ICONS_SKILL);
// }
// af_GetFileTitle(pSC->GetIconFile(), strFile);
// strFile.MakeLower();
// pCell->SetCover(GetGameUIMan()->m_pA2DSpriteIcons[iIconFile],
// GetGameUIMan()->m_IconMap[iIconFile][strFile]);
// }
// }
// }
// else
// {
// pCell->SetCover(NULL, -1);
// pCell->SetText(_AL(""));
// pCell->SetDataPtr(NULL);
// pCell->SetColor(A3DCOLORRGB(255, 255, 255));
// }
// }
// }
// return true;
//}
#endif
private void GetQuickBarNameAndSC(CECHostPlayer pHost, List<string> pszPanel, List<CECShortcutSet> pSCS, int panel9, int panel8)
{
string dlgName;
// ----- Quickbar 1 Horizontal A -----
dlgName = $"Win_Quickbar{Shortcut.SIZE_HOSTSCSET1}Ha";
pSCS?.Add(pHost.GetShortcutSet1(panel9 - 1));
pszPanel.Add(dlgName);
for (int i = 0; i < (int)Shortcut.NUM_HOSTSCSETS1; i++)
{
dlgName = $"Win_Quickbar{(int)Shortcut.SIZE_HOSTSCSET1}Hb_{i + 1}";
pSCS?.Add(pHost.GetShortcutSet1(i));
pszPanel.Add(dlgName);
}
// ----- Quickbar 1 Vertical A -----
dlgName = $"Win_Quickbar{(int)Shortcut.SIZE_HOSTSCSET1}Va";
pSCS?.Add(pHost.GetShortcutSet1(panel9 - 1));
pszPanel.Add(dlgName);
for (int i = 0; i < (int)Shortcut.NUM_HOSTSCSETS1; i++)
{
dlgName = $"Win_Quickbar{(int)Shortcut.SIZE_HOSTSCSET1}Vb_{i + 1}";
pSCS?.Add(pHost.GetShortcutSet1(i));
pszPanel.Add(dlgName);
}
// ----- Quickbar 2 Horizontal A -----
dlgName = $"Win_Quickbar{(int)Shortcut.SIZE_HOSTSCSET2}Ha";
pSCS?.Add(pHost.GetShortcutSet2(panel8 - 1));
pszPanel.Add(dlgName);
for (int i = 0; i < (int)Shortcut.NUM_HOSTSCSETS2; i++)
{
dlgName = $"Win_Quickbar{(int)Shortcut.SIZE_HOSTSCSET2}Hb_{i + 1}";
pSCS?.Add(pHost.GetShortcutSet2(i));
pszPanel.Add(dlgName);
}
// ----- Quickbar 2 Vertical A -----
dlgName = $"Win_Quickbar{(int)Shortcut.SIZE_HOSTSCSET2}Va";
pSCS?.Add(pHost.GetShortcutSet2(panel8 - 1));
pszPanel.Add(dlgName);
for (int i = 0; i < (int)Shortcut.NUM_HOSTSCSETS2; i++)
{
dlgName = $"Win_Quickbar{(int)Shortcut.SIZE_HOSTSCSET2}Vb_{i + 1}";
pSCS?.Add(pHost.GetShortcutSet2(i));
pszPanel.Add(dlgName);
}
}
private int GetCurPanel1()
{
return m_nCurPanel1;
}
private int GetCurPanel2()
{
return m_nCurPanel2;
}
}
}