DEADSOFTWARE

restarting the same map will not reload textures (yay, quickload!); don't spam log...
[d2df-sdl.git] / src / shared / xdynrec.pas
index ac55cf5d0360202e28589c97e5525e71253dc3e2..12d7256429d473c5f46061d7a7fe4084d2251f97 100644 (file)
@@ -249,6 +249,7 @@ type
 
     procedure setUserField (const fldname: AnsiString; v: LongInt);
     procedure setUserField (const fldname: AnsiString; v: AnsiString);
+    procedure setUserField (const fldname: AnsiString; v: Boolean);
 
   public
     property id: AnsiString read mId; // for map parser
@@ -1985,6 +1986,31 @@ begin
 end;
 
 
+procedure TDynRecord.setUserField (const fldname: AnsiString; v: Boolean);
+var
+  fld: TDynField;
+begin
+  if (Length(fldname) = 0) then exit;
+  fld := field[fldname];
+  if (fld <> nil) then
+  begin
+    if (fld.mType <> fld.TType.TBool) or (fld.mEBS <> fld.TEBS.TNone) then
+    begin
+      raise Exception.Create(Format('invalid user field ''%s'' type', [fld.name]));
+    end;
+  end
+  else
+  begin
+    fld := TDynField.Create(fldname, fld.TType.TBool);
+    fld.mOwner := self;
+    fld.mIVal := Integer(v);
+    fld.mInternal := true;
+    fld.mDefined := true;
+    addField(fld);
+  end;
+end;
+
+
 procedure TDynRecord.parseDef (pr: TTextParser);
 var
   fld: TDynField;