Skip to content

Commit 069914c

Browse files
committed
sardine7 DashCodeTrigger
1 parent 7295214 commit 069914c

File tree

5 files changed

+50
-12
lines changed

5 files changed

+50
-12
lines changed

Source/Gameplay/AutoWatchEntity/HelperClasses.cs

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -169,11 +169,24 @@ private static bool IsTiny(float f) {
169169
}
170170

171171
internal static class DashCode {
172-
public static readonly string[] DashCodes = new string[9]{ "L", "UL", "U", "UR", "R", "DR", "D", "DL", "_" };
172+
public static readonly string[] DashCodes = ["L", "UL", "U", "UR", "R", "DR", "D", "DL", "_"];
173173

174-
public static readonly Vector2[] Directions = new Vector2[9] { -Vector2.UnitX, -Vector2.One, -Vector2.UnitY, new Vector2(1f, -1f), Vector2.UnitX, Vector2.One, Vector2.UnitY, new Vector2(-1f, 1f), Vector2.Zero };
174+
public static readonly Vector2[] Directions = [-Vector2.UnitX, -Vector2.One, -Vector2.UnitY, new Vector2(1f, -1f), Vector2.UnitX, Vector2.One, Vector2.UnitY, new Vector2(-1f, 1f), Vector2.Zero];
175175

176176
public const int MemorialHelperOffset = 0;
177+
178+
public static string ToCode(string str) {
179+
// return a standard form
180+
return str switch {
181+
"L" or "UL" or "U" or "UR" or "R" or "DR" or "D" or "DL" or "_" => str,
182+
"LU" => "UL",
183+
"RU" => "UR",
184+
"LD" => "DL",
185+
"RD" => "DR",
186+
"" => "_",
187+
_ => "?"
188+
};
189+
}
177190
public static string ToCode(Vector2 vec) {
178191
// this assumes vec = Calc.Sign(vec);
179192
vec = Calc.Sign(vec);

Source/Gameplay/AutoWatchEntity/Trigger/TriggerDynamicInfoGetter.cs

Lines changed: 23 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,7 @@ internal static class ModTriggerDynamicInfo {
5353

5454
public static void AddToDictionary() {
5555
HandleMemorialHelper();
56+
HandleSardine7();
5657
}
5758
public static void Add(Type type, TriggerDynamicPlayerlessHandler handler) {
5859
TriggerInfoHelper.DynamicInfoPlayerlessGetters.TryAdd(type, handler);
@@ -63,8 +64,8 @@ public static void Add(Type type, TriggerDynamicPlayerHandler handler) {
6364
}
6465

6566
public static void HandleMemorialHelper() {
66-
if (ModUtils.GetType("memorialHelper", "Celeste.Mod.MemorialHelper.DashSequenceFlagTrigger") is { } dashSequence) {
67-
Add(dashSequence, (trigger, level, _) => {
67+
if (ModUtils.GetType("memorialHelper", "Celeste.Mod.MemorialHelper.DashSequenceFlagTrigger") is { } dashSequenceFlagTrigger) {
68+
Add(dashSequenceFlagTrigger, (trigger, level, _) => {
6869
string flag = trigger.GetFieldValue<string>("flag");
6970
if (trigger.GetFieldValue<bool>("triggered")) {
7071
if (trigger.GetFieldValue<bool>("persistent")) {
@@ -99,4 +100,24 @@ public static void HandleMemorialHelper() {
99100
});
100101
}
101102
}
103+
104+
public static void HandleSardine7() {
105+
if (ModUtils.GetType("Sardine7", "Celeste.Mod.Sardine7.Triggers.DashCodeTrigger") is { } dashCodeTrigger) {
106+
Add(dashCodeTrigger, (trigger, level) => {
107+
string flag = trigger.GetFieldValue<string>("flag");
108+
bool flagValue = trigger.GetFieldValue<bool>("flagValue");
109+
if (level.Session.GetFlag(flag) == flagValue) {
110+
return $"{(flagValue ? "Added: " : "Removed: ")}{flag}";
111+
}
112+
List<string> currentInputs = trigger.GetFieldValue<List<string>>("currentInputs");
113+
// techinically, your last dash need to be inside the trigger (so the trigger will be enabled)
114+
if (flagValue) {
115+
return "Current: " + string.Join(",", currentInputs.Select(DashCode.ToCode)) + "\nAdd: " + flag;
116+
}
117+
else {
118+
return "Current: " + string.Join(",", currentInputs.Select(DashCode.ToCode)) + "\nRemove: " + flag;
119+
}
120+
});
121+
}
122+
}
102123
}

Source/Gameplay/AutoWatchEntity/Trigger/TriggerInfoHelper.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
#define ForMaintenance
1+
//#define ForMaintenance
22
using System.Reflection;
33

44
namespace Celeste.Mod.TASHelper.Gameplay.AutoWatchEntity;

Source/Gameplay/AutoWatchEntity/Trigger/TriggerStaticInfoGetter.cs

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -97,14 +97,14 @@ public static void AddToDictionary() {
9797
HandleXaphanHelper();
9898
HandleFlagslinesAndSuch();
9999
HandleMemorialHelper();
100+
HandleSardine7();
100101
}
101102

102103
public static void Add(Type type, TriggerStaticHandler handler) {
103104
TriggerInfoHelper.StaticInfoGetters.TryAdd(type, handler);
104105
}
105106

106107
public static void HandleVivHelper() {
107-
// not finished
108108

109109
if (ModUtils.GetType("VivHelper", "VivHelper.Triggers.TeleportTarget") is not { } teleportTargetType) {
110110
return;
@@ -190,8 +190,6 @@ public static void HandleVivHelper() {
190190
});
191191
}
192192
public static void HandleXaphanHelper() {
193-
// not finished
194-
195193
/* just for test
196194
if (ModUtils.GetType("XaphanHelper", "Celeste.Mod.XaphanHelper.Triggers.TextTrigger") is { } textTrigger) {
197195
Add(textTrigger, (trigger, _) => {
@@ -202,8 +200,6 @@ public static void HandleXaphanHelper() {
202200
}
203201

204202
public static void HandleFlagslinesAndSuch() {
205-
// not finished
206-
207203
if (ModUtils.GetType("FlaglinesAndSuch", "FlaglinesAndSuch.FlagLogicGate") is { } flagLogicGate) {
208204
Add(flagLogicGate, (trigger, _) => {
209205
string flag1 = trigger.GetFieldValue<string>("flag1");
@@ -251,10 +247,18 @@ static string ParseLogicGate(bool[] logicTable, string flag1, string flag2) {
251247
}
252248

253249
public static void HandleMemorialHelper() {
254-
if (ModUtils.GetType("memorialHelper", "Celeste.Mod.MemorialHelper.DashSequenceFlagTrigger") is { } dashSequence) {
255-
Add(dashSequence, (trigger, _) => {
250+
if (ModUtils.GetType("memorialHelper", "Celeste.Mod.MemorialHelper.DashSequenceFlagTrigger") is { } dashSequenceFlagTrigger) {
251+
Add(dashSequenceFlagTrigger, (trigger, _) => {
256252
return string.Join(",", trigger.GetFieldValue<List<int>>("dashList").Select(x => DashCode.ToCode(x, DashCode.MemorialHelperOffset)));
257253
});
258254
}
259255
}
256+
257+
public static void HandleSardine7() {
258+
if (ModUtils.GetType("Sardine7", "Celeste.Mod.Sardine7.Triggers.DashCodeTrigger") is { } dashCodeTrigger) {
259+
Add(dashCodeTrigger, (trigger, _) => {
260+
return "DashCode: " + string.Join(",", trigger.GetFieldValue<string[]>("code").Select(DashCode.ToCode));
261+
});
262+
}
263+
}
260264
}

0 commit comments

Comments
 (0)