-
Notifications
You must be signed in to change notification settings - Fork 0
/
PlanetAdder.cs
84 lines (66 loc) · 2.75 KB
/
PlanetAdder.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
using System;
using System.Collections.Generic;
using HarmonyLib;
using Database;
using PlanetAdder.FileHandling;
using PlanetAdder.Logging;
namespace PlanetAdder
{
[HarmonyPatch(typeof(StarmapScreen), "LoadPlanets")]
public static class LoadsPlanets_Patch
{
private static LoggingFileHandler loggingFileHandler = null;
private static ILogger logger = null;
private static FileHandler fileHandler = null;
private static void InitializeClasses()
{
// Create Logging File Handler
loggingFileHandler = FileHandlerFactory.CreateLoggingFileHandler();
// Create Logger
logger = null;
if (loggingFileHandler.IsLoggingEnabledFlag())
{
logger = LoggerFactory.CreateLogger();
}
else // Create fake logger to disable any logging
{
logger = LoggerFactory.CreateFakeLogger();
}
// Create Planet Config File Handler
fileHandler = FileHandlerFactory.CreateFileHandler(logger);
}
// LoadPlanets method prefix
private static void Prefix()
{
InitializeClasses();
logger.Begin();
// Load the configuration file and get the planets to add
List<Tuple<SpaceDestinationType, int, int>> planets = fileHandler.LoadConfig();
if (planets.Count > 0)
{
logger.PrePatch(planets);
// Add planets to destinations
foreach (Tuple<SpaceDestinationType, int, int> planet in planets)
{
// Planets are numbered from 0
int uniqueId = Game.Instance.spacecraftManager.destinations.Count;
// Create the destination using the type and row from the config
SpaceDestination spaceDestination = new SpaceDestination(uniqueId, planet.first.Id, planet.second);
// Set the starting orbit percentage (position in the row)
spaceDestination.startingOrbitPercentage = (float)Decimal.Divide(planet.third, 10);
// Add the destination
Game.Instance.spacecraftManager.destinations.Add(spaceDestination);
logger.Planet(spaceDestination.type.ToString());
#if DEBUG
// Complete research on the added planet
Game.Instance.spacecraftManager.destinationAnalysisScores.Add(uniqueId, 100);
#endif
}
logger.PostPatch();
// Rename config file now that the planets have been created
fileHandler.RenameConfigFile();
logger.Complete();
}
}
}
}