196 lines
6.9 KiB
C#
196 lines
6.9 KiB
C#
|
||
using UnityEngine;
|
||
using UnityEngine.UI;
|
||
using System.Collections;
|
||
using Games.Mission;
|
||
using GCGame.Table;
|
||
using Games.Item;
|
||
using Games.LogicObj;
|
||
|
||
public class CollectItemSliderLogic : MonoBehaviour
|
||
{
|
||
public Slider loadingSlider;
|
||
public float totalTime;
|
||
public int missionId;
|
||
private int ItemId = -1;
|
||
|
||
private Obj_CollectItem m_CurrOperation = null;
|
||
private Tab_MissionCollectItem m_MissionCollectItem = null;
|
||
|
||
public Text missionDescText;
|
||
|
||
private static CollectItemSliderLogic m_Instance = null;
|
||
public static CollectItemSliderLogic Instance()
|
||
{
|
||
return m_Instance;
|
||
}
|
||
|
||
void Awake()
|
||
{
|
||
m_Instance = this;
|
||
loadingSlider.value = 0;
|
||
}
|
||
|
||
|
||
|
||
// Use this for initialization
|
||
void OnEnable () {
|
||
loadingSlider.value = 0;
|
||
}
|
||
|
||
private bool unMountForCollect = false;
|
||
|
||
public void setMissionTime(Obj_CollectItem collectItem, Tab_MissionCollectItem collectTab, float time, int missionId, int itemId = -1, string desc = "")
|
||
{
|
||
if (collectItem == null)
|
||
return;
|
||
m_CurrOperation = collectItem;
|
||
m_MissionCollectItem = collectTab;
|
||
//if (GameManager.gameManager.PlayerDataPool.m_objMountParam.AdvanceMountId > 0) //骑乘状态,下马
|
||
//{
|
||
// unMountForCollect = true;
|
||
// Singleton<ObjManager>.GetInstance().MainPlayer.AskUnMount(false, true);
|
||
//}
|
||
|
||
totalTime = time;
|
||
this.missionId = missionId;
|
||
ItemId = itemId;
|
||
|
||
Tab_MissionBase missionBase = TableManager.GetMissionBaseByID(missionId, 0);
|
||
if (missionBase == null)
|
||
return;
|
||
Tab_MissionLogic missionLogic = TableManager.GetMissionLogicByID(missionBase.LogicID, 0);
|
||
if (missionLogic == null)
|
||
{
|
||
return;
|
||
}
|
||
if(collectItem.ObjEffectLogic!=null)
|
||
{
|
||
for (int i = 0; i < collectTab.getEffectIDCount(); i++)
|
||
{
|
||
collectItem.PlayEffect(collectTab.GetEffectIDbyIndex(i));
|
||
}
|
||
}
|
||
missionDescText.text = desc;
|
||
}
|
||
|
||
public void setTime(float time, int missionId, int itemId = -1, string desc = "")
|
||
{
|
||
//if (GameManager.gameManager.PlayerDataPool.m_objMountParam.AdvanceMountId > 0) //骑乘状态,下马
|
||
//{
|
||
// unMountForCollect = true;
|
||
// Singleton<ObjManager>.GetInstance().MainPlayer.AskUnMount();
|
||
//}
|
||
|
||
totalTime = time;
|
||
this.missionId = missionId;
|
||
ItemId = itemId;
|
||
|
||
Tab_MissionBase missionBase = TableManager.GetMissionBaseByID(missionId, 0);
|
||
if (missionBase == null)
|
||
return;
|
||
Tab_MissionLogic missionLogic = TableManager.GetMissionLogicByID(missionBase.LogicID, 0);
|
||
if(missionLogic == null)
|
||
{
|
||
return;
|
||
}
|
||
|
||
missionDescText.text = desc;
|
||
}
|
||
|
||
|
||
// Update is called once per frame
|
||
void Update () {
|
||
|
||
loadingSlider.value += 1 / totalTime * Time.deltaTime;
|
||
if (Singleton<ObjManager>.GetInstance().MainPlayer == null ||
|
||
Singleton<ObjManager>.GetInstance().MainPlayer.CurObjAnimState != Games.GlobeDefine.GameDefine_Globe.OBJ_ANIMSTATE.STATE_FINSH
|
||
|| Singleton<ObjManager>.Instance.MainPlayer.IsMoveToPos())
|
||
{
|
||
BreakCollectState();
|
||
return;
|
||
}
|
||
|
||
if (loadingSlider.value >= 1)
|
||
{
|
||
Tab_MissionBase missionBase = TableManager.GetMissionBaseByID(missionId, 0);
|
||
if (missionBase == null)
|
||
{
|
||
return;
|
||
}
|
||
|
||
Tab_MissionLogic missionLogic = TableManager.GetMissionLogicByID(missionBase.LogicID, 0);
|
||
if (missionLogic == null)
|
||
{
|
||
}
|
||
|
||
var missionIndex = GameManager.gameManager.MissionManager.getCurMissionIndex(missionId);
|
||
int m_missionType = missionLogic.GetLogicTypebyIndex(missionIndex);
|
||
if (m_missionType == (int)TableType.Table_CollectItem)
|
||
{
|
||
Singleton<CollectItem>.GetInstance().SafeDeleteItem();
|
||
}
|
||
else if (m_missionType == (int)TableType.Table_Enterarea) //非采集的 (敷药 做动作)都要配上任务参数1,代表要动作的次数,下面手动设置的任务参数为1(完成)
|
||
{
|
||
var missionEnterAreaTab = TableManager.GetMissionEnterAreaByID(missionLogic.GetLogicIDbyIndex(missionIndex), 0);
|
||
if(missionEnterAreaTab != null)
|
||
{
|
||
if(missionEnterAreaTab.TargetRoleBaseId != -1)
|
||
{
|
||
var roleBaseAttr = TableManager.GetRoleBaseAttrByID(missionEnterAreaTab.TargetRoleBaseId, 0);
|
||
if (roleBaseAttr == null)
|
||
return;
|
||
var obj = ObjManager.Instance.FindObjCharacterInSceneByName(roleBaseAttr.Name);
|
||
if (obj == null)
|
||
return;
|
||
var animator = obj.GetComponentInChildren<Animator>();
|
||
if (animator == null)
|
||
return;
|
||
var animationTab = TableManager.GetAnimationByID(missionEnterAreaTab.TargetAnimationId, 0);
|
||
if (animationTab == null)
|
||
return;
|
||
animator.Play(animationTab.AnimName);
|
||
}
|
||
}
|
||
|
||
Tab_CommonItem commonItem = TableManager.GetCommonItemByID(ItemId, 0);
|
||
if (commonItem != null && commonItem.SubClassID == (int)PrizeSubClass.CALLMONSTER)
|
||
{
|
||
//发协议
|
||
CG_MISSION_SUMMON ask = (CG_MISSION_SUMMON)PacketDistributed.CreatePacket(MessageID.PACKET_CG_MISSION_SUMMON);
|
||
ask.SetMissionID(missionId);
|
||
ask.SendPacket();
|
||
}
|
||
|
||
//设置当前子任务为完成状态
|
||
int index = GameManager.gameManager.MissionManager.getCurMissionIndex(missionId);
|
||
GameManager.gameManager.MissionManager.ReqSetMissionParam(missionId, index, m_missionType);
|
||
}
|
||
loadingSlider.value = 0;
|
||
|
||
if (Singleton<ObjManager>.GetInstance().MainPlayer.CurObjAnimState == Games.GlobeDefine.GameDefine_Globe.OBJ_ANIMSTATE.STATE_FINSH)
|
||
Singleton<ObjManager>.GetInstance().MainPlayer.OnSwithObjAnimState(Games.GlobeDefine.GameDefine_Globe.OBJ_ANIMSTATE.STATE_NORMOR); //切换回Idle状态
|
||
|
||
UIManager.CloseUI(UIInfo.CollectItemSlider);
|
||
return;
|
||
}
|
||
}
|
||
|
||
void OnDestroy()
|
||
{
|
||
m_Instance = null;
|
||
}
|
||
|
||
public void BreakCollectState()
|
||
{
|
||
loadingSlider.value = 0.0f; //打断
|
||
if(m_CurrOperation!=null && m_MissionCollectItem!=null)
|
||
{
|
||
m_CurrOperation.BreakCollectState(m_MissionCollectItem);
|
||
}
|
||
m_CurrOperation = null;
|
||
UIManager.CloseUI(UIInfo.CollectItemSlider);
|
||
}
|
||
|
||
}
|