Files
JJBB/Assets/Project/Script/GUI/Message/CollectItemSliderLogic.cs

196 lines
6.9 KiB
C#
Raw Normal View History

2024-08-23 15:49:34 +08:00

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