debug param save works, bull/bear hitbox
This commit is contained in:
+17
-3
@@ -433,12 +433,22 @@ func save() -> void:
|
||||
if p["value"] == p["default"]:
|
||||
continue
|
||||
var re := RegEx.new()
|
||||
var literal := ""
|
||||
if p["type"] == TYPE_FLOAT:
|
||||
re.compile('(_reg_f\\("[^"]+",\\s*"%s",\\s*)([-\\d.e]+)' % key)
|
||||
src = re.sub(src, "$1" + _fmt_float(p["value"] as float))
|
||||
literal = _fmt_float(p["value"] as float)
|
||||
else:
|
||||
re.compile('(_reg_b\\("[^"]+",\\s*"%s",\\s*)(true|false)' % key)
|
||||
src = re.sub(src, "$1" + ("true" if bool(p["value"]) else "false"))
|
||||
literal = "true" if bool(p["value"]) else "false"
|
||||
var m := re.search(src)
|
||||
if m == null:
|
||||
push_warning("DP.save: no _reg_ line found for '%s' — skipped" % key)
|
||||
continue
|
||||
# Splice the value in by index rather than RegEx.sub(): sub()'s replacement
|
||||
# string parses "$n" as a backreference, so "$1"+"12.5" becomes "$112.5"
|
||||
# (group 112 → PCRE2 error → mangled output). Indexed splice inserts the
|
||||
# literal verbatim, exactly the value the user entered.
|
||||
src = src.substr(0, m.get_start(2)) + literal + src.substr(m.get_end(2))
|
||||
p["default"] = p["value"]
|
||||
|
||||
var wfile := FileAccess.open(path, FileAccess.WRITE)
|
||||
@@ -449,8 +459,12 @@ func save() -> void:
|
||||
wfile.close()
|
||||
|
||||
|
||||
# Godot's String % operator has no "g" conversion — "%.6g" % v slips past the
|
||||
# compiler (v is not const) but emits the literal "%.6g" at runtime, which would be
|
||||
# written straight into the source. "%s" gives the shortest round-tripping form,
|
||||
# matching the value the user entered; the guard keeps it a float literal.
|
||||
func _fmt_float(v: float) -> String:
|
||||
var s := "%.6g" % v
|
||||
var s := "%s" % v
|
||||
if not ("." in s or "e" in s):
|
||||
s += ".0"
|
||||
return s
|
||||
|
||||
Reference in New Issue
Block a user