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.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.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.GetInstance().MainPlayer == null || Singleton.GetInstance().MainPlayer.CurObjAnimState != Games.GlobeDefine.GameDefine_Globe.OBJ_ANIMSTATE.STATE_FINSH || Singleton.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.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(); 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.GetInstance().MainPlayer.CurObjAnimState == Games.GlobeDefine.GameDefine_Globe.OBJ_ANIMSTATE.STATE_FINSH) Singleton.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); } }