private static Texture2D GetStatHazardConditionLevelClient(SurvivalStatHazardLevel level, Texture2D[] orderedTextures) { var defaultBackground = orderedTextures[0]; switch (level) { case SurvivalStatHazardLevel.Lesser: return(orderedTextures[0]); case SurvivalStatHazardLevel.Strong: return(orderedTextures[1]); case SurvivalStatHazardLevel.Max: return(orderedTextures[2]); case SurvivalStatHazardLevel.Undefined: Debug.Fail("Undefined value can't be assigned."); return(defaultBackground); default: Debug.Fail($"Value {level} is unknown."); return(defaultBackground); } }
public SurvivalStatHazardEffect(SurvivalStatType type, SurvivalStatHazardLevel level) { Type = type; Level = level; Rules = CalcRules(); }
public void Init(SurvivalStatType type, SurvivalStatHazardLevel level) { Type = type; Level = level; SelectIcon(type); HighlightLevel(level); }
public void Update_StatNearKeyPoint_RaiseEventWithCorrectValues() { // ARRANGE const SurvivalStatType STAT_TYPE = SurvivalStatType.Satiety; const int MIN_STAT_VALUE = 0; const int MAX_STAT_VALUE = 1; const int START_STAT_VALUE = MAX_STAT_VALUE; const int LESSER_SURVIVAL_STAT_KEYPOINT = 0; const SurvivalStatHazardLevel LESSER_SURVIVAL_STAT_KEYPOINT_TYPE = SurvivalStatHazardLevel.Lesser; const int STAT_RATE = 1; const int EXPECTED_SURVIVAL_STAT_KEYPOINT = LESSER_SURVIVAL_STAT_KEYPOINT; const int FAKE_ROLL_SURVIVAL_RESULT = 6; var survivalRandomSourceMock = new Mock <ISurvivalRandomSource>(); survivalRandomSourceMock.Setup(x => x.RollSurvival(It.IsAny <SurvivalStat>())) .Returns(FAKE_ROLL_SURVIVAL_RESULT); var survivalRandomSource = survivalRandomSourceMock.Object; var survivalStats = new SurvivalStat[] { new SurvivalStat(START_STAT_VALUE, MIN_STAT_VALUE, MAX_STAT_VALUE) { Type = STAT_TYPE, Rate = STAT_RATE, KeyPoints = new[] { new SurvivalStatKeyPoint( LESSER_SURVIVAL_STAT_KEYPOINT_TYPE, LESSER_SURVIVAL_STAT_KEYPOINT) } } }; var survivalData = new HumanSurvivalData(_personScheme, survivalStats, survivalRandomSource); // ACT using (var monitor = survivalData.Monitor()) { survivalData.Update(); // ASSERT monitor.Should().Raise(nameof(ISurvivalData.StatCrossKeyValue)) .WithArgs <SurvivalStatChangedEventArgs>(args => args.Stat.Type == STAT_TYPE && args.KeyPoints.FirstOrDefault().Level == LESSER_SURVIVAL_STAT_KEYPOINT_TYPE && args.KeyPoints.FirstOrDefault().Value == EXPECTED_SURVIVAL_STAT_KEYPOINT); } }
/// <summary> /// Конструктор. /// </summary> /// <param name="start">Начальное значение сегмента в долях от 0.0f до 1.0f.</param> /// <param name="end">Конечное значение сегмента в долях от 0.0f до 1.0f.</param> /// <param name="level">Уровень влияния на характеристику.</param> public SurvivalStatKeySegment(float start, float end, SurvivalStatHazardLevel level) { if (start > end) { throw new ArgumentException("Начальная точка должна быть меньше или равно конечной точки."); } Start = start; End = end; Level = level; }
public SurvivalStatHazardEffect(SurvivalStatType type, SurvivalStatHazardLevel level, [NotNull] ISurvivalRandomSource survivalRandomSource) { Type = type; Level = level; _survivalRandomSource = survivalRandomSource ?? throw new ArgumentNullException(nameof(survivalRandomSource)); _rules = CalcRules(); }
public void Init(SurvivalStatType type, SurvivalStatHazardLevel level) { var currentLanguage = _uiSettingService.CurrentLanguage; Type = type; Level = level; SelectIcon(type); HighlightLevel(level); if (UiElementTooltip != null) { var effectText = GetEffectText(currentLanguage); UiElementTooltip.text = effectText; } }
private static void AddKeyPointFromScheme( SurvivalStatHazardLevel segmentLevel, PersonSurvivalStatKeypointLevel schemeSegmentLevel, IPersonSurvivalStatKeySegmentSubScheme[] keyPoints, List <SurvivalStatKeySegment> keyPointList) { var schemeKeySegment = GetKeyPointSchemeValue(schemeSegmentLevel, keyPoints); if (schemeKeySegment == null) { return; } var keySegment = new SurvivalStatKeySegment(schemeKeySegment.Start, schemeKeySegment.End, segmentLevel); keyPointList.Add(keySegment); }
private void HighlightLevel(SurvivalStatHazardLevel level) { switch (level) { case SurvivalStatHazardLevel.Lesser: Background.color = Color.white; break; case SurvivalStatHazardLevel.Strong: Background.color = new Color(0.3f, 0, 0, 1); break; case SurvivalStatHazardLevel.Max: Background.color = new Color(1f, 0, 0, 1); break; default: throw new InvalidOperationException(); } }
private void HighlightLevel(SurvivalStatHazardLevel level) { switch (level) { case SurvivalStatHazardLevel.Lesser: Background.color = new Color32(0xff, 0xcc, 0x5e, 255); break; case SurvivalStatHazardLevel.Strong: Background.color = new Color32(0xff, 0x7c, 0x24, 255); break; case SurvivalStatHazardLevel.Max: Background.color = new Color32(0xf3, 0x28, 0x13, 255); break; default: throw new InvalidOperationException(); } }
private static void GetEffectStatAndLevelByName(string effectName, out SurvivalStatType stat, out SurvivalStatHazardLevel level) { switch (effectName) { case "нет": level = SurvivalStatHazardLevel.Undefined; stat = SurvivalStatType.Undefined; break; case "Слабый голод": level = SurvivalStatHazardLevel.Lesser; stat = SurvivalStatType.Satiety; break; case "Голод": level = SurvivalStatHazardLevel.Strong; stat = SurvivalStatType.Satiety; break; case "Голодание": level = SurvivalStatHazardLevel.Max; stat = SurvivalStatType.Satiety; break; case "Слабая жажда": level = SurvivalStatHazardLevel.Lesser; stat = SurvivalStatType.Hydration; break; case "Жажда": level = SurvivalStatHazardLevel.Strong; stat = SurvivalStatType.Hydration; break; case "Обезвоживание": level = SurvivalStatHazardLevel.Max; stat = SurvivalStatType.Hydration; break; case "Слабая токсикация": level = SurvivalStatHazardLevel.Lesser; stat = SurvivalStatType.Intoxication; break; case "Сильная токсикация": level = SurvivalStatHazardLevel.Strong; stat = SurvivalStatType.Intoxication; break; case "Смертельная токсикация": level = SurvivalStatHazardLevel.Max; stat = SurvivalStatType.Intoxication; break; case "Слабая рана": level = SurvivalStatHazardLevel.Lesser; stat = SurvivalStatType.Health; break; case "Сильная рана": level = SurvivalStatHazardLevel.Strong; stat = SurvivalStatType.Health; break; case "Смертельная рана": level = SurvivalStatHazardLevel.Max; stat = SurvivalStatType.Health; break; default: throw new NotSupportedException("Неизветный тип ожидаемого эффекта."); } }
public SurvivalStatKeyPoint(SurvivalStatHazardLevel level, int value) { Level = level; Value = value; }