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);
|
|||
|
}
|
|||
|
|
|||
|
}
|