JJBB/Assets/Project/Script/GUI/StroyCopy/CaptureFlagItem.cs
2024-08-23 15:49:34 +08:00

115 lines
3.3 KiB
C#

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using Module.Log;
using GCGame.Table;
using System;
// 旗状态
public class CaptureFlagItem : UIItemBase {
public class CaptureFlagData
{
public Tab_CrossSerFlagPoint tabCrossSerFlagPoint;
public int CampIndex;
public int PointID;//据点
public int GuardID;//守卫
public int State;
public int CDTime;
}
public GameObject Effect1;
public GameObject Effect2;
public Image CDImage;
public Image campImg;
public TimeDownText countDown;
CaptureFlagData _captureFlagData = new CaptureFlagData();
private float CDOverTime = 0;
private float CDTotleTime = 0;
bool LastIsZli = false;
int needShowEffect = 0;
public override void Show(Hashtable hash)
{
_captureFlagData = hash["InitObj"] as CaptureFlagData;
if (_captureFlagData == null)
return;
Refresh();
base.Show(hash);
}
private void Update()
{
if(needShowEffect > 0)
{
needShowEffect--;
if(needShowEffect<=0)
{
needShowEffect = 0;
Effect2.SetActive(true);
}
}
if(CDOverTime - Time.realtimeSinceStartup > 0)
{
CDImage.fillAmount = (CDOverTime - Time.realtimeSinceStartup) / CDTotleTime;
}
}
public override void Refresh()
{
int curCamp = CaptureFlagStatePanelCtr.GetCurCamp();
LoadAssetBundle.Instance.SetImageSprite(campImg, CaptureFlagStatePanelCtr.GetSpriteNameByCamp(_captureFlagData.CampIndex,false));
if (_captureFlagData.CDTime > 0)
{
//中立
Tab_CrossSerFlagConfig tab = TableManager.GetCrossSerFlagConfigByID(0, 0);
float leavetime = _captureFlagData.CDTime + tab.BuffTime - GlobalData.ServerAnsiTime;
CDImage.gameObject.SetActive(true);
if (CDOverTime - Time.realtimeSinceStartup <= 0)
{
CDImage.fillAmount = 1;
CDTotleTime = leavetime;
CDOverTime = leavetime + Time.realtimeSinceStartup;
countDown.Init("", CDOverTime, 0, 5845, null, TimeDownText.TimeFormat.number);
LastIsZli = true;
}
Effect2.SetActive(false);
needShowEffect = -1;
return;
}
if (_captureFlagData.CampIndex == curCamp)
{
//已占领
countDown.Init(string.Format("{0}", StrDictionary.GetClientDictionaryString("#{5843}")));
Effect2.SetActive(false);
needShowEffect = -1;
CDImage.gameObject.SetActive(false);
if (LastIsZli)
Effect1.SetActive(true);
}
else
{
//可争夺
countDown.Init(string.Format("{0}", StrDictionary.GetClientDictionaryString("#{5842}")));
CDImage.gameObject.SetActive(false);
if (LastIsZli)
{
Effect1.SetActive(true);
needShowEffect = 20;
}
else
{
needShowEffect = 20;
}
}
LastIsZli = false;
base.Refresh();
}
}