public async Task GenerateSchedule_AlreadyHasSets_ClearsOldSets() { var(season, participants) = SeasonUtility.CreateSeason(dbContext, 2); var oldSet = SetUtility.Create(dbContext, participants[0].ID, participants[1].ID, season.LeagueID); season.Sets = new HashSet <Set> { oldSet }; var newSet = new Set { LeagueID = season.LeagueID, SeasonID = season.ID, DueDate = DateTime.Now.AddDays(1), Player1ID = participants[0].ID, Player2ID = participants[1].ID, }; testObj.generatedSets = new HashSet <Set> { newSet }; await testObj.GenerateScheduleAsync(season, dbContext); Assert.AreEqual(1, season.Sets.Count); }
public static float GetCurrentWinterMovementDifficultyOffset(int tile, VehicleDef vehicleDef, int?ticksAbs = null, StringBuilder explanation = null) { if (ticksAbs == null) { ticksAbs = new int?(GenTicks.TicksAbs); } Vector2 vector = Find.WorldGrid.LongLatOf(tile); SeasonUtility.GetSeason(GenDate.YearPercent(ticksAbs.Value, vector.x), vector.y, out float num, out float num2, out float num3, out float num4, out float num5, out float num6); float num7 = num4 + num6; num7 *= Mathf.InverseLerp(MaxTempForWinterOffset, 0f, GenTemperature.GetTemperatureFromSeasonAtTile(ticksAbs.Value, tile)); if (num7 > 0.01f) { float num8 = WinterMovementDifficultyOffset * num7; if (explanation != null) { explanation.AppendLine(); explanation.Append("Winter".Translate()); if (num7 < 0.999f) { explanation.Append(" (" + num7.ToStringPercent("F0") + ")"); } explanation.Append(": "); explanation.Append(num8.ToStringWithSign("0.#")); //REDO - Add translated text for winter path cost multiplier } return(num8 * vehicleDef.properties.winterPathCostMultiplier); } return(0f); }
public async Task UpdateStandings_Ties_NoTiedStandings(params int[] seasonPoints) { MockTieBreak(arg => { var points = 1; foreach (var entry in arg) { entry.Key.TieBreakerPoints = points; ++points; } }); var season = SeasonUtility.CreateSeason(dbContext, 4).season; dbContext.UpdateRange(season.Participants); for (int i = 0; i < seasonPoints.Length; i++) { season.Participants[i].Points = seasonPoints[i]; } dbContext.SaveChanges(); var set = SetUtility.Create(dbContext, season.Participants[0], season.Participants[1], season.LeagueID); await testObj.UpdateStandings(set.ID); season.Participants.Sort(); for (var i = 0; i < season.Participants.Count; i++) { Assert.AreEqual(4 - i, season.Participants[i].Standing); } }
public static int CalculatedCostAt(int tile, bool perceivedStatic, float yearPercent = -1f) { int num = 0; Tile tile2 = Find.WorldGrid[tile]; if (tile2.biome.impassable) { return(1000000); } if (yearPercent < 0.0) { yearPercent = (float)((float)WorldPathGrid.DayOfYearAt0Long / 60.0); } float yearPct = yearPercent; Vector2 vector = Find.WorldGrid.LongLatOf(tile); float num2 = default(float); float num3 = default(float); float num4 = default(float); float num5 = default(float); float num6 = default(float); float num7 = default(float); SeasonUtility.GetSeason(yearPct, vector.y, out num2, out num3, out num4, out num5, out num6, out num7); num += Mathf.RoundToInt((float)tile2.biome.pathCost_spring * num2 + (float)tile2.biome.pathCost_summer * num3 + (float)tile2.biome.pathCost_fall * num4 + (float)tile2.biome.pathCost_winter * num5 + (float)tile2.biome.pathCost_summer * num6 + (float)tile2.biome.pathCost_winter * num7); if (tile2.hilliness == Hilliness.Impassable) { return(1000000); } return(num + WorldPathGrid.CostFromTileHilliness(tile2.hilliness)); }
public static bool GetReportedSeason(ref Season __result, float yearPct, float latitude) { int year1000 = (int)(yearPct * 1000f); if (!yearLatitudeSeason.TryGetValue(year1000, out Dictionary <float, Season> latitudeSeason)) { latitudeSeason = new Dictionary <float, Season>(); yearLatitudeSeason.Add(year1000, latitudeSeason); } if (!latitudeSeason.TryGetValue(latitude, out Season season)) { SeasonUtility.GetSeason(yearPct, latitude, out float spring, out float summer, out float fall, out float winter, out float permanentSummer, out float permanentWinter); if (permanentSummer == 1f) { season = Season.PermanentSummer; } if (permanentWinter == 1f) { season = Season.PermanentWinter; } if (permanentSummer != 1f && permanentWinter != 1f) { season = GenMath.MaxBy(Season.Spring, spring, Season.Summer, summer, Season.Fall, fall, Season.Winter, winter); } latitudeSeason.Add(latitude, season); } __result = season; return(false); }
public static float GetCurrentWinterMovementDifficultyOffset(int tile, int?ticksAbs = null, StringBuilder explanation = null) { if (!ticksAbs.HasValue) { ticksAbs = GenTicks.TicksAbs; } Vector2 vector = Find.WorldGrid.LongLatOf(tile); SeasonUtility.GetSeason(GenDate.YearPercent(ticksAbs.Value, vector.x), vector.y, out var _, out var _, out var _, out var winter, out var _, out var permanentWinter); float num = winter + permanentWinter; num *= Mathf.InverseLerp(5f, 0f, GenTemperature.GetTemperatureFromSeasonAtTile(ticksAbs.Value, tile)); if (num > 0.01f) { float num2 = 2f * num; if (explanation != null) { explanation.AppendLine(); explanation.Append("Winter".Translate()); if (num < 0.999f) { explanation.Append(" (" + num.ToStringPercent("F0") + ")"); } explanation.Append(": "); explanation.Append(num2.ToStringWithSign("0.#")); } return(num2); } return(0f); }
public async Task Start_Valid_Created() { var season = SeasonUtility.CreateSeason(dbContext, 2).season; var result = await testObj.Start(season.ID); ControllerUtility.AssertStatusCode(result, HttpStatusCode.Created); }
public void DebugLogTemps() { StringBuilder stringBuilder = new StringBuilder(); float num; if (Find.CurrentMap != null) { Vector2 vector = Find.WorldGrid.LongLatOf(Find.CurrentMap.Tile); num = vector.y; } else { num = 0f; } float num2 = num; stringBuilder.AppendLine("Latitude " + num2); stringBuilder.AppendLine("-----Temperature for each hour this day------"); stringBuilder.AppendLine("Hour Temp SunEffect"); int num3 = Find.TickManager.TicksAbs - Find.TickManager.TicksAbs % 60000; for (int i = 0; i < 24; i++) { int absTick = num3 + i * 2500; stringBuilder.Append(i.ToString().PadRight(5)); stringBuilder.Append(Find.World.tileTemperatures.OutdoorTemperatureAt(map.Tile, absTick).ToString("F2").PadRight(8)); stringBuilder.Append(GenTemperature.OffsetFromSunCycle(absTick, map.Tile).ToString("F2")); stringBuilder.AppendLine(); } stringBuilder.AppendLine(); stringBuilder.AppendLine("-----Temperature for each twelfth this year------"); for (int j = 0; j < 12; j++) { Twelfth twelfth = (Twelfth)j; float num4 = Find.World.tileTemperatures.AverageTemperatureForTwelfth(map.Tile, twelfth); stringBuilder.AppendLine(twelfth.GetQuadrum() + "/" + SeasonUtility.GetReportedSeason(twelfth.GetMiddleYearPct(), num2) + " - " + twelfth.ToString() + " " + num4.ToString("F2")); } stringBuilder.AppendLine(); stringBuilder.AppendLine("-----Temperature for each day this year------"); stringBuilder.AppendLine("Tile avg: " + map.TileInfo.temperature + "°C"); stringBuilder.AppendLine("Seasonal shift: " + GenTemperature.SeasonalShiftAmplitudeAt(map.Tile)); stringBuilder.AppendLine("Equatorial distance: " + Find.WorldGrid.DistanceFromEquatorNormalized(map.Tile)); stringBuilder.AppendLine(); stringBuilder.AppendLine("Day Lo Hi OffsetFromSeason RandomDailyVariation"); for (int k = 0; k < 60; k++) { int absTick2 = (int)((float)(k * 60000) + 15000f); int absTick3 = (int)((float)(k * 60000) + 45000f); stringBuilder.Append(k.ToString().PadRight(8)); stringBuilder.Append(Find.World.tileTemperatures.OutdoorTemperatureAt(map.Tile, absTick2).ToString("F2").PadRight(11)); stringBuilder.Append(Find.World.tileTemperatures.OutdoorTemperatureAt(map.Tile, absTick3).ToString("F2").PadRight(11)); stringBuilder.Append(GenTemperature.OffsetFromSeasonCycle(absTick3, map.Tile).ToString("F2").PadRight(11)); stringBuilder.Append(Find.World.tileTemperatures.OffsetFromDailyRandomVariation(map.Tile, absTick3).ToString("F2")); stringBuilder.AppendLine(); } Log.Message(stringBuilder.ToString()); }
public void GenerateSchedule_NotEnoughParticipants_Exception(int userCount) { var league = LeagueUtility.CreateLeague(dbContext); LeagueUtility.AddUsersToLeague(league, userCount, dbContext); var season = SeasonUtility.CreateSeason(dbContext, userCount).season; Assert.ThrowsAsync <InvalidOperationException>(() => testObj.GenerateScheduleAsync(season, dbContext)); }
public async Task GenerateSchedule_Valid_CreateSets(int userCount, int setCount) { var season = SeasonUtility.CreateSeason(dbContext, userCount).season; season.Sets = new HashSet <Set>(); await testObj.GenerateScheduleAsync(season, dbContext); Assert.AreEqual(setCount, season.Sets.Count); }
public async Task Start_SeasonExists_SeasonIsActive() { var season = SeasonUtility.CreateSeason(dbContext, 2).season; seasonService.GenerateSchedule(season.ID).Returns(season); await testObj.Start(season.ID); Assert.IsTrue(season.IsActive); }
public async Task Participants_Valid_Ok(int participantsCount) { var season = SeasonUtility.CreateSeason(dbContext, participantsCount).season; var result = await testObj.Participants(season.ID); var resultObj = result.GetObject <IEnumerable <LeagueUser> >(); ControllerUtility.AssertStatusCode(result, HttpStatusCode.OK); Assert.AreEqual(participantsCount, resultObj.Count()); }
public async Task Sets_NoSets_Ok() { var season = SeasonUtility.CreateSeason(dbContext, 2).season; var result = await testObj.Sets(season.ID); var resultObj = result.GetObject <IEnumerable <Set> >(); ControllerUtility.AssertStatusCode(result, HttpStatusCode.OK); Assert.IsNotNull(resultObj); }
public async Task Get_Valid_Ok() { var season = SeasonUtility.CreateSeason(dbContext, 2).season; var result = await testObj.Get(season.ID); var resultObj = result.GetObject <Season>(); ControllerUtility.AssertStatusCode(result, HttpStatusCode.OK); Assert.IsNotNull(resultObj.Participants); }
public async Task Sets_HasSets_Ok() { var season = SeasonUtility.CreateSeason(dbContext, 2).season; var sets = SeasonUtility.CreateSets(dbContext, season); var result = await testObj.Sets(season.ID); var resultObj = result.GetObject <HashSet <Set> >(); ControllerUtility.AssertStatusCode(result, HttpStatusCode.OK); Assert.AreEqual(sets.Count, resultObj.Count); }
internal static void Postfix(ref float __result, Map ___map, ThingDef plant) { if (!plant.HasModExtension <DM_ModExtension>()) { return; } DM_ModExtension ext = plant.GetModExtension <DM_ModExtension>(); if (SeasonUtility.GetPreviousSeason(ext.season) == GenLocalDate.Season(___map) && ext.spawnInPreviousSeason) { __result = (ext.commonality / 2); return; } __result = ext.commonality; }
public async Task GenerateSchedule_Valid_EveryoneFightsEveryone(int userCount) { var season = SeasonUtility.CreateSeason(dbContext, userCount).season; season.Sets = new HashSet <Set>(); await testObj.GenerateScheduleAsync(season, dbContext); Assert.IsTrue(season.Participants.All(slu => { var fightCount = season.Sets.Where(s => s .IsPlaying(slu.LeagueUserID)) .Select(s => s.GetOpponentID(slu.LeagueUserID)) .Distinct() .Count(); return(fightCount == userCount - 1); })); }
internal static void Postfix(IntVec3 c, Map ___map, List <ThingDef> outPlants) { List <ThingDef> thingDefs = DefDatabase <ThingDef> .AllDefsListForReading; foreach (ThingDef thingDef in thingDefs.Where(x => x.HasModExtension <DM_ModExtension>())) { outPlants.Remove(thingDef); DM_ModExtension ext = thingDef.GetModExtension <DM_ModExtension>(); if (!thingDef.CanEverPlantAt_NewTemp(c, ___map)) { return; } if (GenLocalDate.Season(___map) == ext.season || (SeasonUtility.GetPreviousSeason(ext.season) == GenLocalDate.Season(___map) && ext.spawnInPreviousSeason) || (DMSeasonUtility.GetNextSeason(ext.season) == GenLocalDate.Season(___map) && ext.spawnInNextSeason)) { outPlants.Add(thingDef); } } }
public static float GetCurrentWinterMovementDifficultyOffset(int tile, int?ticksAbs = null, StringBuilder explanation = null) { if (ticksAbs == null) { ticksAbs = new int?(GenTicks.TicksAbs); } Vector2 vector = Find.WorldGrid.LongLatOf(tile); float yearPct = GenDate.YearPercent((long)ticksAbs.Value, vector.x); float num; float num2; float num3; float num4; float num5; float num6; SeasonUtility.GetSeason(yearPct, vector.y, out num, out num2, out num3, out num4, out num5, out num6); float num7 = num4 + num6; num7 *= Mathf.InverseLerp(5f, 0f, GenTemperature.GetTemperatureFromSeasonAtTile(ticksAbs.Value, tile)); float result; if (num7 > 0.01f) { float num8 = 2f * num7; if (explanation != null) { explanation.AppendLine(); explanation.Append("Winter".Translate()); if (num7 < 0.999f) { explanation.Append(" (" + num7.ToStringPercent("F0") + ")"); } explanation.Append(": "); explanation.Append(num8.ToStringWithSign("0.#")); } result = num8; } else { result = 0f; } return(result); }