Skip to content

Commit c16b06a

Browse files
committed
Gravship車両が既存のマップに着陸できない問題を解決
1 parent 19659a6 commit c16b06a

3 files changed

Lines changed: 34 additions & 34 deletions

File tree

‎About/About.xml‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
このModはVehicle Frameworkを使用した車両に、床や建築物を建設可能なマップを載せるためのフレームワークMODです。
88
這個模組是 **Vehicle Framework** 的擴展,讓車輛能夠變成一張可建造的地圖,你可以在上面蓋地板、建築,打造屬於自己的移動基地!
99
</description>
10-
<modVersion IgnoreIfNoMatchingField="True">1.6.215</modVersion>
10+
<modVersion IgnoreIfNoMatchingField="True">1.6.216</modVersion>
1111
<url>https://github.com/oelsart/VehicleMapFramework</url>
1212
<supportedVersions>
1313
<li>1.5</li>

‎Source/VehicleMapFramework/Comps/CompVehicleLauncherGravshipVehicle.cs‎

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
1-
using System.Collections.Generic;
1+
using System;
2+
using System.Collections.Generic;
23
using System.Linq;
34
using System.Text;
45
using HarmonyLib;
@@ -15,7 +16,7 @@
1516

1617
namespace VehicleMapFramework;
1718

18-
public class CompVehicleLauncherGravshipVehicle : CompVehicleLauncherWithMap
19+
public class CompVehicleLauncherGravshipVehicle : CompVehicleLauncherWithMap, ITargeterSource<GlobalTargetInfo, ArrivalOption>
1920
{
2021
public override IEnumerable<Gizmo> CompGetGizmosExtra()
2122
{
@@ -155,7 +156,6 @@ void OpenDialog()
155156
void ChoosingDestination(RitualRoleAssignments assignment)
156157
{
157158
var qualityRange = (FloatRange)AccessTools.Method(typeof(Dialog_BeginRitual),
158-
// ReSharper disable once AccessToModifiedClosure
159159
"PredictedQuality").Invoke(dialog,
160160
[
161161
null
@@ -270,11 +270,7 @@ void ChoosingDestination(RitualRoleAssignments assignment)
270270
List<FloatMenuOption> list =
271271
[
272272
];
273-
foreach (var option in result.options)
274-
{
275-
list.Add(new FloatMenuOption(option.Label,
276-
delegate { ChooseOption(option); }));
277-
}
273+
list.AddRange(result.options.Select(option => new FloatMenuOption(option.Label, () => ChooseOption(option))));
278274

279275
Find.WindowStack.Add(new FloatMenu(list));
280276
break;
@@ -294,6 +290,9 @@ void ChooseOption(ITargetOption option2)
294290
SoundDefOf.Gravship_Launch.PlayOneShotOnCamera();
295291
}
296292
}
293+
case TargeterAction.None:
294+
default:
295+
break;
297296
}
298297
},
299298
() =>

‎Source/VehicleMapFramework/Comps/VTOLTakeoff_Gravship.cs‎

Lines changed: 26 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -38,12 +38,12 @@ static VTOLTakeoff_Gravship()
3838

3939
public VerticalProtocolProperties_Gravship LandingProperties_Gravship => LandingProperties as VerticalProtocolProperties_Gravship;
4040

41-
private void Init()
41+
private static void Init()
4242
{
4343
LongEventHandler.ExecuteWhenFinished(() =>
4444
{
45-
thrusterFlameBlock = new();
46-
engineGlowBlock = new();
45+
thrusterFlameBlock = new MaterialPropertyBlock();
46+
engineGlowBlock = new MaterialPropertyBlock();
4747
});
4848
}
4949

@@ -73,9 +73,9 @@ protected override (Vector3 drawPos, float rotation, DynamicShadowData shadowDat
7373
drawPos += (offset2 - offset).RotatedBy(Vehicle?.Rotation.AsAngle ?? 0f) + offset;
7474
}
7575

76-
if (ModsConfig.OdysseyActive && LaunchProperties_Gravship != null && Vehicle is VehiclePawnWithMap vehicle)
76+
if (ModsConfig.OdysseyActive && LaunchProperties_Gravship != null && Vehicle is VehiclePawnWithMap vehiclePawnWithMap)
7777
{
78-
if (GravshipUtility.GetPlayerGravEngine_NewTemp(vehicle.VehicleMap) is Building_GravEngine engine)
78+
if (GravshipUtility.GetPlayerGravEngine_NewTemp(vehiclePawnWithMap.VehicleMap) is { } engine)
7979
{
8080
var color = Color.white.WithAlpha(0);
8181
if (!LaunchProperties_Gravship.thrusterFlameCurve.NullOrEmpty())
@@ -88,7 +88,7 @@ protected override (Vector3 drawPos, float rotation, DynamicShadowData shadowDat
8888
}
8989
thrusterFlameBlock.Clear();
9090
thrusterFlameBlock.SetColor(ShaderPropertyColor2, color);
91-
engine?.GravshipComponents.OfType<CompGravshipThruster>()
91+
engine.GravshipComponents.OfType<CompGravshipThruster>()
9292
.Where(t => t.CanBeActive)
9393
.Where(t => (t.Props.exhaustSettings?.enabled ?? false) && t.Props.exhaustSettings.ExhaustFleckDef != null)
9494
.Do(t =>
@@ -107,11 +107,11 @@ protected override (Vector3 drawPos, float rotation, DynamicShadowData shadowDat
107107
{
108108
shaderParameter.Apply(thrusterFlameBlock);
109109
}
110-
GenDraw.DrawQuad(material, vector2.SetToAltitude(AltitudeLayer.Skyfaller).YOffsetFull(vehicle), Quaternion.AngleAxis(rot.AsAngle + rotation, Vector3.up), num, thrusterFlameBlock);
110+
GenDraw.DrawQuad(material, vector2.SetToAltitude(AltitudeLayer.Skyfaller).YOffsetFull(vehiclePawnWithMap), Quaternion.AngleAxis(rot.AsAngle + rotation, Vector3.up), num, thrusterFlameBlock);
111111
});
112112

113113
var color2 = Color.white.WithAlpha(0);
114-
color2 *= Mathf.Lerp(0.75f, 1f, Mathf.PerlinNoise1D((ticksPassed + ticksPassedVertical) / TotalTicks_Takeoff) * 100f);
114+
color2 *= Mathf.Lerp(0.75f, 1f, Mathf.PerlinNoise1D((ticksPassed + ticksPassedVertical) / (float)TotalTicks_Takeoff) * 100f);
115115
if (!LaunchProperties_Gravship.engineGlowVerticalCurve.NullOrEmpty())
116116
{
117117
color2.a += LaunchProperties_Gravship.engineGlowVerticalCurve.Evaluate(TimeInAnimationVTOL);
@@ -153,9 +153,9 @@ protected override (Vector3 drawPos, float rotation, DynamicShadowData shadowDat
153153
drawPos += (offset2 - offset).RotatedBy(Vehicle?.Rotation.AsAngle ?? 0f) + offset;
154154
}
155155

156-
if (ModsConfig.OdysseyActive && LandingProperties_Gravship != null && Vehicle is VehiclePawnWithMap vehicle)
156+
if (ModsConfig.OdysseyActive && LandingProperties_Gravship != null && Vehicle is VehiclePawnWithMap vehiclePawnWithMap)
157157
{
158-
if (GravshipUtility.GetPlayerGravEngine_NewTemp(vehicle.VehicleMap) is Building_GravEngine engine)
158+
if (GravshipUtility.GetPlayerGravEngine_NewTemp(vehiclePawnWithMap.VehicleMap) is { } engine)
159159
{
160160
var color = Color.white.WithAlpha(0);
161161
if (!LandingProperties_Gravship.thrusterFlameCurve.NullOrEmpty())
@@ -168,7 +168,7 @@ protected override (Vector3 drawPos, float rotation, DynamicShadowData shadowDat
168168
}
169169
thrusterFlameBlock.Clear();
170170
thrusterFlameBlock.SetColor(ShaderPropertyColor2, color);
171-
engine?.GravshipComponents.OfType<CompGravshipThruster>()
171+
engine.GravshipComponents.OfType<CompGravshipThruster>()
172172
.Where(t => t.CanBeActive)
173173
.Where(t => (t.Props.exhaustSettings?.enabled ?? false) && t.Props.exhaustSettings.ExhaustFleckDef != null)
174174
.Do(t =>
@@ -187,11 +187,12 @@ protected override (Vector3 drawPos, float rotation, DynamicShadowData shadowDat
187187
{
188188
shaderParameter.Apply(thrusterFlameBlock);
189189
}
190-
GenDraw.DrawQuad(material, vector2.SetToAltitude(AltitudeLayer.Skyfaller).YOffsetFull(vehicle), Quaternion.AngleAxis(rot.AsAngle + rotation, Vector3.up), num, thrusterFlameBlock);
190+
GenDraw.DrawQuad(material, vector2.SetToAltitude(AltitudeLayer.Skyfaller).YOffsetFull(vehiclePawnWithMap), Quaternion.AngleAxis(rot.AsAngle + rotation, Vector3.up), num, thrusterFlameBlock);
191191
});
192192

193193
var color2 = Color.white.WithAlpha(0);
194-
color2 *= Mathf.Lerp(0.75f, 1f, Mathf.PerlinNoise1D((ticksPassed + ticksPassedVertical) / TotalTicks_Takeoff) * 100f);
194+
color2 *= Mathf.Lerp(0.75f, 1f,
195+
Mathf.PerlinNoise1D((ticksPassed + ticksPassedVertical) / (float)TotalTicks_Takeoff) * 100f);
195196
if (!LandingProperties_Gravship.engineGlowVerticalCurve.NullOrEmpty())
196197
{
197198
color2.a += LandingProperties_Gravship.engineGlowVerticalCurve.Evaluate(TimeInAnimationVTOL);
@@ -208,29 +209,29 @@ protected override (Vector3 drawPos, float rotation, DynamicShadowData shadowDat
208209
return (drawPos, rotation, shadowData);
209210
}
210211

211-
public override void OrderProtocol(LaunchType launchType)
212+
public override void OrderProtocol(LaunchType launchType_)
212213
{
213-
base.OrderProtocol(launchType);
214-
if (!ModsConfig.OdysseyActive || Vehicle is not VehiclePawnWithMap vehicle) return;
214+
base.OrderProtocol(launchType_);
215+
if (!ModsConfig.OdysseyActive || Vehicle is not VehiclePawnWithMap vehiclePawnWithMap) return;
215216

216-
if (launchType == LaunchType.Takeoff && GravshipUtility.GetPlayerGravEngine_NewTemp(vehicle.VehicleMap) is Building_GravEngine engine)
217+
if (launchType_ == LaunchType.Takeoff && GravshipUtility.GetPlayerGravEngine_NewTemp(vehiclePawnWithMap.VehicleMap) is { } engine)
217218
{
218-
if (launchType == LaunchType.Takeoff)
219-
{
220-
engine.cooldownCompleteTick = GenTicks.TicksGame + (int)GravshipUtility.LaunchCooldownFromQuality(engine.launchInfo?.quality ?? 1f);
221-
}
219+
engine.cooldownCompleteTick = GenTicks.TicksGame + (int)GravshipUtility.LaunchCooldownFromQuality(engine.launchInfo?.quality ?? 1f);
222220
}
223221
}
224222

225223
public override IEnumerable<ArrivalOption> GetArrivalOptions(GlobalTargetInfo target)
226224
{
227-
foreach (var option in base.GetArrivalOptions(target))
225+
if (target.WorldObject is MapParent { Spawned: true, HasMap: true } mapParent && !mapParent.EnterCooldownBlocksEntering())
228226
{
229-
yield return option;
227+
yield return new ArrivalOption("VF_LandVehicleTargetedLanding".Translate(mapParent.Label), new ArrivalAction_LoadMap(vehicle, AerialVehicleArrivalModeDefOf.TargetedLanding));
230228
}
231-
if (target.WorldObject is MapParent { Spawned: true, HasMap: false } mapParent && !mapParent.EnterCooldownBlocksEntering())
229+
else
232230
{
233-
yield return new ArrivalOption("VF_LandVehicleTargetedLanding".Translate(mapParent.Label), new ArrivalAction_LoadMap(vehicle, AerialVehicleArrivalModeDefOf.TargetedLanding));
231+
foreach (var option in base.GetArrivalOptions(target))
232+
{
233+
yield return option;
234+
}
234235
}
235236
}
236237
}

0 commit comments

Comments
 (0)