private PlayerRadiationData GetPlayerData(BasePlayer player) { PlayerRadiationData data = _playerRadiation[player.userID]; if (data == null) { data = new PlayerRadiationData(); _playerRadiation[player.userID] = data; } return(data); }
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()); }
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); } }
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; }