using System;
|
using System.Collections;
|
using System.Collections.Generic;
|
using UnityEngine;
|
using UnityEngine.UI;
|
|
namespace Snxxz.UI
|
{
|
[XLua.Hotfix]
|
public class GatherSoulBuildBehaviour : MonoBehaviour
|
{
|
[SerializeField] RectTransform m_AttackDefend;
|
[SerializeField] Button m_BuildAttackDefend;
|
[SerializeField] RectTransform m_IceDefend;
|
[SerializeField] Button m_BuildIceDefend;
|
[SerializeField] UIEffect m_AttackEffect;
|
[SerializeField] UIEffect m_IceEffect;
|
|
int collectNpcId = 0;
|
uint serverInstanceId = 0;
|
int buildNpcId = 0;
|
|
static bool m_SatisfyBuild = false;
|
public static event Action defendBuildRefresh;
|
public static bool satisfyBuild
|
{
|
get { return m_SatisfyBuild; }
|
set
|
{
|
m_SatisfyBuild = value;
|
if (defendBuildRefresh != null)
|
{
|
defendBuildRefresh();
|
}
|
}
|
}
|
|
bool isCollecting
|
{
|
get
|
{
|
return WindowCenter.Instance.IsOpen<NormalCollectWin>();
|
}
|
}
|
|
GatherSoulDungeonModel model
|
{
|
get { return ModelCenter.Instance.GetModel<GatherSoulDungeonModel>(); }
|
}
|
|
private void Awake()
|
{
|
m_BuildAttackDefend.AddListener(BuildAttackDefend);
|
m_BuildIceDefend.AddListener(BuildIceDefend);
|
}
|
|
public void Display(int npcId,uint sid)
|
{
|
collectNpcId = npcId;
|
serverInstanceId = sid;
|
|
model.missionHelpUpdate -= MissionHelpUpdate;
|
model.missionHelpUpdate += MissionHelpUpdate;
|
WindowCenter.Instance.windowAfterOpenEvent -= WindowAfterOpenEvent;
|
WindowCenter.Instance.windowAfterCloseEvent -= WindowAfterCloseEvent;
|
WindowCenter.Instance.windowAfterOpenEvent += WindowAfterOpenEvent;
|
WindowCenter.Instance.windowAfterCloseEvent += WindowAfterCloseEvent;
|
DisplayBase();
|
DisplayEffect();
|
}
|
|
public void Dispose()
|
{
|
model.missionHelpUpdate -= MissionHelpUpdate;
|
WindowCenter.Instance.windowAfterOpenEvent -= WindowAfterOpenEvent;
|
WindowCenter.Instance.windowAfterCloseEvent -= WindowAfterCloseEvent;
|
collectNpcId = 0;
|
serverInstanceId = 0;
|
satisfyBuild = false;
|
}
|
|
void DisplayBase()
|
{
|
var attackDefendCount = model.GetDefendNpcCount(model.attckDefendNpcId);
|
var iceDefendCount = model.GetDefendNpcCount(model.iceDefendNpcId);
|
m_AttackDefend.gameObject.SetActive(attackDefendCount < model.attackDefendCountLimit);
|
m_IceDefend.gameObject.SetActive(iceDefendCount < model.iceDefendCountLimit);
|
|
satisfyBuild = iceDefendCount < model.iceDefendCountLimit || attackDefendCount < model.attackDefendCountLimit;
|
}
|
|
void DisplayEffect()
|
{
|
m_AttackEffect.StopImediatly();
|
m_IceEffect.StopImediatly();
|
if (isCollecting)
|
{
|
if (buildNpcId == model.attckDefendNpcId)
|
{
|
m_AttackEffect.Play();
|
}
|
else if (buildNpcId == model.iceDefendNpcId)
|
{
|
m_IceEffect.Play();
|
}
|
}
|
}
|
|
private void WindowAfterOpenEvent(Window window)
|
{
|
DisplayEffect();
|
}
|
|
private void WindowAfterCloseEvent(Window window)
|
{
|
DisplayEffect();
|
}
|
|
private void BuildAttackDefend()
|
{
|
if (isCollecting)
|
{
|
return;
|
}
|
if (collectNpcId != 0 && serverInstanceId != 0)
|
{
|
CA508_tagCMDoFBAction pak = new CA508_tagCMDoFBAction();
|
pak.ActionType = 0;
|
pak.ActionInfo = (uint)model.attckDefendNpcId;
|
GameNetSystem.Instance.SendInfo(pak);
|
buildNpcId = model.attckDefendNpcId;
|
NPCInteractProcessor.InvokeEvent(E_NpcType.Collect, collectNpcId, serverInstanceId);
|
}
|
}
|
|
private void BuildIceDefend()
|
{
|
if (isCollecting)
|
{
|
return;
|
}
|
if (collectNpcId != 0 && serverInstanceId != 0)
|
{
|
CA508_tagCMDoFBAction pak = new CA508_tagCMDoFBAction();
|
pak.ActionType = 0;
|
pak.ActionInfo = (uint)model.iceDefendNpcId;
|
GameNetSystem.Instance.SendInfo(pak);
|
buildNpcId = model.iceDefendNpcId;
|
NPCInteractProcessor.InvokeEvent(E_NpcType.Collect, collectNpcId, serverInstanceId);
|
}
|
}
|
|
private void MissionHelpUpdate()
|
{
|
DisplayBase();
|
}
|
}
|
}
|