Skip to content

Commit f07854c

Browse files
committed
Fix bug in IfAttrAction.
1 parent 5a986ee commit f07854c

File tree

1 file changed

+40
-10
lines changed

1 file changed

+40
-10
lines changed

blade-engine/src/com/bladecoder/engine/actions/IfAttrAction.java

Lines changed: 40 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -59,24 +59,36 @@ public boolean run(VerbRunner cb) {
5959
Scene s = actor.getScene(w);
6060

6161
final String actorId = actor.getActorId();
62-
BaseActor a = s.getActor(actorId, true);
6362

64-
if (a == null) {
65-
EngineLogger.error(getClass() + "- No not found: " + actorId);
66-
return false;
67-
}
63+
if (attr.equals(ActorAttribute.STATE)) {
64+
BaseActor a = s.getActor(actorId, true);
65+
if (a == null || !(a instanceof InteractiveActor)) {
66+
EngineLogger.error(getClass() + "- No not found: " + actorId);
67+
return false;
68+
}
6869

69-
if (attr.equals(ActorAttribute.STATE) && a instanceof InteractiveActor) {
7070
InteractiveActor ia = (InteractiveActor) a;
7171
if (!ActionUtils.compareNullStr(value, ia.getState())) {
7272
gotoElse(cb);
7373
}
7474
} else if (attr.equals(ActorAttribute.VISIBLE)) {
75+
BaseActor a = s.getActor(actorId, true);
76+
if (a == null) {
77+
EngineLogger.error(getClass() + "- No not found: " + actorId);
78+
return false;
79+
}
80+
7581
boolean val = Boolean.parseBoolean(value);
7682
if (val != a.isVisible()) {
7783
gotoElse(cb);
7884
}
7985
} else if (attr.equals(ActorAttribute.INTERACTIVE)) {
86+
BaseActor a = s.getActor(actorId, true);
87+
if (a == null) {
88+
EngineLogger.error(getClass() + "- No not found: " + actorId);
89+
return false;
90+
}
91+
8092
boolean val = Boolean.parseBoolean(value);
8193

8294
if (a instanceof InteractiveActor) {
@@ -105,8 +117,7 @@ public boolean run(VerbRunner cb) {
105117

106118
SpriteActor item = null;
107119

108-
if (a != null)
109-
item = inventory.get(a.getId());
120+
item = inventory.get(actorId);
110121

111122
if ((val && item == null) || (!val && item != null)) {
112123
gotoElse(cb);
@@ -130,12 +141,25 @@ public boolean run(VerbRunner cb) {
130141

131142
if ((val && a2 == null) || (!val && a2 != null))
132143
gotoElse(cb);
133-
} else if (attr.equals(ActorAttribute.LAYER) && a instanceof InteractiveActor) {
144+
} else if (attr.equals(ActorAttribute.LAYER)) {
145+
BaseActor a = s.getActor(actorId, true);
146+
if (a == null || !(a instanceof InteractiveActor)) {
147+
EngineLogger.error(getClass() + "- No not found: " + actorId);
148+
return false;
149+
}
150+
134151
InteractiveActor ia = (InteractiveActor) a;
135152
if (!ActionUtils.compareNullStr(value, ia.getLayer())) {
136153
gotoElse(cb);
137154
}
138-
} else if (attr.equals(ActorAttribute.DIRECTION) && a instanceof SpriteActor) {
155+
} else if (attr.equals(ActorAttribute.DIRECTION)) {
156+
157+
BaseActor a = s.getActor(actorId, true);
158+
if (a == null || !(a instanceof SpriteActor)) {
159+
EngineLogger.error(getClass() + "- No not found: " + actorId);
160+
return false;
161+
}
162+
139163
SpriteActor sa = (SpriteActor) a;
140164

141165
if (sa.getRenderer() instanceof AnimationRenderer) {
@@ -152,6 +176,12 @@ public boolean run(VerbRunner cb) {
152176
}
153177
}
154178
} else if (attr.equals(ActorAttribute.INSIDE)) {
179+
BaseActor a = s.getActor(actorId, true);
180+
if (a == null) {
181+
EngineLogger.error(getClass() + "- No not found: " + actorId);
182+
return false;
183+
}
184+
155185
BaseActor insideActor = w.getCurrentScene().getActor(value, false);
156186

157187
if (insideActor == null) {

0 commit comments

Comments
 (0)