Skip to content

Commit e84b8cf

Browse files
committed
worked on API a bit
1 parent 5dd9abd commit e84b8cf

File tree

3 files changed

+66
-28
lines changed

3 files changed

+66
-28
lines changed

Source/API/CrewQueueAPI.cs

Lines changed: 17 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ public static bool Available
2828
_type = AssemblyLoader.loadedAssemblies
2929
.Select(a => a.assembly.GetExportedTypes())
3030
.SelectMany(t => t)
31-
.FirstOrDefault(t => t.FullName == "CrewQueue.CrewQueue");
31+
.FirstOrDefault(t => t.FullName == "CrewQueue.CrewQueueProxy");
3232

3333
_available = _type != null;
3434
}
@@ -43,7 +43,7 @@ public static IEnumerable<ProtoCrewMember> AvailableCrew
4343
{
4444
get
4545
{
46-
return (IEnumerable<ProtoCrewMember>) getProperty("CrewQueueRoster", "AvailableCrew");
46+
return (IEnumerable<ProtoCrewMember>) getProperty("AvailableCrew");
4747
}
4848
}
4949

@@ -54,29 +54,29 @@ public static IEnumerable<ProtoCrewMember> UnavailableCrew
5454
{
5555
get
5656
{
57-
return (IEnumerable<ProtoCrewMember>) getProperty("CrewQueueRoster", "UnavailableCrew");
57+
return (IEnumerable<ProtoCrewMember>) getProperty("UnavailableCrew");
5858
}
5959
}
6060

6161
/// <summary>
6262
/// Returns the Kerbals who are allowed to go on missions, sorted inexperienced first.
6363
/// </summary>
64-
public static IOrderedEnumerable<ProtoCrewMember> NewbieCrew
64+
public static IOrderedEnumerable<ProtoCrewMember> LeastExperiencedCrew
6565
{
6666
get
6767
{
68-
return (IOrderedEnumerable<ProtoCrewMember>)getProperty("CrewQueueRoster", "LeastExperiencedCrew");
68+
return (IOrderedEnumerable<ProtoCrewMember>)getProperty("LeastExperiencedCrew");
6969
}
7070
}
7171

7272
/// <summary>
7373
/// Returns the Kerbals who are allowed to go on missions, sorted veterans first.
7474
/// </summary>
75-
public static IOrderedEnumerable<ProtoCrewMember> VeteranCrew
75+
public static IOrderedEnumerable<ProtoCrewMember> MostExperiencedCrew
7676
{
7777
get
7878
{
79-
return (IOrderedEnumerable<ProtoCrewMember>)getProperty("CrewQueueRoster", "MostExperiencedCrew");
79+
return (IOrderedEnumerable<ProtoCrewMember>)getProperty("MostExperiencedCrew");
8080
}
8181
}
8282

@@ -86,9 +86,9 @@ public static IOrderedEnumerable<ProtoCrewMember> VeteranCrew
8686
/// <param name="partPrefab">A reference to the Part in question.</param>
8787
/// <param name="preferVeterans">Check if veterans should be prioritized over newbies</param>
8888
/// <returns></returns>
89-
public IEnumerable<ProtoCrewMember> GetCrewForPart(Part partPrefab, bool preferVeterans = false)
89+
public IEnumerable<ProtoCrewMember> GetCrewForPart(Part partPrefab, IEnumerable<ProtoCrewMember> exemptList, bool preferVeterans = false)
9090
{
91-
return (IEnumerable<ProtoCrewMember>) invokeMethod("CrewQueue","GetCrewForPart", new object[] { partPrefab, preferVeterans });
91+
return (IEnumerable<ProtoCrewMember>) invokeMethod("GetCrewForPart", new object[] { partPrefab, exemptList, preferVeterans });
9292
}
9393

9494
// Generic accessors
@@ -103,44 +103,34 @@ internal static object Instance
103103
}
104104
else
105105
{
106-
throw new Exception("Attempted to access CrewQ without that mod installed.");
106+
throw new Exception("Attempted to access CrewQueue without that mod installed.");
107107
}
108108
}
109109
}
110110

111-
internal static object getProperty(string target, string name, object[] indexes = null)
111+
internal static object getProperty(string name, object[] indexes = null)
112112
{
113113
if (Available)
114114
{
115-
Type type = AssemblyLoader.loadedAssemblies
116-
.Select(a => a.assembly.GetExportedTypes())
117-
.SelectMany(t => t)
118-
.FirstOrDefault(t => t.FullName == "CrewQueue." + target);
119-
120-
System.Reflection.PropertyInfo _property = type.GetProperty(name, BindingFlags.NonPublic | BindingFlags.Instance);
115+
System.Reflection.PropertyInfo _property = _type.GetProperty(name, BindingFlags.NonPublic | BindingFlags.Static);
121116
return _property.GetValue(Instance, indexes);
122117
}
123118
else
124119
{
125-
throw new Exception("Attempted to access CrewQ without that mod installed.");
120+
throw new Exception("Attempted to access CrewQueue without that mod installed.");
126121
}
127122
}
128123

129-
internal static object invokeMethod(string target, string name, object[] parameters = null)
124+
internal static object invokeMethod(string name, object[] parameters = null)
130125
{
131126
if (Available)
132-
{
133-
Type type = AssemblyLoader.loadedAssemblies
134-
.Select(a => a.assembly.GetExportedTypes())
135-
.SelectMany(t => t)
136-
.FirstOrDefault(t => t.FullName == "CrewQueue." + target);
137-
138-
MethodInfo _method = type.GetMethod(name, BindingFlags.NonPublic | BindingFlags.Instance);
127+
{
128+
MethodInfo _method = _type.GetMethod(name, BindingFlags.NonPublic | BindingFlags.Static);
139129
return _method.Invoke(Instance, parameters);
140130
}
141131
else
142132
{
143-
throw new Exception("Attempted to access CrewQ without that mod installed.");
133+
throw new Exception("Attempted to access CrewQueue without that mod installed.");
144134
}
145135
}
146136
}

Source/API/CrewQueueProxy.cs

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
using System;
2+
using System.Collections.Generic;
3+
using System.Linq;
4+
using System.Text;
5+
6+
namespace CrewQueue
7+
{
8+
class CrewQueueProxy
9+
{
10+
public static IEnumerable<ProtoCrewMember> AvailableCrew
11+
{
12+
get
13+
{
14+
return CrewQueueRoster.Instance.AvailableCrew;
15+
}
16+
}
17+
18+
public static IEnumerable<ProtoCrewMember> UnavailableCrew
19+
{
20+
get
21+
{
22+
return CrewQueueRoster.Instance.UnavailableCrew;
23+
}
24+
}
25+
26+
public static IEnumerable<ProtoCrewMember> LeastExperiencedCrew
27+
{
28+
get
29+
{
30+
return CrewQueueRoster.Instance.LeastExperiencedCrew;
31+
}
32+
}
33+
34+
public static IEnumerable<ProtoCrewMember> MostExperiencedCrew
35+
{
36+
get
37+
{
38+
return CrewQueueRoster.Instance.MostExperiencedCrew;
39+
}
40+
}
41+
42+
public static IEnumerable<ProtoCrewMember> GetCrewForPart(Part partPrefab, IEnumerable<ProtoCrewMember> exemptList, bool preferVeterans = false)
43+
{
44+
return CrewQueue.Instance.GetCrewForPart(partPrefab, exemptList, preferVeterans);
45+
}
46+
}
47+
}

Source/CrewQ.csproj

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,8 @@
4545
</Reference>
4646
</ItemGroup>
4747
<ItemGroup>
48-
<Compile Include="API\CrewQAPI.cs" />
48+
<Compile Include="API\CrewQueueAPI.cs" />
49+
<Compile Include="API\CrewQueueProxy.cs" />
4950
<Compile Include="CrewQueue.cs" />
5051
<Compile Include="CrewQueueRoster.cs" />
5152
<Compile Include="CrewQueueSettings.cs" />

0 commit comments

Comments
 (0)