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

196 lines
6.9 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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