Exemple #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);
                    }
                }
            }
        }
Exemple #2
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);
                    }
                }
            }
        }