Пример #1
0
        private PlayerRadiationData GetPlayerData(BasePlayer player)
        {
            PlayerRadiationData data = _playerRadiation[player.userID];

            if (data == null)
            {
                data = new PlayerRadiationData();
                _playerRadiation[player.userID] = data;
            }

            return(data);
        }
Пример #2
0
        private Hash <string, object> GetPanel(BasePlayer player)
        {
            Panel     panel = _pluginConfig.Panel;
            PanelText text  = panel.Text;

            if (text != null)
            {
                PlayerRadiationData data = GetPlayerData(player);
                float radAmount          = data.RadAmount;
                float radProtection      = data.ProtectionAmount;

                text.Text = string.Format(_textFormat, radProtection, radAmount);
            }

            return(panel.ToHash());
        }
Пример #3
0
        private IEnumerator HandleUpdatePlayerRadiation()
        {
            for (int i = 0; i < BasePlayer.activePlayerList.Count; i++)
            {
                BasePlayer          player = BasePlayer.activePlayerList[i];
                PlayerRadiationData data   = GetPlayerData(player);
                float prevRad  = data.RadAmount;
                float prevProc = data.ProtectionAmount;
                UpdatePlayerRadiation(player, data);

                yield return(null);

                if (prevRad == data.RadAmount && prevProc == data.ProtectionAmount)
                {
                    continue;
                }

                MagicPanel?.Call("UpdatePanel", player, Name, (int)UpdateEnum.Text);
            }
        }
Пример #4
0
        private void UpdatePlayerRadiation(BasePlayer player, PlayerRadiationData data)
        {
            float radAmount = 0f;

            if (player.triggers != null)
            {
                foreach (TriggerBase trigger in player.triggers)
                {
                    TriggerRadiation radiation = trigger as TriggerRadiation;
                    if (radiation != null)
                    {
                        radAmount = Mathf.Max(radAmount, radiation.GetRadiation(player.transform.position, 0));
                    }
                }
            }

            float radProtection = player.RadiationProtection();

            data.RadAmount        = radAmount;
            data.ProtectionAmount = radProtection;
        }