Skip to content

Commit 0f6095f

Browse files
authored
MenuScenes
MenuScenes
2 parents 43ab03e + cab23b9 commit 0f6095f

31 files changed

+1947
-75
lines changed

MenuScenes/Changelog.txt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
**v0.1.0**
2+
3+
- First Beta Release
Binary file not shown.
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
{
2+
"NAME": "<b><color=#9B59B6>Sigma Replacements: MenuScenes</color></b>",
3+
"URL": "https://raw.githubusercontent.com/Sigma88/Sigma-Replacements/master/MenuScenes/GameData/Sigma/Replacements/MenuScenes/Plugins/SigmaReplacementsMenuScenes.version",
4+
"DOWNLOAD": "https://www.github.com/Sigma88/Sigma-Replacements/releases",
5+
"CHANGE_LOG_URL": "https://raw.githubusercontent.com/Sigma88/Sigma-Replacements/master/MenuScenes/Changelog.txt",
6+
"GITHUB":
7+
{
8+
"USERNAME": "Sigma88",
9+
"REPOSITORY": "Sigma-Replacements",
10+
"ALLOW_PRE_RELEASE": false
11+
},
12+
"VERSION":
13+
{
14+
"MAJOR": 0,
15+
"MINOR": 1,
16+
"PATCH": 0,
17+
"BUILD": 0
18+
},
19+
"KSP_VERSION":
20+
{
21+
"MAJOR": 1,
22+
"MINOR": 3,
23+
"PATCH": 1
24+
}
25+
}

MenuScenes/License.txt

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
Sigma Replacements: MenuSenes by Sigma88 is released under the following license:
2+
3+
4+
All Rights Reserved
5+
6+
7+
For more info visit the GitHub Repository:
8+
https://github.com/Sigma88/Sigma-Replacements

MenuScenes/README.md

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
# Sigma Replacements: MenuScenes
2+
3+
4+
**Customizeable Main Menu Scenes**
5+
6+
7+
Latest Release: https://github.com/Sigma88/Sigma-Replacements/releases
8+
9+
Dev version: https://github.com/Sigma88/Sigma-Replacements/tree/MenuScenes
59 KB
Binary file not shown.

[Source]/SigmaReplacements/Common/CrewMember.cs

Lines changed: 12 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -30,27 +30,23 @@ public CrewMember(Type type, Roster rosterStatus, string name, Gender gender, st
3030
CrewMember(ProtoCrewMember copyOf) : base(copyOf) { }
3131
CrewMember(Type type, string name) : base(type, name) { }
3232
CrewMember(Game.Modes mode, ConfigNode node, Type crewType = Type.Crew) : base(mode, node, crewType) { }
33-
}
3433

35-
internal static class CrewMemberExtensions
36-
{
37-
internal static void Load(this CrewMember[] array, ConfigNode node, int index)
34+
public CrewMember Load(ConfigNode node)
3835
{
39-
CrewMember kerbal = array[index];
4036
Info stats = new Info(node.GetNode("Stats") ?? new ConfigNode(), new ConfigNode());
4137

42-
array[index] = new CrewMember
38+
return new CrewMember
4339
(
44-
(int?)stats?.status > 3 ? 0 : (Type?)(int?)stats?.status ?? kerbal.type,
45-
(int?)stats?.status > 3 ? (Roster)((int)stats.status - 4) : kerbal.rosterStatus,
46-
!string.IsNullOrEmpty(stats?.name) ? stats.name : kerbal.name,
47-
stats?.gender ?? kerbal.gender,
48-
stats?.trait?.Length > 0 && !string.IsNullOrEmpty(stats.trait[0]) ? stats.trait[0] : kerbal.trait,
49-
stats?.veteran ?? kerbal.veteran,
50-
stats?.isBadass ?? kerbal.isBadass,
51-
stats?.courage ?? kerbal.courage,
52-
stats?.stupidity ?? kerbal.stupidity,
53-
stats?.experienceLevel ?? kerbal.experienceLevel
40+
(int?)stats?.status > 3 ? 0 : (Type?)(int?)stats?.status ?? type,
41+
(int?)stats?.status > 3 ? (Roster)((int)stats.status - 4) : rosterStatus,
42+
!string.IsNullOrEmpty(stats?.name) ? stats.name : name,
43+
stats?.gender ?? gender,
44+
stats?.trait?.Length > 0 && !string.IsNullOrEmpty(stats.trait[0]) ? stats.trait[0] : trait,
45+
stats?.veteran ?? veteran,
46+
stats?.isBadass ?? isBadass,
47+
stats?.courage ?? courage,
48+
stats?.stupidity ?? stupidity,
49+
stats?.experienceLevel ?? experienceLevel
5450
);
5551
}
5652
}

[Source]/SigmaReplacements/Common/UIKerbals.cs

Lines changed: 4 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -6,24 +6,18 @@
66

77
namespace SigmaReplacements
88
{
9-
internal class UIKerbals : MonoBehaviour
9+
internal class UIKerbals
1010
{
11-
// Main Menu
12-
static CrewMember mun1 = new CrewMember(Type.Crew, Roster.Assigned, "Bob Kerman", Gender.Male, "Scientist", true, false, 0.3f, 0.1f, 0);
13-
static CrewMember orbit1 = new CrewMember(Type.Crew, Roster.Assigned, "Bill Kerman", Gender.Male, "Engineer", true, false, 0.5f, 0.8f, 0);
14-
static CrewMember orbit2 = new CrewMember(Type.Crew, Roster.Assigned, "Bob Kerman", Gender.Male, "Scientist", true, false, 0.3f, 0.1f, 0);
15-
static CrewMember orbit3 = new CrewMember(Type.Crew, Roster.Assigned, "Jebediah Kerman", Gender.Male, "Pilot", true, true, 0.5f, 0.5f, 0);
16-
static CrewMember orbit4 = new CrewMember(Type.Crew, Roster.Assigned, "Valentina Kerman", Gender.Female, "Pilot", true, true, 0.55f, 0.4f, 0);
1711
// Instructors
1812
static CrewMember gene = new CrewMember(Type.Unowned, Roster.Available, "Gene Kerman", Gender.Male, "Instructor", false, false, 0.6f, 0.45f, 0);
1913
static CrewMember werner = new CrewMember(Type.Unowned, Roster.Available, "Wernher von Kerman", Gender.Male, "Instructor", false, false, 0.25f, 0.25f, 0);
14+
2015
// Strategy
2116
static CrewMember mort = new CrewMember(Type.Unowned, Roster.Available, "Mortimer Kerman", Gender.Male, "StrategyKerbal", false, false, 0.65f, 0.35f, 0);
2217
static CrewMember linus = new CrewMember(Type.Unowned, Roster.Available, "Linus Kerman", Gender.Male, "StrategyKerbal", false, false, 0.35f, 0.3f, 0);
2318
static CrewMember walt = new CrewMember(Type.Unowned, Roster.Available, "Walt Kerman", Gender.Male, "StrategyKerbal", false, false, 0.45f, 0.9f, 0);
2419
static CrewMember gus = new CrewMember(Type.Unowned, Roster.Available, "Gus Kerman", Gender.Male, "StrategyKerbal", false, false, 0.45f, 0.45f, 0);
2520

26-
internal static CrewMember[] menuKerbals = new[] { mun1, orbit1, orbit2, orbit3, orbit4 };
2721
internal static CrewMember[] instructors = new[] { gene, werner };
2822
internal static CrewMember[] strategy = new[] { mort, linus, walt, gus };
2923
}
@@ -101,24 +95,13 @@ void Awake()
10195
loaded = true;
10296
Debug.Log("UIKerbalLoader", "Awake");
10397

104-
ConfigNode[] MenuKerbals = UserSettings.ConfigNode.GetNodes("MenuKerbal");
105-
106-
for (int i = 0; i < MenuKerbals?.Length; i++)
107-
{
108-
if (int.TryParse(MenuKerbals[i]?.GetValue("index"), out int index) && index < UIKerbals.menuKerbals?.Length)
109-
{
110-
UIKerbals.menuKerbals.Load(MenuKerbals[i], index);
111-
}
112-
}
113-
114-
11598
ConfigNode[] Instructors = UserSettings.ConfigNode.GetNodes("Instructor");
11699

117100
for (int i = 0; i < Instructors?.Length; i++)
118101
{
119102
if (int.TryParse(Instructors[i]?.GetValue("index"), out int index) && index < UIKerbals.instructors?.Length)
120103
{
121-
UIKerbals.instructors.Load(Instructors[i], index);
104+
UIKerbals.instructors[index] = UIKerbals.instructors[index].Load(Instructors[i]);
122105
}
123106
}
124107

@@ -129,7 +112,7 @@ void Awake()
129112
{
130113
if (int.TryParse(StrategyKerbals[i]?.GetValue("index"), out int index) && index < UIKerbals.strategy?.Length)
131114
{
132-
UIKerbals.strategy.Load(StrategyKerbals[i], index);
115+
UIKerbals.strategy[index] = UIKerbals.strategy[index].Load(StrategyKerbals[i]);
133116
}
134117
}
135118
}
Lines changed: 114 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,114 @@
1+
using System.Collections.Generic;
2+
using UnityEngine;
3+
using Type = ProtoCrewMember.KerbalType;
4+
using Roster = ProtoCrewMember.RosterStatus;
5+
using Gender = ProtoCrewMember.Gender;
6+
7+
8+
namespace SigmaReplacements
9+
{
10+
public class UIKerbalsMenu
11+
{
12+
// Stock Main Menu Kerbals
13+
internal static CrewMember[] munKerbals = new CrewMember[] { new CrewMember(Type.Crew, Roster.Assigned, "Bob Kerman", Gender.Male, "Scientist", true, false, 0.3f, 0.1f, 0) };
14+
internal static CrewMember[] orbitKerbals = new CrewMember[]
15+
{
16+
new CrewMember(Type.Crew, Roster.Assigned, "Bill Kerman", Gender.Male, "Engineer", true, false, 0.5f, 0.8f, 0),
17+
new CrewMember(Type.Crew, Roster.Assigned, "Bob Kerman", Gender.Male, "Scientist", true, false, 0.3f, 0.1f, 0),
18+
new CrewMember(Type.Crew, Roster.Assigned, "Jebediah Kerman", Gender.Male, "Pilot", true, true, 0.5f, 0.5f, 0),
19+
new CrewMember(Type.Crew, Roster.Assigned, "Valentina Kerman", Gender.Female, "Pilot", true, true, 0.55f, 0.4f, 0)
20+
};
21+
22+
// Dictionaries
23+
internal static Dictionary<int, CrewMember> munSceneKerbals = new Dictionary<int, CrewMember>();
24+
internal static Dictionary<int, CrewMember> orbitSceneKerbals = new Dictionary<int, CrewMember>();
25+
}
26+
27+
[KSPAddon(KSPAddon.Startup.MainMenu, false)]
28+
internal class UIKerbalMenuLoader : MonoBehaviour
29+
{
30+
static bool loaded = false;
31+
32+
void Awake()
33+
{
34+
loaded = false;
35+
}
36+
37+
void Start()
38+
{
39+
if (!loaded)
40+
{
41+
loaded = true;
42+
Debug.Log("UIKerbalLoader", "Awake");
43+
44+
// Mun Scene
45+
ConfigNode[] MunSceneKerbal = UserSettings.ConfigNode.GetNodes("MunSceneKerbal");
46+
47+
for (int i = 0; i < MunSceneKerbal?.Length; i++)
48+
{
49+
if (int.TryParse(MunSceneKerbal[i]?.GetValue("index"), out int index))
50+
{
51+
if (!UIKerbalsMenu.munSceneKerbals.ContainsKey(index))
52+
{
53+
if (index == 0)
54+
{
55+
UIKerbalsMenu.munSceneKerbals.Add(0, UIKerbalsMenu.munKerbals[0]);
56+
}
57+
else
58+
{
59+
UIKerbalsMenu.munSceneKerbals.Add(index, new CrewMember(Type.Crew, Roster.Available, "MunKerbal" + index, ProtoCrewMember.Gender.Male, "", false, false, 0.5f, 0.5f, 0));
60+
}
61+
}
62+
63+
UIKerbalsMenu.munSceneKerbals[index] = UIKerbalsMenu.munSceneKerbals[index].Load(MunSceneKerbal[i]);
64+
}
65+
}
66+
67+
// Orbit Scene
68+
ConfigNode[] OrbitSceneKerbal = UserSettings.ConfigNode.GetNodes("OrbitSceneKerbal");
69+
70+
for (int i = 0; i < OrbitSceneKerbal?.Length; i++)
71+
{
72+
if (int.TryParse(OrbitSceneKerbal[i]?.GetValue("index"), out int index))
73+
{
74+
if (!UIKerbalsMenu.orbitSceneKerbals.ContainsKey(index))
75+
{
76+
if (index < 4)
77+
{
78+
UIKerbalsMenu.orbitSceneKerbals.Add(index, UIKerbalsMenu.orbitKerbals[index]);
79+
}
80+
else
81+
{
82+
UIKerbalsMenu.orbitSceneKerbals.Add(index, new CrewMember(Type.Crew, Roster.Available, "OrbitKerbal" + index, Gender.Male, "", false, false, 0.5f, 0.5f, 0));
83+
}
84+
}
85+
86+
UIKerbalsMenu.orbitSceneKerbals[index] = UIKerbalsMenu.orbitSceneKerbals[index].Load(OrbitSceneKerbal[i]);
87+
}
88+
}
89+
90+
// Apply the Components
91+
GameObject munScene = GameObject.Find("MunScene")?.GetChild("Kerbals");
92+
93+
for (int i = 0; i < munScene?.transform?.childCount; i++)
94+
{
95+
UIKerbalMenu component = munScene.transform.GetChild(i).gameObject.AddOrGetComponent<UIKerbalMenu>();
96+
97+
if (UIKerbalsMenu.munSceneKerbals.ContainsKey(i))
98+
component.crewMember = UIKerbalsMenu.munSceneKerbals[i];
99+
}
100+
101+
102+
GameObject orbitScene = GameObject.Find("OrbitScene")?.GetChild("Kerbals");
103+
104+
for (int i = 0; i < orbitScene?.transform?.childCount; i++)
105+
{
106+
UIKerbalMenu component = orbitScene.transform.GetChild(i).gameObject.AddOrGetComponent<UIKerbalMenu>();
107+
108+
if (UIKerbalsMenu.orbitSceneKerbals.ContainsKey(i))
109+
component.crewMember = UIKerbalsMenu.orbitSceneKerbals[i];
110+
}
111+
}
112+
}
113+
}
114+
}

[Source]/SigmaReplacements/Common/UserSettings.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ void Awake()
2525
{
2626
string path = Assembly.GetExecutingAssembly().Location;
2727

28-
if (!folder.StartsWith(Path.GetFullPath(folder)))
28+
if (!Path.GetFullPath(path).StartsWith(Path.GetFullPath(folder)))
2929
{
3030
UnityEngine.Debug.Log(Debug.Tag + " WARNING: Incorrect plugin location => " + path);
3131
}

0 commit comments

Comments
 (0)