Esempio n. 1
0
        public void OnTimer(int nTimerID)
        {
            if (nTimerID == chestAnimTimer)
            {
                SceneEffectParamBase tmpParam = null;
                for (int i = 0; i < CakeTrailEffectParamList.Count; ++i)
                {
                    tmpParam = CakeTrailEffectParamList[i];
                    SceneEffectManager.Instance.DestroySceneEffect(ref tmpParam);
                }
                CakeTrailEffectParamList.Clear();

                ResNode.DestroyRes(ref tempPriezeChestModel);  //删除开宝箱创建的临时模型
                tempPriezeChestModel = null;

                resultPageObj.SetActive(true);        //显示结果页面UI
                Invoke("OpenAwardClickTip", 1f);
                TimerManager.KillTimer(this, 1);

                SSchemePrizeChestConfig prizeChestConfig = FindNextChestPrize();
                if (prizeChestConfig != null)
                {
                    m_nextChestId = prizeChestConfig.nChestId;
                    nextChestBtn.gameObject.SetActive(true);
                    nextChestBtn.interactable = false;
                    if (m_nResultPageChestType == prizeChestConfig.nChestId)
                    {
                        nextChestHint.gameObject.SetActive(false);
                        int nNextChestCount = 0;
                        if (LogicDataCenter.prizeChestDataManager.ChestInfo.ContainsKey(m_nextChestId))
                        {
                            nNextChestCount = LogicDataCenter.prizeChestDataManager.ChestInfo[m_nextChestId];
                        }
                        nextChestBtn.gameObject.GetComponentInChildren <Text>().text = String.Format("{0}({1})", ULocalizationService.Instance.Get("UIView", "PrizeChest", "NextChestBtn"), nNextChestCount);
                    }
                    else
                    {
                        nextChestHint.gameObject.SetActive(true);
                        nextChestHint.text = String.Format(ULocalizationService.Instance.Get("UIView", "PrizeChest", "WillOpenDifferentChest"), prizeChestConfig.strChestName);
                        nextChestBtn.gameObject.GetComponentInChildren <Text>().text = ULocalizationService.Instance.Get("UIView", "PrizeChest", "NextChestBtn");
                    }
                }
                else
                {
                    m_nextChestId = -1;
                    nextChestHint.gameObject.SetActive(false);
                    nextChestBtn.gameObject.SetActive(false);
                }
            }
        }
Esempio n. 2
0
        private void LoadPrizeResultEffectAndSetUIData()
        {
            //获取当前开启的宝箱配置
            prizeChestConfig = ActorPrizeConfig.Instance.GetPrizeChestConfig(m_nResultPageChestType);
            if (prizeChestConfig == null)
            {
                return;
            }

            //创建临时模型
            tempModelID = Mathf.Clamp(prizeChestConfig.nChestModelID - 1, 0, 2);
            if (prizeChestResNodeList[tempModelID] != null)
            {
                GameObject prizeChestObj = prizeChestResNodeList[tempModelID].InstanceMainRes();
                if (prizeChestObj != null)
                {
                    prizeChestObj.transform.SetParent(prizeResultObjContainer);
                    prizeChestObj.transform.localPosition = Vector3.zero;

                    tempPriezeChestModel = prizeChestObj;
                }
            }
            else
            {
                Debug.LogError(String.Format("not find model ID in prizeChestResNodeList[{0}]", tempModelID));
                return;
            }

            //播放模型打开动画的光效
            SceneEffectParamBase openEffectParam = new SceneEffectParamBase(prizeChestConfig.nOpenEffect, tempPriezeChestModel.transform);

            SceneEffectManager.Instance.CreateSceneEffect(ref openEffectParam);

            Data.UISoundConfig.SSchemeUSoundData soundData = new Data.UISoundConfig.SSchemeUSoundData();
            if (Data.UISoundConfig.UISoundConfig.Instance.GetData(SoundFilter_AnimStart, SoundKey_AnimStart, ref soundData))
            {
                SoundManager.CreateUISound(soundData.USoundID);
            }

            Transform[] tempChestModelChilds = tempPriezeChestModel.transform.GetComponentsInChildren <Transform>();

            //挂载摄像机动画
            Transform cmdTr = prizeResultObjContainer.parent.FindChild("CamTarget");

            if (cmdTr != null)
            {
                DestroyObject(cmdTr.gameObject);
            }
            GameObject camTarget = new GameObject();

            camTarget.name = "CamTarget";
            camTarget.transform.SetParent(prizeResultObjContainer.parent);
            camTarget.transform.localPosition    = prizeResultObjContainer.localPosition;
            camTarget.transform.localEulerAngles = Vector3.zero;

            LightingEffectManager lem = EntityFactory.EffectGroup.GetComponent <LightingEffectManager>();

            if (lem != null)
            {
                LightEffectParam param = new LightEffectParam();
                param.srcObject = camTarget;
                param.sourcePos = camTarget.transform.position;
                param.targetPos = camTarget.transform.position;

                m_camEffectID = prizeChestConfig.nCamEffectID;

                lem.AddLighting(prizeChestConfig.nCamEffectID, param);
            }


            List <int> prizeIdList = LogicDataCenter.prizeChestDataManager.PrizeIdList;

            openPrizeCount = 0;
            prizeCount     = Mathf.Clamp(prizeIdList.Count, 0, 7);

            //增加Tooltip
            if (continueOpenBtn != null)
            {
                continueOpenBtn.interactable = prizeCount > 0 ? false : true;
                if (!continueOpenBtn.interactable)
                {
                    UTooltipTrigger tooltip = continueOpenBtn.gameObject.GetComponent <UTooltipTrigger>();
                    if (tooltip == null)
                    {
                        tooltip = continueOpenBtn.gameObject.AddComponent <UTooltipTrigger>(ETooltipStyle.ETS_Default);
                    }
                    tooltip.SetText(UTooltipParamName.BodyText, openTips);
                }
            }

            foreach (PrizeResultItem item in prizeResultList)
            {
                UTooltipTrigger trigger = item.transform.GetComponent <UTooltipTrigger>();
                if (trigger != null)
                {
                    trigger.enabled = false;
                }
            }

            //奖励宝箱模型上挂载光效
            for (int i = 0; i < prizeIdList.Count; ++i)
            {
                //PrizeID必须大于0,界面大小,图标最多放12个
                if (prizeIdList[i] <= 0 || i >= 7)
                {
                    break;
                }

                int nPrizeID = prizeIdList[i];
                SSchemeActorPrizeConfig config = null;

                if (nPrizeID >= RAND_CARD_FIRST_INDEX && nPrizeID < LogicDataCenter.prizeChestDataManager.RandCardIndex)
                {
                    config = LogicDataCenter.prizeChestDataManager.RandCardResult[nPrizeID];
                }
                else
                {
                    config = ActorPrizeConfig.Instance.GetActorPrizeConfig(nPrizeID);
                }

                if (config == null)
                {
                    return;
                }

                //骨骼上挂载奖励光效
                foreach (Transform tr in tempChestModelChilds)
                {
                    if (tr != null && tr.name.Equals(bonesName[i]))
                    {
                        SceneEffectParamBase effectParam = new SceneEffectParamBase(config.nCakeTrailEffectID, tr, null, true, 2700);
                        SceneEffectManager.Instance.CreateSceneEffect(ref effectParam);

                        CakeTrailEffectParamList.Add(effectParam);
                    }
                }
                //奖励UI数据填充
                prizeResultList[i].SetData(this, i, prizeIdList[i], config);
            }
            //开启动画定时器
            TimerManager.SetTimer(this, chestAnimTimer, 4.2f);
        }