Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 0 additions & 14 deletions DMCompiler/DMStandard/UnsortedAdditions.dm
Original file line number Diff line number Diff line change
Expand Up @@ -6,30 +6,16 @@
/proc/eval(script)
set opendream_unsupported = "eval() is officialy deprecated"

/proc/findlasttext_char(Haystack,Needle,Start=0,End=1)
set opendream_unimplemented = TRUE
/proc/findlasttextEx_char(Haystack,Needle,Start=1,End=0)
set opendream_unimplemented = TRUE
/proc/findtext_char(Haystack,Needle,Start=1,End=0)
set opendream_unimplemented = TRUE
/proc/findtextEx_char(Haystack,Needle,Start=1,End=0)
set opendream_unimplemented = TRUE
/proc/load_resource(File)
set opendream_unimplemented = TRUE
proc/missile(Type, Start, End)
set opendream_unimplemented = TRUE
/proc/obounds(Ref=src, Dist=0)
set opendream_unimplemented = TRUE
/proc/replacetext_char(Haystack,Needle,Replacement,Start=1,End=0)
set opendream_unimplemented = TRUE
/proc/run(File)
set opendream_unimplemented = TRUE
/proc/shell(command)
set opendream_unimplemented = TRUE
/proc/nonspantext_char(Haystack,Needles,Start=1)
set opendream_unimplemented = TRUE
/proc/splittext_char(Text,Start=1,End=0,Insert="")
set opendream_unimplemented = TRUE
/proc/bound_pixloc(var/atom/Atom, var/Dir as num) as /pixloc
set opendream_unimplemented = TRUE

Expand Down
14 changes: 9 additions & 5 deletions DMCompiler/DMStandard/_Standard.dm
Original file line number Diff line number Diff line change
Expand Up @@ -21,9 +21,13 @@ proc/file(Path)
proc/file2text(File) as text|null
proc/filter(type, ...)
proc/findtext(Haystack, Needle, Start = 1, End = 0) as num
proc/findtext_char(Haystack, Needle, Start = 1, End = 0) as num
proc/findtextEx(Haystack, Needle, Start = 1, End = 0) as num
proc/findtextEx_char(Haystack, Needle, Start = 1, End = 0) as num
proc/findlasttext(Haystack, Needle, Start = 0, End = 1) as num
proc/findlasttext_char(Haystack, Needle, Start = 0, End = 1) as num
proc/findlasttextEx(Haystack, Needle, Start = 0, End = 1) as num
proc/findlasttextEx_char(Haystack, Needle, Start = 1, End = 0) as num
proc/flick(Icon, Object)
proc/flist(Path) as /list
proc/floor(A) as num
Expand Down Expand Up @@ -67,6 +71,7 @@ proc/noise_hash(...) as num
set opendream_unimplemented = 1
return 0.5
proc/nonspantext(Haystack, Needles, Start = 1) as num
proc/nonspantext_char(Haystack, Needles, Start = 1) as num
proc/num2text(N, A, B) as text
proc/orange(Dist = 5, Center = usr) as /list|null // NOTE: Not sure if return types have BYOND parity
proc/oview(Dist = 5, Center = usr) as /list
Expand All @@ -78,7 +83,9 @@ proc/rand_seed(Seed) as null
proc/range(Dist, Center) as /list|null // NOTE: Not sure if return types have BYOND parity
proc/ref(Object) as text
proc/replacetext(Haystack, Needle, Replacement, Start = 1, End = 0) as text|null
proc/replacetext_char(Haystack, Needle, Replacement, Start = 1, End = 0) as text|null
proc/replacetextEx(Haystack, Needle, Replacement, Start = 1, End = 0) as text|null
proc/replacetextEx_char(Haystack, Needle, Replacement, Start = 1, End = 0) as text|null
proc/rgb(R, G, B, A, space) as text|null
proc/rgb2num(color, space = COLORSPACE_RGB) as /list
proc/roll(ndice = 1, sides) as num
Expand All @@ -94,7 +101,8 @@ proc/spantext(Haystack,Needles,Start=1) as num
proc/spantext_char(Haystack,Needles,Start=1) as num
proc/splicetext(Text, Start = 1, End = 0, Insert = "") as text|null
proc/splicetext_char(Text, Start = 1, End = 0, Insert = "") as text|null
proc/splittext(Text, Delimiter) as /list
proc/splittext(Text, Delimiter, Start = 1, End = 0, include_delimiters = 0) as /list
proc/splittext_char(Text, Delimiter, Start = 1, End = 0, include_delimiters = 0) as /list
proc/stat(Name, Value)
proc/statpanel(Panel, Name, Value)
proc/text2ascii(T, pos = 1) as text
Expand Down Expand Up @@ -156,10 +164,6 @@ proc/winset(player, control_id, params)
#include "Types\Atoms\Turf.dm"
#include "UnsortedAdditions.dm"

proc/replacetextEx_char(Haystack as text, Needle, Replacement, Start = 1, End = 0) as text
set opendream_unimplemented = TRUE
return Haystack

/proc/step(atom/movable/Ref as /atom/movable, var/Dir, var/Speed=0) as num
//TODO: Speed = step_size if Speed is 0
return Ref.Move(get_step(Ref, Dir), Dir)
Expand Down
8 changes: 8 additions & 0 deletions OpenDreamRuntime/Procs/Native/DreamProcNative.cs
Original file line number Diff line number Diff line change
Expand Up @@ -26,9 +26,13 @@ public static void SetupNativeProcs(DreamObjectTree objectTree) {
objectTree.SetGlobalNativeProc(DreamProcNativeRoot.NativeProc_file2text);
objectTree.SetGlobalNativeProc(DreamProcNativeRoot.NativeProc_filter);
objectTree.SetGlobalNativeProc(DreamProcNativeRoot.NativeProc_findtext);
objectTree.SetGlobalNativeProc(DreamProcNativeRoot.NativeProc_findtext_char);
objectTree.SetGlobalNativeProc(DreamProcNativeRoot.NativeProc_findtextEx);
objectTree.SetGlobalNativeProc(DreamProcNativeRoot.NativeProc_findtextEx_char);
objectTree.SetGlobalNativeProc(DreamProcNativeRoot.NativeProc_findlasttext);
objectTree.SetGlobalNativeProc(DreamProcNativeRoot.NativeProc_findlasttext_char);
objectTree.SetGlobalNativeProc(DreamProcNativeRoot.NativeProc_findlasttextEx);
objectTree.SetGlobalNativeProc(DreamProcNativeRoot.NativeProc_findlasttextEx_char);
objectTree.SetGlobalNativeProc(DreamProcNativeRoot.NativeProc_flick);
objectTree.SetGlobalNativeProc(DreamProcNativeRoot.NativeProc_flist);
objectTree.SetGlobalNativeProc(DreamProcNativeRoot.NativeProc_floor);
Expand Down Expand Up @@ -69,6 +73,7 @@ public static void SetupNativeProcs(DreamObjectTree objectTree) {
objectTree.SetGlobalNativeProc(DreamProcNativeRoot.NativeProc_md5);
objectTree.SetGlobalNativeProc(DreamProcNativeRoot.NativeProc_min);
objectTree.SetGlobalNativeProc(DreamProcNativeRoot.NativeProc_nonspantext);
objectTree.SetGlobalNativeProc(DreamProcNativeRoot.NativeProc_nonspantext_char);
objectTree.SetGlobalNativeProc(DreamProcNativeRoot.NativeProc_num2text);
objectTree.SetGlobalNativeProc(DreamProcNativeRoot.NativeProc_ohearers);
objectTree.SetGlobalNativeProc(DreamProcNativeRoot.NativeProc_orange);
Expand All @@ -81,7 +86,9 @@ public static void SetupNativeProcs(DreamObjectTree objectTree) {
objectTree.SetGlobalNativeProc(DreamProcNativeRoot.NativeProc_ref);
objectTree.SetGlobalNativeProc(DreamProcNativeRoot.NativeProc_regex);
objectTree.SetGlobalNativeProc(DreamProcNativeRoot.NativeProc_replacetext);
objectTree.SetGlobalNativeProc(DreamProcNativeRoot.NativeProc_replacetext_char);
objectTree.SetGlobalNativeProc(DreamProcNativeRoot.NativeProc_replacetextEx);
objectTree.SetGlobalNativeProc(DreamProcNativeRoot.NativeProc_replacetextEx_char);
objectTree.SetGlobalNativeProc(DreamProcNativeRoot.NativeProc_rgb2num);
objectTree.SetGlobalNativeProc(DreamProcNativeRoot.NativeProc_roll);
objectTree.SetGlobalNativeProc(DreamProcNativeRoot.NativeProc_round);
Expand All @@ -97,6 +104,7 @@ public static void SetupNativeProcs(DreamObjectTree objectTree) {
objectTree.SetGlobalNativeProc(DreamProcNativeRoot.NativeProc_splicetext);
objectTree.SetGlobalNativeProc(DreamProcNativeRoot.NativeProc_splicetext_char);
objectTree.SetGlobalNativeProc(DreamProcNativeRoot.NativeProc_splittext);
objectTree.SetGlobalNativeProc(DreamProcNativeRoot.NativeProc_splittext_char);
objectTree.SetGlobalNativeProc(DreamProcNativeRoot.NativeProc_stat);
objectTree.SetGlobalNativeProc(DreamProcNativeRoot.NativeProc_statpanel);
objectTree.SetGlobalNativeProc(DreamProcNativeRoot.NativeProc_text2ascii);
Expand Down
81 changes: 81 additions & 0 deletions OpenDreamRuntime/Procs/Native/DreamProcNativeRoot.cs
Original file line number Diff line number Diff line change
Expand Up @@ -885,6 +885,16 @@ public static DreamValue NativeProc_findtext(NativeProc.Bundle bundle, DreamObje
return new DreamValue(needleIndex + 1); //1-indexed
}

[DreamProc("findtext_char")]
[DreamProcParameter("Haystack", Type = DreamValueTypeFlag.String)]
[DreamProcParameter("Needle", Type = DreamValueTypeFlag.String)]
[DreamProcParameter("Start", Type = DreamValueTypeFlag.Float, DefaultValue = 1)]
[DreamProcParameter("End", Type = DreamValueTypeFlag.Float, DefaultValue = 0)]
public static DreamValue NativeProc_findtext_char(NativeProc.Bundle bundle, DreamObject? src, DreamObject? usr) {
//Wrapper function, Opendream defaults to counting by chars instead of bytes.
return NativeProc_findtext(bundle, src, usr);
}

[DreamProc("findtextEx")]
[DreamProcParameter("Haystack", Type = DreamValueTypeFlag.String)]
[DreamProcParameter("Needle", Type = DreamValueTypeFlag.String)]
Expand Down Expand Up @@ -930,6 +940,16 @@ public static DreamValue NativeProc_findtextEx(NativeProc.Bundle bundle, DreamOb
}
}

[DreamProc("findtextEx_char")]
[DreamProcParameter("Haystack", Type = DreamValueTypeFlag.String)]
[DreamProcParameter("Needle", Type = DreamValueTypeFlag.String)]
[DreamProcParameter("Start", Type = DreamValueTypeFlag.Float, DefaultValue = 1)]
[DreamProcParameter("End", Type = DreamValueTypeFlag.Float, DefaultValue = 0)]
public static DreamValue NativeProc_findtextEx_char(NativeProc.Bundle bundle, DreamObject? src, DreamObject? usr) {
//Wrapper function, Opendream defaults to counting by chars instead of bytes.
return NativeProc_findtextEx(bundle, src, usr);
}

[DreamProc("findlasttext")]
[DreamProcParameter("Haystack", Type = DreamValueTypeFlag.String)]
[DreamProcParameter("Needle", Type = DreamValueTypeFlag.String)]
Expand Down Expand Up @@ -968,6 +988,15 @@ public static DreamValue NativeProc_findlasttext(NativeProc.Bundle bundle, Dream
return new DreamValue(needleIndex + 1); //1-indexed, or 0 if not found (LastIndexOf returns -1 if not found)
}

[DreamProc("findlasttext_char")]
[DreamProcParameter("Haystack", Type = DreamValueTypeFlag.String)]
[DreamProcParameter("Needle", Type = DreamValueTypeFlag.String)]
[DreamProcParameter("Start", Type = DreamValueTypeFlag.Float, DefaultValue = 0)]
[DreamProcParameter("End", Type = DreamValueTypeFlag.Float, DefaultValue = 1)]
public static DreamValue NativeProc_findlasttext_char(NativeProc.Bundle bundle, DreamObject? src, DreamObject? usr) {
return NativeProc_findlasttext(bundle, src, usr);
}

[DreamProc("findlasttextEx")]
[DreamProcParameter("Haystack", Type = DreamValueTypeFlag.String)]
[DreamProcParameter("Needle", Type = DreamValueTypeFlag.String)]
Expand Down Expand Up @@ -1007,6 +1036,16 @@ public static DreamValue NativeProc_findlasttextEx(NativeProc.Bundle bundle, Dre
return new DreamValue(needleIndex + 1); //1-indexed, or 0 if not found (LastIndexOf returns -1 if not found)
}

[DreamProc("findlasttextEx_char")]
[DreamProcParameter("Haystack", Type = DreamValueTypeFlag.String)]
[DreamProcParameter("Needle", Type = DreamValueTypeFlag.String)]
[DreamProcParameter("Start", Type = DreamValueTypeFlag.Float, DefaultValue = 0)]
[DreamProcParameter("End", Type = DreamValueTypeFlag.Float, DefaultValue = 1)]
public static DreamValue NativeProc_findlasttextEx_char(NativeProc.Bundle bundle, DreamObject? src, DreamObject? usr) {
//Wrapper function, Opendream defaults to counting by chars instead of bytes.
return NativeProc_findlasttextEx(bundle, src, usr);
}

[DreamProc("flick")]
[DreamProcParameter("Icon", Type = DreamValueTypeFlag.String | DreamValueTypeFlag.DreamResource)]
[DreamProcParameter("Object", Type = DreamValueTypeFlag.String | DreamValueTypeFlag.DreamResource)]
Expand Down Expand Up @@ -2002,6 +2041,15 @@ public static DreamValue NativeProc_nonspantext(NativeProc.Bundle bundle, DreamO
return new DreamValue(index);
}

[DreamProc("nonspantext_char")]
[DreamProcParameter("Haystack", Type = DreamValueTypeFlag.String)]
[DreamProcParameter("Needles", Type = DreamValueTypeFlag.String)]
[DreamProcParameter("Start", Type = DreamValueTypeFlag.Float, DefaultValue = 1)]
public static DreamValue NativeProc_nonspantext_char(NativeProc.Bundle bundle, DreamObject? src, DreamObject? usr) {
//Wrapper function, Opendream defaults to counting by chars instead of bytes.
return NativeProc_nonspantext(bundle, src, usr);
}

[DreamProc("num2text")]
[DreamProcParameter("N")]
[DreamProcParameter("A", Type = DreamValueTypeFlag.Float)]
Expand Down Expand Up @@ -2334,6 +2382,17 @@ public static DreamValue NativeProc_replacetext(NativeProc.Bundle bundle, DreamO
throw new Exception($"Invalid needle {needle}");
}

[DreamProc("replacetext_char")]
[DreamProcParameter("Haystack", Type = DreamValueTypeFlag.String)]
[DreamProcParameter("Needle", Type = DreamValueTypeFlag.String)]
[DreamProcParameter("Replacement", Type = DreamValueTypeFlag.String)]
[DreamProcParameter("Start", Type = DreamValueTypeFlag.Float, DefaultValue = 1)]
[DreamProcParameter("End", Type = DreamValueTypeFlag.Float, DefaultValue = 0)]
public static DreamValue NativeProc_replacetext_char(NativeProc.Bundle bundle, DreamObject? src, DreamObject? usr) {
//Wrapper function, Opendream defaults to counting by chars instead of bytes.
return NativeProc_replacetext(bundle, src, usr);
}

[DreamProc("replacetextEx")]
[DreamProcParameter("Haystack", Type = DreamValueTypeFlag.String)]
[DreamProcParameter("Needle", Type = DreamValueTypeFlag.String)]
Expand Down Expand Up @@ -2381,6 +2440,17 @@ public static DreamValue NativeProc_replacetextEx(NativeProc.Bundle bundle, Drea
return new DreamValue(text.Substring(start - 1, end - start).Replace(needle, replacement, StringComparison.Ordinal));
}

[DreamProc("replacetextEx_char")]
[DreamProcParameter("Haystack", Type = DreamValueTypeFlag.String)]
[DreamProcParameter("Needle", Type = DreamValueTypeFlag.String)]
[DreamProcParameter("Replacement", Type = DreamValueTypeFlag.String)]
[DreamProcParameter("Start", Type = DreamValueTypeFlag.Float, DefaultValue = 1)]
[DreamProcParameter("End", Type = DreamValueTypeFlag.Float, DefaultValue = 0)]
public static DreamValue NativeProc_replacetextEx_char(NativeProc.Bundle bundle, DreamObject? src, DreamObject? usr) {
//Wrapper function, Opendream defaults to counting by chars instead of bytes.
return NativeProc_replacetextEx(bundle, src, usr);
}

[DreamProc("rgb2num")]
[DreamProcParameter("color", Type = DreamValueTypeFlag.String, DefaultValue = "#FFFFFF")]
[DreamProcParameter("space", Type = DreamValueTypeFlag.Float, DefaultValue = 0)] // Same value as COLORSPACE_RGB
Expand Down Expand Up @@ -2852,6 +2922,17 @@ public static DreamValue NativeProc_splittext(NativeProc.Bundle bundle, DreamObj
}
}

[DreamProc("splittext_char")]
[DreamProcParameter("Text", Type = DreamValueTypeFlag.String)]
[DreamProcParameter("Delimiter", Type = DreamValueTypeFlag.String)]
[DreamProcParameter("Start", Type = DreamValueTypeFlag.Float, DefaultValue = 1)]
[DreamProcParameter("End", Type = DreamValueTypeFlag.Float, DefaultValue = 0)]
[DreamProcParameter("include_delimiters", Type = DreamValueTypeFlag.Float, DefaultValue = 0)]
public static DreamValue NativeProc_splittext_char(NativeProc.Bundle bundle, DreamObject? src, DreamObject? usr) {
//Wrapper function, Opendream defaults to counting by chars instead of bytes.
return NativeProc_splittext(bundle, src, usr);
}

private static void OutputToStatPanel(DreamManager dreamManager, DreamConnection connection, DreamValue name, DreamValue value) {
if (name.IsNull && value.TryGetValueAsDreamList(out var list)) {
foreach (var item in list.EnumerateValues())
Expand Down
Loading