fix blades data cloning on c++

This commit is contained in:
2022-06-09 01:17:56 +00:00
parent 74601ddbeb
commit ef5bc6ce1b
5 changed files with 23 additions and 6 deletions

View File

@@ -121,7 +121,11 @@ class CreatureData {
public function clone():CreatureData { public function clone():CreatureData {
var cd = new CreatureData(); var cd = new CreatureData();
for (field in CreatureData.getInstanceFields()) { for (field in CreatureData.getInstanceFields()) {
cd.setField(field, this.field(field)); try {
cd.setField(field, this.field(field));
} catch (e) {
// can't set functions in c++
}
} }
return cd; return cd;
} }

View File

@@ -34,7 +34,11 @@ class FloorData {
public function clone():FloorData { public function clone():FloorData {
var fd = new FloorData(); var fd = new FloorData();
for (field in FloorData.getInstanceFields()) { for (field in FloorData.getInstanceFields()) {
fd.setField(field, this.field(field)); try {
fd.setField(field, this.field(field));
} catch (e) {
// can't set functions in c++
}
} }
return fd; return fd;
} }

View File

@@ -37,7 +37,11 @@ class ItemData {
public function clone():ItemData { public function clone():ItemData {
var id = new ItemData(); var id = new ItemData();
for (field in ItemData.getInstanceFields()) { for (field in ItemData.getInstanceFields()) {
id.setField(field, this.field(field)); try {
id.setField(field, this.field(field));
} catch (e) {
// can't set functions in c++
}
} }
return id; return id;
} }

View File

@@ -255,7 +255,8 @@ class ScenData {
try { try {
interp.execute(parser.parseString(line)); interp.execute(parser.parseString(line));
} catch (e) { }
catch (e) {
trace('line `$line` failed because $e'); trace('line `$line` failed because $e');
} }
} }

View File

@@ -66,7 +66,11 @@ class TerrainData {
public function clone():TerrainData { public function clone():TerrainData {
var td = new TerrainData(); var td = new TerrainData();
for (field in TerrainData.getInstanceFields()) { for (field in TerrainData.getInstanceFields()) {
td.setField(field, this.field(field)); try {
td.setField(field, this.field(field));
} catch (e) {
// can't set functions in c++
}
} }
return td; return td;
} }