Beispiel #1
0
        public void ExecCommand(uint senderPlayerID, uint heroID, int signalID, int worldPositionX, int worldPositionY, int worldPositionZ, byte bAlice = 0, byte elementType = 0, uint targetHeroID = 0)
        {
            if (this.m_useSignalButton && (this.m_formScript != null))
            {
                Player hostPlayer = Singleton <GamePlayerCenter> .GetInstance().GetHostPlayer();

                Player player = Singleton <GamePlayerCenter> .GetInstance().GetPlayer(senderPlayerID);

                if (((hostPlayer != null) && (player != null)) && (hostPlayer.PlayerCamp == player.PlayerCamp))
                {
                    bool          isHostPlayer = hostPlayer == player;
                    ResSignalInfo dataByKey    = GameDataMgr.signalDatabin.GetDataByKey((long)signalID);
                    if (dataByKey == null)
                    {
                        DebugHelper.Assert(dataByKey != null, "ExecCommand signalInfo is null, check out...");
                    }
                    else
                    {
                        uint  cDTime         = this.GetCDTime(dataByKey);
                        ulong logicFrameTick = Singleton <FrameSynchr> .GetInstance().LogicFrameTick;

                        CPlayerSignalCooldown cooldown = null;
                        this.m_playerSignalCooldowns.TryGetValue(senderPlayerID, out cooldown);
                        if (cooldown != null)
                        {
                            if (((uint)(logicFrameTick - cooldown.m_lastSignalExecuteTimestamp)) < cooldown.m_cooldownTime)
                            {
                                return;
                            }
                            cooldown.m_lastSignalExecuteTimestamp = logicFrameTick;
                            cooldown.m_cooldownTime = cDTime;
                        }
                        else
                        {
                            cooldown = new CPlayerSignalCooldown(logicFrameTick, cDTime);
                            this.m_playerSignalCooldowns.Add(senderPlayerID, cooldown);
                        }
                        if (isHostPlayer && (this.m_signalButtons != null))
                        {
                            for (int i = 0; i < this.m_signalButtons.Length; i++)
                            {
                                if (this.m_signalButtons[i] != null)
                                {
                                    this.m_signalButtons[i].StartCooldown(cDTime);
                                }
                            }
                        }
                        bool bSmall = Singleton <CBattleSystem> .instance.TheMinimapSys.CurMapType() == MinimapSys.EMapType.Mini;

                        this.PlaySignalTipsSound(elementType, bAlice, targetHeroID);
                        bool    bUseCfgSound = elementType == 0;
                        CSignal item         = new CSignal(senderPlayerID, signalID, worldPositionX, worldPositionY, worldPositionZ, !bSmall ? this.m_signalInUIContainer_big : this.m_signalInUIContainer_small, bSmall, bUseCfgSound);
                        item.Initialize(this.m_formScript, dataByKey);
                        this.m_signals.Add(item);
                        CSignalTips tips = new CSignalTips(signalID, heroID, isHostPlayer, bAlice, elementType, targetHeroID);
                        this.Add_SignalTip(tips);
                    }
                }
            }
        }
Beispiel #2
0
 public void Initialize(CUIFormScript formScript)
 {
     this.m_signalInfo = GameDataMgr.signalDatabin.GetDataByKey((long)this.m_signalID);
     if (this.m_signalInfo != null)
     {
         if (this.m_buttonImage != null)
         {
             this.m_buttonImage.SetSprite(CUIUtility.s_battleSignalPrefabDir + ((this.m_signalInfo.bSignalType != 0) ? "Signal_Btn_Voice.prefab" : "Signal_Btn_Normal.prefab"), formScript, true, false, false);
         }
         if (this.m_iconImage != null)
         {
             this.m_iconImage.SetSprite(StringHelper.UTF8BytesToString(ref this.m_signalInfo.szUIIcon), formScript, true, false, false);
         }
         if (this.m_highLightImage != null)
         {
             this.m_highLightImage.SetSprite(CUIUtility.s_battleSignalPrefabDir + ((this.m_signalInfo.bSignalType != 0) ? "Signal_Btn_Voice_Highlight.prefab" : "Signal_Btn_Normal_Highlight.prefab"), formScript, true, false, false);
         }
         if (this.m_uiEventScript != null)
         {
             this.m_uiEventScript.m_onClickEventID         = enUIEventID.Battle_OnSignalButtonClicked;
             this.m_uiEventScript.m_onClickEventParams.tag = this.m_signalID;
         }
         this.SetHighLight(false);
         this.StartCooldown(0);
     }
 }
Beispiel #3
0
        private uint GetCDTime(ResSignalInfo signalInfo)
        {
            uint num = (uint)(signalInfo.bCooldownTime * 0x3e8);

            if (Singleton <BattleLogic> .GetInstance().GetCurLvelContext().m_mapID == CBattleGuideManager.GuideLevelID5v5)
            {
                num = 0x7d0;
            }
            return(num);
        }
Beispiel #4
0
        private uint GetCDTime(ResSignalInfo signalInfo)
        {
            uint          result         = (uint)signalInfo.bCooldownTime * 1000u;
            SLevelContext curLvelContext = Singleton <BattleLogic> .GetInstance().GetCurLvelContext();

            if (CBattleGuideManager.Is5v5GuideLevel(curLvelContext.m_mapID))
            {
                result = 2000u;
            }
            return(result);
        }
Beispiel #5
0
        public static void Preload(ref ActorPreloadTab preloadTab)
        {
            ResSignalInfo info = null;

            foreach (KeyValuePair <long, object> pair in GameDataMgr.signalDatabin)
            {
                info = (ResSignalInfo)pair.Value;
                if ((info != null) && !string.IsNullOrEmpty(info.szRealEffect))
                {
                    preloadTab.AddSprite(info.szRealEffect);
                }
            }
        }
Beispiel #6
0
        public void ExecCommand(int signalID, Vector2 localPosition, Quaternion localRotation)
        {
            if (this.m_formScript == null)
            {
                return;
            }
            ResSignalInfo dataByKey = GameDataMgr.signalDatabin.GetDataByKey((long)signalID);
            bool          bSmall    = Singleton <CBattleSystem> .instance.TheMinimapSys.CurMapType() == MinimapSys.EMapType.Mini;

            CSignal cSignal = new CSignal(signalID, localPosition, true, bSmall, true, true, localRotation);

            cSignal.Initialize(this.m_formScript, dataByKey);
            this.m_signals.Add(cSignal);
        }
Beispiel #7
0
 public static void Preload(ref ActorPreloadTab preloadTab)
 {
     GameDataMgr.signalDatabin.Reload();
     Dictionary <long, object> .Enumerator enumerator = GameDataMgr.signalDatabin.GetEnumerator();
     while (enumerator.MoveNext())
     {
         KeyValuePair <long, object> current = enumerator.get_Current();
         ResSignalInfo resSignalInfo         = (ResSignalInfo)current.get_Value();
         if (resSignalInfo != null && !string.IsNullOrEmpty(resSignalInfo.szRealEffect))
         {
             preloadTab.AddSprite(resSignalInfo.szRealEffect);
         }
         if (resSignalInfo != null && !string.IsNullOrEmpty(resSignalInfo.szUIIcon))
         {
             preloadTab.AddSprite(resSignalInfo.szUIIcon);
         }
     }
 }
Beispiel #8
0
        public void Initialize(CUIFormScript formScript, ResSignalInfo signalInfo)
        {
            if (this.m_playerID > 0)
            {
                Player player = Singleton <GamePlayerCenter> .GetInstance().GetPlayer(this.m_playerID);

                if (player != null)
                {
                    this.m_signalRelatedActor = player.Captain;
                }
            }
            this.m_signalInfo = signalInfo;
            if ((this.m_signalInfo == null) || (formScript == null))
            {
                this.m_duringTime    = 0f;
                this.m_maxDuringTime = 0f;
            }
            else
            {
                this.m_duringTime    = 0f;
                this.m_maxDuringTime = this.m_signalInfo.bTime;
                if ((this.m_signalInfo.bSignalType == 0) && !string.IsNullOrEmpty(this.m_signalInfo.szSceneEffect))
                {
                    this.m_effectInScene = MonoSingleton <SceneMgr> .GetInstance().GetPooledGameObjLOD(this.m_signalInfo.szSceneEffect, true, SceneObjType.Temp, this.m_worldPosition);

                    this.m_effectInScene.CustomSetActive(true);
                }
                if ((this.m_signalInUIContainer != null) && !string.IsNullOrEmpty(this.m_signalInfo.szUIIcon))
                {
                    this.m_signalInUISequence = this.m_signalInUIContainer.GetElement();
                    GameObject element = this.m_signalInUIContainer.GetElement(this.m_signalInUISequence);
                    if (element != null)
                    {
                        Image component = element.GetComponent <Image>();
                        if (component != null)
                        {
                            component.SetSprite(this.m_signalInfo.szUIIcon, formScript, true, false, false);
                            component.color = new Color(1f, 1f, 1f, (this.m_signalInfo.bSignalType != 1) ? ((float)1) : ((float)0));
                        }
                        Vector3 worldPosition = this.m_worldPosition;
                        if ((this.m_signalInfo.bSignalType == 1) && (this.m_signalRelatedActor != 0))
                        {
                            worldPosition = (Vector3)this.m_signalRelatedActor.handle.location;
                        }
                        if (this.bSmall)
                        {
                            (element.transform as RectTransform).anchoredPosition = new Vector2(worldPosition.x * Singleton <CBattleSystem> .GetInstance().world_UI_Factor_Small.x, worldPosition.z * Singleton <CBattleSystem> .GetInstance().world_UI_Factor_Small.y);
                        }
                        else
                        {
                            (element.transform as RectTransform).anchoredPosition = new Vector2(worldPosition.x * Singleton <CBattleSystem> .GetInstance().world_UI_Factor_Big.x, worldPosition.z * Singleton <CBattleSystem> .GetInstance().world_UI_Factor_Big.y);
                        }
                        if ((!string.IsNullOrEmpty(this.m_signalInfo.szRealEffect) && (this.m_signalInUISequence >= 0)) && (Singleton <CBattleSystem> .instance.TheMinimapSys.CurMapType() == MinimapSys.EMapType.Mini))
                        {
                            Vector2 sreenLoc = CUIUtility.WorldToScreenPoint(formScript.GetCamera(), element.transform.position);
                            this.m_signalInUIEffect = Singleton <CUIParticleSystem> .instance.AddParticle(this.m_signalInfo.szRealEffect, (float)this.m_signalInfo.bTime, sreenLoc);
                        }
                    }
                }
                if (this.bUseCfgSound)
                {
                    string str = StringHelper.UTF8BytesToString(ref this.m_signalInfo.szSound);
                    if (!string.IsNullOrEmpty(str))
                    {
                        Singleton <CSoundManager> .GetInstance().PlayBattleSound2D(str);
                    }
                }
            }
        }
    private void Show(CSignalTips data, CUIFormScript formScript)
    {
        if (data == null)
        {
            return;
        }
        this.signal_node.CustomSetActive(true);
        this.inbattlemsg_node.CustomSetActive(false);
        ResHeroCfgInfo dataByKey = GameDataMgr.heroDatabin.GetDataByKey(data.m_heroID);

        if (dataByKey == null)
        {
            return;
        }
        this.SetHeroHeadIcon(this.leftIcon.gameObject.GetComponent <Image>(), formScript, dataByKey);
        string text = data.m_isHostPlayer ? CSignalTipShower.S_Bg_Green : CSignalTipShower.S_Bg_Blue;

        if (this.bg_icon == null)
        {
            return;
        }
        Image component = this.bg_icon.GetComponent <Image>();

        if (component != null && !string.IsNullOrEmpty(text))
        {
            component.SetSprite(text, formScript, true, false, false, false);
        }
        ResSignalInfo dataByKey2 = GameDataMgr.signalDatabin.GetDataByKey((long)data.m_signalID);

        if (dataByKey2 == null)
        {
            return;
        }
        this.signal_icon.CustomSetActive(true);
        if (this.signal_icon == null)
        {
            return;
        }
        Image component2 = this.signal_icon.GetComponent <Image>();

        if (component2 != null)
        {
            component2.SetSprite(dataByKey2.szUIIcon, formScript, true, false, false, false);
        }
        if (this.signal_txt != null)
        {
            this.signal_txt.set_text(dataByKey2.szText);
        }
        if (data.m_elementType >= 1)
        {
            Image component3 = this.rightIcon.GetComponent <Image>();
            if (component3 == null)
            {
                return;
            }
            switch (data.m_elementType)
            {
            case 1:
                component3.SetSprite(CSignalTipShower.S_kn_Tower_Icon, formScript, true, false, false, false);
                break;

            case 2:
                component3.SetSprite(CSignalTipShower.S_Base_blue_Icon, formScript, true, false, false, false);
                break;

            case 3:
            {
                ResHeroCfgInfo dataByKey3 = GameDataMgr.heroDatabin.GetDataByKey(data.m_targetHeroID);
                if (dataByKey3 == null)
                {
                    return;
                }
                this.SetHeroHeadIcon(component3, formScript, dataByKey3);
                break;
            }

            case 4:
            {
                SLevelContext curLvelContext = Singleton <BattleLogic> .instance.GetCurLvelContext();

                if (curLvelContext != null && curLvelContext.IsFireHolePlayMode())
                {
                    component3.SetSprite(CSignalTipShower.S_kn_dragon_Icon_3v3, formScript, true, false, false, false);
                }
                else
                {
                    component3.SetSprite(KillNotify.soldier_bigdragon_icon, formScript, true, false, false, false);
                }
                break;
            }

            case 5:
            {
                SLevelContext curLvelContext2 = Singleton <BattleLogic> .instance.GetCurLvelContext();

                if (curLvelContext2 != null && curLvelContext2.IsFireHolePlayMode())
                {
                    component3.SetSprite(CSignalTipShower.S_kn_dragon_Icon_3v3, formScript, true, false, false, false);
                }
                else
                {
                    component3.SetSprite(CSignalTipShower.S_kn_dragon_Icon, formScript, true, false, false, false);
                }
                break;
            }

            case 6:
                component3.SetSprite(CSignalTipShower.S_kn_dragon_Icon_3v3, formScript, true, false, false, false);
                break;

            default:
                return;
            }
            this.rightIcon.CustomSetActive(true);
        }
        else
        {
            this.rightIcon.CustomSetActive(false);
        }
    }
Beispiel #10
0
        public void ExecCommand(PoolObjHandle <ActorRoot> followActor, uint senderPlayerID, uint heroID, int signalID, byte bAlice = 0, byte elementType = 0, uint targetObjID = 0u, uint targetHeroID = 0u)
        {
            if (!this.m_useSignalButton || this.m_formScript == null)
            {
                return;
            }
            Player hostPlayer = Singleton <GamePlayerCenter> .GetInstance().GetHostPlayer();

            Player player = Singleton <GamePlayerCenter> .GetInstance().GetPlayer(senderPlayerID);

            if (hostPlayer == null || player == null)
            {
                return;
            }
            if (hostPlayer.PlayerCamp != player.PlayerCamp)
            {
                return;
            }
            bool          flag      = hostPlayer == player;
            ResSignalInfo dataByKey = GameDataMgr.signalDatabin.GetDataByKey((long)signalID);

            if (dataByKey == null)
            {
                DebugHelper.Assert(dataByKey != null, "ExecCommand signalInfo is null, check out...");
                return;
            }
            uint  cDTime         = this.GetCDTime(dataByKey);
            ulong logicFrameTick = Singleton <FrameSynchr> .GetInstance().LogicFrameTick;

            SignalPanel.CPlayerSignalCooldown cPlayerSignalCooldown = null;
            this.m_playerSignalCooldowns.TryGetValue(senderPlayerID, ref cPlayerSignalCooldown);
            if (cPlayerSignalCooldown != null)
            {
                if ((uint)(logicFrameTick - cPlayerSignalCooldown.m_lastSignalExecuteTimestamp) < cPlayerSignalCooldown.m_cooldownTime)
                {
                    return;
                }
                cPlayerSignalCooldown.m_lastSignalExecuteTimestamp = logicFrameTick;
                cPlayerSignalCooldown.m_cooldownTime = cDTime;
            }
            else
            {
                cPlayerSignalCooldown = new SignalPanel.CPlayerSignalCooldown(logicFrameTick, cDTime);
                this.m_playerSignalCooldowns.Add(senderPlayerID, cPlayerSignalCooldown);
            }
            if (flag && this.m_signalButtons != null)
            {
                for (int i = 0; i < this.m_signalButtons.Length; i++)
                {
                    if (this.m_signalButtons[i] != null)
                    {
                        this.m_signalButtons[i].StartCooldown(cDTime);
                    }
                }
            }
            bool bSmall = Singleton <CBattleSystem> .instance.TheMinimapSys.CurMapType() == MinimapSys.EMapType.Mini;

            this.PlaySignalTipsSound(elementType, bAlice, targetHeroID);
            bool bUseCfgSound = elementType == 0;

            if (followActor && followActor.handle.Visible)
            {
                CSignal cSignal = new CSignal(followActor, signalID, true, bSmall, bUseCfgSound);
                cSignal.Initialize(this.m_formScript, dataByKey);
                this.m_signals.Add(cSignal);
            }
            CSignalTips obj = new CSignalTips(signalID, heroID, flag, bAlice, elementType, targetHeroID);

            this.Add_SignalTip(obj);
        }
Beispiel #11
0
        public void ExecCommand_4_SignalPanel_Sign(PoolObjHandle <ActorRoot> sender, uint senderPlayerID, uint heroID, int signalID, int worldPositionX, int worldPositionY, int worldPositionZ)
        {
            if (!this.m_useSignalButton || this.m_formScript == null)
            {
                return;
            }
            Player hostPlayer = Singleton <GamePlayerCenter> .GetInstance().GetHostPlayer();

            Player player = Singleton <GamePlayerCenter> .GetInstance().GetPlayer(senderPlayerID);

            if (hostPlayer == null || player == null)
            {
                return;
            }
            if (hostPlayer.PlayerCamp != player.PlayerCamp)
            {
                return;
            }
            bool          flag      = hostPlayer == player;
            ResSignalInfo dataByKey = GameDataMgr.signalDatabin.GetDataByKey((long)signalID);

            if (dataByKey == null)
            {
                DebugHelper.Assert(dataByKey != null, "ExecCommand signalInfo is null, check out...");
                return;
            }
            uint  cDTime         = this.GetCDTime(dataByKey);
            ulong logicFrameTick = Singleton <FrameSynchr> .GetInstance().LogicFrameTick;

            SignalPanel.CPlayerSignalCooldown cPlayerSignalCooldown = null;
            this.m_playerSignalCooldowns.TryGetValue(senderPlayerID, ref cPlayerSignalCooldown);
            if (cPlayerSignalCooldown != null)
            {
                if ((uint)(logicFrameTick - cPlayerSignalCooldown.m_lastSignalExecuteTimestamp) < cPlayerSignalCooldown.m_cooldownTime)
                {
                    return;
                }
                cPlayerSignalCooldown.m_lastSignalExecuteTimestamp = logicFrameTick;
                cPlayerSignalCooldown.m_cooldownTime = cDTime;
            }
            else
            {
                cPlayerSignalCooldown = new SignalPanel.CPlayerSignalCooldown(logicFrameTick, cDTime);
                this.m_playerSignalCooldowns.Add(senderPlayerID, cPlayerSignalCooldown);
            }
            if (flag && this.m_signalButtons != null)
            {
                for (int i = 0; i < this.m_signalButtons.Length; i++)
                {
                    if (this.m_signalButtons[i] != null)
                    {
                        this.m_signalButtons[i].StartCooldown(cDTime);
                    }
                }
            }
            Singleton <CSoundManager> .GetInstance().PlayBattleSound2D(dataByKey.szSound);

            MiniMapEffectModule miniMapEffectModule = Singleton <CBattleSystem> .instance.TheMinimapSys.miniMapEffectModule;

            if (miniMapEffectModule != null)
            {
                Vector3    vector     = new Vector3((float)worldPositionX, (float)worldPositionY, (float)worldPositionZ);
                GameObject gameObject = miniMapEffectModule.PlaySceneEffect(dataByKey.szSceneEffect, (int)dataByKey.bTime * 1000, vector);
                if (signalID == 202 && gameObject != null)
                {
                    TextMesh component = gameObject.transform.FindChild("text").GetComponent <TextMesh>();
                    if (component != null)
                    {
                        ResHeroCfgInfo dataByKey2 = GameDataMgr.heroDatabin.GetDataByKey(heroID);
                        if (dataByKey2 == null)
                        {
                            return;
                        }
                        component.text = dataByKey2.szName;
                        component.gameObject.CustomSetActive(true);
                    }
                    Transform transform = gameObject.transform.FindChild("JianTou");
                    Vector3   forward   = sender.handle.gameObject.transform.position - vector;
                    forward.Normalize();
                    transform.forward = forward;
                    if (Singleton <BattleLogic> .instance.m_LevelContext.m_isCameraFlip)
                    {
                        component.transform.rotation = Quaternion.AngleAxis(180f, Vector3.up);
                    }
                }
                if (signalID == 203 && Singleton <BattleLogic> .instance.m_LevelContext.m_isCameraFlip)
                {
                    gameObject.transform.rotation = Quaternion.AngleAxis(180f, Vector3.up);
                }
                if (!string.IsNullOrEmpty(dataByKey.szRealEffect))
                {
                    bool       bMiniMap      = false;
                    MinimapSys theMinimapSys = Singleton <CBattleSystem> .GetInstance().TheMinimapSys;

                    if (theMinimapSys != null)
                    {
                        bMiniMap = (theMinimapSys.CurMapType() == MinimapSys.EMapType.Mini);
                    }
                    Vector2 screenPos = MiniMapSysUT.CalcScreenPosInMapByWorldPos(ref vector, bMiniMap);
                    miniMapEffectModule.PlayScreenPosEffect(dataByKey.szRealEffect, (float)((int)dataByKey.bTime * 1000), screenPos);
                }
            }
        }
    private void Show(CSignalTips data, CUIFormScript formScript)
    {
        if (data != null)
        {
            this.signal_node.CustomSetActive(true);
            this.inbattlemsg_node.CustomSetActive(false);
            ResHeroCfgInfo dataByKey = GameDataMgr.heroDatabin.GetDataByKey(data.m_heroID);
            if (dataByKey == null)
            {
                return;
            }
            this.SetHeroHeadIcon(this.leftIcon.gameObject.GetComponent <Image>(), formScript, dataByKey);
            string str = !data.m_isHostPlayer ? S_Bg_Blue : S_Bg_Green;
            if (this.bg_icon == null)
            {
                return;
            }
            Image component = this.bg_icon.GetComponent <Image>();
            if ((component != null) && !string.IsNullOrEmpty(str))
            {
                component.SetSprite(str, formScript, true, false, false);
            }
            ResSignalInfo info2 = GameDataMgr.signalDatabin.GetDataByKey(data.m_signalID);
            if (info2 == null)
            {
                return;
            }
            this.signal_icon.CustomSetActive(true);
            if (this.signal_icon == null)
            {
                return;
            }
            Image image = this.signal_icon.GetComponent <Image>();
            if (image != null)
            {
                image.SetSprite(info2.szUIIcon, formScript, true, false, false);
            }
            if (this.signal_txt != null)
            {
                this.signal_txt.text = info2.szText;
            }
            if (data.m_elementType < 1)
            {
                this.rightIcon.CustomSetActive(false);
                return;
            }
            Image image3 = this.rightIcon.GetComponent <Image>();
            if (image3 == null)
            {
                return;
            }
            switch (data.m_elementType)
            {
            case 1:
                image3.SetSprite(S_kn_Tower_Icon, formScript, true, false, false);
                goto Label_021B;

            case 2:
                image3.SetSprite(S_Base_blue_Icon, formScript, true, false, false);
                goto Label_021B;

            case 3:
            {
                ResHeroCfgInfo heroCfgInfo = GameDataMgr.heroDatabin.GetDataByKey(data.m_targetHeroID);
                if (heroCfgInfo != null)
                {
                    this.SetHeroHeadIcon(image3, formScript, heroCfgInfo);
                    goto Label_021B;
                }
                return;
            }

            case 4:
                image3.SetSprite(S_Dragon_big_Icon, formScript, true, false, false);
                goto Label_021B;

            case 5:
                image3.SetSprite(S_Dragon_small_Icon, formScript, true, false, false);
                goto Label_021B;

            case 6:
                image3.SetSprite(S_kn_dragon_Icon, formScript, true, false, false);
                goto Label_021B;
            }
        }
        return;

Label_021B:
        this.rightIcon.CustomSetActive(true);
    }
Beispiel #13
0
        public void Initialize(CUIFormScript formScript, ResSignalInfo signalInfo)
        {
            if (this.m_playerID > 0u)
            {
                Player player = Singleton <GamePlayerCenter> .GetInstance().GetPlayer(this.m_playerID);

                if (player != null)
                {
                    this.m_signalRelatedActor = player.Captain;
                }
            }
            this.m_signalInfo = signalInfo;
            if (this.m_signalInfo == null || formScript == null)
            {
                this.m_duringTime    = 0f;
                this.m_maxDuringTime = 0f;
                return;
            }
            this.m_duringTime    = 0f;
            this.m_maxDuringTime = (float)this.m_signalInfo.bTime;
            if (this.m_signalInfo.bSignalType == 0 && !string.IsNullOrEmpty(this.m_signalInfo.szSceneEffect))
            {
                this.m_effectInScene = MonoSingleton <SceneMgr> .GetInstance().GetPooledGameObjLOD(this.m_signalInfo.szSceneEffect, true, SceneObjType.Temp, this.m_worldPosition);

                this.m_effectInScene.CustomSetActive(true);
            }
            if (this.m_bUseSignal && !string.IsNullOrEmpty(this.m_signalInfo.szUIIcon))
            {
                if (this.m_signalInUi == null)
                {
                    this.m_signalInUi = MiniMapSysUT.GetSignalGameObject(true);
                }
                if (this.m_signalInUi != null)
                {
                    Vector3 vector = this.m_worldPosition;
                    if (this.m_signalInfo.bSignalType == 1 && this.m_signalRelatedActor)
                    {
                        vector = (Vector3)this.m_signalRelatedActor.get_handle().location;
                    }
                    float x;
                    float y;
                    this.m_signalInUi.transform.position = MiniMapSysUT.Set3DUIWorldPos_ByScreenPoint(ref vector, true, out x, out y);
                    if (!string.IsNullOrEmpty(this.m_signalInfo.szRealEffect) && this.m_signalInUi != null && Singleton <CBattleSystem> .get_instance().TheMinimapSys.CurMapType() == MinimapSys.EMapType.Mini)
                    {
                        Vector2 vector2 = new Vector2(x, y);
                        if (Singleton <CBattleSystem> .get_instance().FightForm.GetSignalPanel().CheckSignalPositionValid(vector2))
                        {
                            this.m_signalInUIEffect = Singleton <CUIParticleSystem> .get_instance().AddParticle(this.m_signalInfo.szRealEffect, (float)this.m_signalInfo.bTime, vector2);
                        }
                    }
                }
            }
            if (this.bUseCfgSound)
            {
                string text = StringHelper.UTF8BytesToString(ref this.m_signalInfo.szSound);
                if (!string.IsNullOrEmpty(text))
                {
                    Singleton <CSoundManager> .GetInstance().PlayBattleSound2D(text);
                }
            }
        }
Beispiel #14
0
        public void ExecCommand(uint playerID, uint heroID, int signalID, int worldPositionX, int worldPositionY, int worldPositionZ, byte bAlice = 0, byte elementType = 0, uint targetObjID = 0, uint targetHeroID = 0)
        {
            if (this.m_useSignalButton && (this.m_formScript != null))
            {
                uint          cooldownTime = 0x1388;
                ResSignalInfo dataByKey    = GameDataMgr.signalDatabin.GetDataByKey(signalID);
                if (dataByKey == null)
                {
                    DebugHelper.Assert(dataByKey != null, "ExecCommand signalInfo is null, check out...");
                }
                else
                {
                    if (dataByKey != null)
                    {
                        cooldownTime = (uint)(dataByKey.bCooldownTime * 0x3e8);
                    }
                    if (Singleton <BattleLogic> .GetInstance().GetCurLvelContext().iLevelID == CBattleGuideManager.GuideLevelID5v5)
                    {
                        cooldownTime = 0x7d0;
                    }
                    ulong logicFrameTick = Singleton <FrameSynchr> .GetInstance().LogicFrameTick;

                    CPlayerSignalCooldown cooldown = null;
                    this.m_playerSignalCooldowns.TryGetValue(playerID, out cooldown);
                    if (cooldown != null)
                    {
                        if (((uint)(logicFrameTick - cooldown.m_lastSignalExecuteTimestamp)) < cooldown.m_cooldownTime)
                        {
                            return;
                        }
                        cooldown.m_lastSignalExecuteTimestamp = logicFrameTick;
                        cooldown.m_cooldownTime = cooldownTime;
                    }
                    else
                    {
                        cooldown = new CPlayerSignalCooldown(logicFrameTick, cooldownTime);
                        this.m_playerSignalCooldowns.Add(playerID, cooldown);
                    }
                    Player hostPlayer = Singleton <GamePlayerCenter> .GetInstance().GetHostPlayer();

                    Player player = Singleton <GamePlayerCenter> .GetInstance().GetPlayer(playerID);

                    if (((hostPlayer != null) && (player != null)) && (hostPlayer.PlayerCamp == player.PlayerCamp))
                    {
                        uint num4;
                        if ((hostPlayer == player) && (this.m_signalButtons != null))
                        {
                            for (int i = 0; i < this.m_signalButtons.Length; i++)
                            {
                                if (this.m_signalButtons[i] != null)
                                {
                                    this.m_signalButtons[i].StartCooldown(cooldownTime);
                                }
                            }
                        }
                        bool bSmall = Singleton <CBattleSystem> .instance.GetMinimapSys().CurMapType() == MinimapSys.EMapType.Mini;

                        uint num5 = 0;
                        if (targetObjID == 0)
                        {
                            num4 = playerID;
                            num5 = heroID;
                        }
                        else
                        {
                            num4 = targetObjID;
                            num5 = targetHeroID;
                        }
                        this.PlaySignalTipsSound(elementType, bAlice, targetHeroID);
                        bool    bFollow      = elementType == 3;
                        bool    bUseCfgSound = elementType == 0;
                        CSignal item         = new CSignal(num4, signalID, num5, worldPositionX, worldPositionY, worldPositionZ, !bSmall ? this.m_signalInUIContainer_big : this.m_signalInUIContainer_small, this.m_signalSrcHeroNameContainer, bSmall, bFollow, bUseCfgSound, (MinimapSys.ElementType)elementType);
                        item.Initialize(this.m_formScript);
                        this.m_signals.Add(item);
                        CSignalTips tips = new CSignalTips(signalID, heroID, hostPlayer == player, bAlice, elementType, targetHeroID);
                        this.Add_SignalTip(tips);
                    }
                }
            }
        }
Beispiel #15
0
    private void Show(CSignalTips data, CUIFormScript formScript)
    {
        if (data == null)
        {
            return;
        }
        this.signal_node.CustomSetActive(true);
        this.inbattlemsg_node.CustomSetActive(false);
        ResHeroCfgInfo dataByKey = GameDataMgr.heroDatabin.GetDataByKey(data.m_heroID);

        if (dataByKey == null)
        {
            return;
        }
        this.SetHeroHeadIcon(this.leftIcon.gameObject.GetComponent <Image>(), formScript, dataByKey);
        string text = (!data.m_isHostPlayer) ? CSignalTipShower.S_Bg_Blue : CSignalTipShower.S_Bg_Green;

        if (this.bg_icon == null)
        {
            return;
        }
        Image component = this.bg_icon.GetComponent <Image>();

        if (component != null && !string.IsNullOrEmpty(text))
        {
            component.SetSprite(text, formScript, true, false, false, false);
        }
        ResSignalInfo dataByKey2 = GameDataMgr.signalDatabin.GetDataByKey((long)data.m_signalID);

        if (dataByKey2 == null)
        {
            return;
        }
        this.signal_icon.CustomSetActive(true);
        if (this.signal_icon == null)
        {
            return;
        }
        Image component2 = this.signal_icon.GetComponent <Image>();

        if (component2 != null)
        {
            component2.SetSprite(dataByKey2.szUIIcon, formScript, true, false, false, false);
        }
        if (this.signal_txt != null)
        {
            this.signal_txt.text = dataByKey2.szText;
        }
        if (data.m_elementType >= 1)
        {
            Image component3 = this.rightIcon.GetComponent <Image>();
            if (component3 == null)
            {
                return;
            }
            switch (data.m_elementType)
            {
            case 1:
                component3.SetSprite(CSignalTipShower.S_kn_Tower_Icon, formScript, true, false, false, false);
                break;

            case 2:
                component3.SetSprite(CSignalTipShower.S_Base_blue_Icon, formScript, true, false, false, false);
                break;

            case 3:
            {
                ResHeroCfgInfo dataByKey3 = GameDataMgr.heroDatabin.GetDataByKey(data.m_targetHeroID);
                if (dataByKey3 == null)
                {
                    return;
                }
                this.SetHeroHeadIcon(component3, formScript, dataByKey3);
                break;
            }

            case 4:
                component3.SetSprite(CSignalTipShower.S_Dragon_big_Icon, formScript, true, false, false, false);
                break;

            case 5:
                component3.SetSprite(CSignalTipShower.S_kn_dragon_Icon, formScript, true, false, false, false);
                break;

            case 6:
                component3.SetSprite(CSignalTipShower.S_kn_dragon_Icon, formScript, true, false, false, false);
                break;

            default:
                return;
            }
            this.rightIcon.CustomSetActive(true);
        }
        else
        {
            this.rightIcon.CustomSetActive(false);
        }
    }