|
19 | 19 | import com.bladecoder.engine.assets.EngineAssetManager;
|
20 | 20 | import com.bladecoder.engine.model.BaseActor;
|
21 | 21 | import com.bladecoder.engine.model.CharacterActor;
|
| 22 | +import com.bladecoder.engine.model.Inventory; |
22 | 23 | import com.bladecoder.engine.model.Scene;
|
23 | 24 | import com.bladecoder.engine.model.VerbRunner;
|
24 | 25 | import com.bladecoder.engine.model.World;
|
|
27 | 28 | public class SetPlayerAction implements Action {
|
28 | 29 |
|
29 | 30 | @ActionProperty(type = Type.SCENE_CHARACTER_ACTOR, required = true)
|
30 |
| - @ActionPropertyDescription("The scene player") |
| 31 | + @ActionPropertyDescription("The scene player") |
31 | 32 | private SceneActorRef actor;
|
32 |
| - |
| 33 | + |
33 | 34 | @ActionProperty
|
34 |
| - @ActionPropertyDescription("The inventory 'id' for the player. If empty, the inventory will not change.") |
| 35 | + @ActionPropertyDescription("The inventory 'id' for the player. If empty, the inventory will not change.") |
35 | 36 | private String inventory;
|
36 |
| - |
| 37 | + |
37 | 38 | private World w;
|
38 |
| - |
| 39 | + |
39 | 40 | @Override
|
40 | 41 | public void init(World w) {
|
41 | 42 | this.w = w;
|
42 | 43 | }
|
43 | 44 |
|
44 | 45 | @Override
|
45 |
| - public boolean run(VerbRunner cb) { |
| 46 | + public boolean run(VerbRunner cb) { |
46 | 47 | Scene s = actor.getScene(w);
|
47 | 48 |
|
48 | 49 | BaseActor a = s.getActor(actor.getActorId(), true);
|
49 |
| - |
50 |
| - s.setPlayer((CharacterActor)a); |
51 |
| - |
52 |
| - if(inventory != null) { |
53 |
| - w.getInventory().dispose(); |
| 50 | + |
| 51 | + s.setPlayer((CharacterActor) a); |
| 52 | + |
| 53 | + if (inventory != null && !inventory.equals(w.getCurrentInventory())) { |
| 54 | + Inventory old = w.getInventory(); |
| 55 | + |
54 | 56 | w.setInventory(inventory);
|
55 | 57 | w.getInventory().loadAssets();
|
56 | 58 | EngineAssetManager.getInstance().finishLoading();
|
57 | 59 | w.getInventory().retrieveAssets();
|
| 60 | + |
| 61 | + old.dispose(); |
| 62 | + |
58 | 63 | }
|
59 | 64 |
|
60 | 65 | return false;
|
|
0 commit comments