• R/O
  • SSH

Commit

Tags
No Tags

Frequently used words (click to add to your profile)

javac++androidlinuxc#windowsobjective-ccocoa誰得qtpythonphprubygameguibathyscaphec計画中(planning stage)翻訳omegatframeworktwitterdomtestvb.netdirectxゲームエンジンbtronarduinopreviewer

Commit MetaInfo

Revisiona9c41e6fea4f0c6ab5dde2fb3834790e182ea880 (tree)
Time2019-04-12 03:46:05
Authorsebastian_bugiu <sebastian_ <bugiu@head...>
Commitersebastian_bugiu <sebastian_

Log Message

Adding level_patrol beginning cutscene.

Change Summary

Incremental Difference

diff -r af861a9349cf -r a9c41e6fea4f core/src/headwayEnt/blackholedarksun/parser/ast/ObjectEvent.java
--- a/core/src/headwayEnt/blackholedarksun/parser/ast/ObjectEvent.java Wed Apr 10 22:45:28 2019 +0300
+++ b/core/src/headwayEnt/blackholedarksun/parser/ast/ObjectEvent.java Thu Apr 11 21:46:05 2019 +0300
@@ -91,7 +91,17 @@
9191 return levelEvent;
9292 }
9393
94+ public LevelEvent getAsLevelEvent(ArrayList<ObjDefinition> objDefinitionList) {
95+ LevelEvent levelEvent = new LevelEvent();
96+ getAsLevelEvent(levelEvent, objDefinitionList);
97+ return levelEvent;
98+ }
99+
94100 public void getAsLevelEvent(LevelEvent levelEvent) {
101+ getAsLevelEvent(levelEvent, this.objDefinitionList);
102+ }
103+
104+ public void getAsLevelEvent(LevelEvent levelEvent, ArrayList<ObjDefinition> objDefinitionList) {
95105 for (ObjDefinition objDefinition : objDefinitionList) {
96106 for (Spawn spawn : spawnList) {
97107 if (isObj(spawn.getSpawnName()) != null) {
@@ -151,4 +161,8 @@
151161 public ArrayList<Spawn> getSpawnList() {
152162 return spawnList;
153163 }
164+
165+ public ArrayList<Exit> getExitList() {
166+ return exitList;
167+ }
154168 }
diff -r af861a9349cf -r a9c41e6fea4f core/src/headwayEnt/blackholedarksun/parser/dispatchers/CutsceneEventDispatcher.java
--- a/core/src/headwayEnt/blackholedarksun/parser/dispatchers/CutsceneEventDispatcher.java Wed Apr 10 22:45:28 2019 +0300
+++ b/core/src/headwayEnt/blackholedarksun/parser/dispatchers/CutsceneEventDispatcher.java Thu Apr 11 21:46:05 2019 +0300
@@ -22,6 +22,7 @@
2222 import headwayent.blackholedarksun.parser.ast.CompletionTime;
2323 import headwayent.blackholedarksun.parser.ast.DelayedEvent;
2424 import headwayent.blackholedarksun.parser.ast.Event;
25+import headwayent.blackholedarksun.parser.ast.Exit;
2526 import headwayent.blackholedarksun.parser.ast.ObjDefinition;
2627 import headwayent.blackholedarksun.parser.ast.ObjectEvent;
2728 import headwayent.blackholedarksun.parser.ast.ParallelTask;
@@ -29,6 +30,7 @@
2930 import headwayent.blackholedarksun.parser.ast.Position;
3031 import headwayent.blackholedarksun.parser.ast.SetSpeed;
3132 import headwayent.blackholedarksun.parser.ast.ShowText;
33+import headwayent.blackholedarksun.parser.ast.Spawn;
3234 import headwayent.blackholedarksun.world.WorldManager;
3335 import headwayent.blackholedarksun.world.WorldManagerBase;
3436 import headwayent.blackholedarksun.world.WorldManagerSP;
@@ -135,14 +137,12 @@
135137 if (checkDelayStart(event, new DelayStartCallable() {
136138 @Override
137139 public boolean call(Event event1) {
138- if (!event.getObjDefinitionList().isEmpty()) {
139-
140- ArrayList<LevelEvent> levelEvents = new ArrayList<>();
141-
142- levelEvents.add(event.getAsLevelEvent());
143- worldManager.spawnObjects(levelEvents.get(0));
144- worldManager.exitObjectsFromLevel(levelEvents.get(0));
145- }
140+// if (!event.getObjDefinitionList().isEmpty()) {
141+//
142+// LevelEvent levelEvent = event.getAsLevelEvent();
143+// worldManager.spawnObjects(levelEvent);
144+// worldManager.exitObjectsFromLevel(levelEvent);
145+// }
146146 return true;
147147 }
148148 })) {
@@ -262,13 +262,63 @@
262262 position.setExecuted(true);
263263 event.setState(Event.EventState.FINISHABLE);
264264 }
265- if (!event.getObjDefinitionList().isEmpty()) {
266- WorldManager.getSingleton().createEntitiesV2(event.getObjDefinitionList());
267- for (ObjDefinition objDefinition : event.getObjDefinitionList()) {
268- objDefinition.setExecuted(true);
265+ if (!event.getSpawnList().isEmpty() && !event.getSpawnList().get(0).isExecuted()) {
266+ ArrayList<ObjDefinition> objDefinitionList = event.getObjDefinitionList();
267+ if (objDefinitionList.isEmpty()) {
268+ throw new IllegalStateException("Cannot spawn without the object definition");
269269 }
270+ ArrayList<ObjDefinition> spawnObjDefinitionLiat = new ArrayList<>();
271+ boolean found = false;
272+ for (Spawn spawn : event.getSpawnList()) {
273+ found = false;
274+ for (ObjDefinition objDefinition : objDefinitionList) {
275+ if (objDefinition.getObjName().equalsIgnoreCase(spawn.getSpawnName())) {
276+ spawnObjDefinitionLiat.add(objDefinition);
277+ found = true;
278+ break;
279+ }
280+ }
281+ if (!found) {
282+ throw new IllegalStateException("Could not find object to spawn by name: " + spawn.getSpawnName());
283+ }
284+ }
285+ LevelEvent levelEvent = event.getAsLevelEvent(spawnObjDefinitionLiat);
286+ worldManager.spawnObjects(levelEvent);
287+ event.getSpawnList().get(0).setExecuted(true);
270288 event.setState(Event.EventState.FINISHABLE);
271289 }
290+ if (!event.getExitList().isEmpty() && !event.getExitList().get(0).isExecuted()) {
291+ ArrayList<ObjDefinition> objDefinitionList = event.getObjDefinitionList();
292+ if (objDefinitionList.isEmpty()) {
293+ throw new IllegalStateException("Cannot exit a spawned object without the object definition");
294+ }
295+ ArrayList<ObjDefinition> exitObjDefinitionLiat = new ArrayList<>();
296+ boolean found = false;
297+ for (Exit exit : event.getExitList()) {
298+ found = false;
299+ for (ObjDefinition objDefinition : objDefinitionList) {
300+ if (objDefinition.getObjName().equalsIgnoreCase(exit.getExitName())) {
301+ exitObjDefinitionLiat.add(objDefinition);
302+ found = true;
303+ break;
304+ }
305+ }
306+ if (!found) {
307+ throw new IllegalStateException("Could not find object to exit from cutscene by name: " + exit.getExitName());
308+ }
309+ }
310+ LevelEvent levelEvent = event.getAsLevelEvent(exitObjDefinitionLiat);
311+ worldManager.exitObjectsFromLevel(levelEvent);
312+ event.getExitList().get(0).setExecuted(true);
313+ event.setState(Event.EventState.FINISHABLE);
314+ }
315+// if (!event.getObjDefinitionList().isEmpty()) {
316+// WorldManager.getSingleton().createEntitiesV2(event.getObjDefinitionList());
317+// for (ObjDefinition objDefinition : event.getObjDefinitionList()) {
318+// objDefinition.setExecuted(true);
319+// }
320+// event.setState(Event.EventState.FINISHABLE);
321+// }
272322 // if (event.getDelayEnd() != null) {
273323
274324 // }
diff -r af861a9349cf -r a9c41e6fea4f desktop/raw/hotshot_gamedata/sl_level_patrol_begin.hsl
--- a/desktop/raw/hotshot_gamedata/sl_level_patrol_begin.hsl Wed Apr 10 22:45:28 2019 +0300
+++ b/desktop/raw/hotshot_gamedata/sl_level_patrol_begin.hsl Thu Apr 11 21:46:05 2019 +0300
@@ -60,7 +60,7 @@
6060 }
6161 camera_event
6262 {
63- position 0.0 0.0 50.0
63+ position 0.0 0.0 150.0
6464 look_at "Defender0" 5 secs
6565 end_delay 1 secs
6666
@@ -73,7 +73,7 @@
7373 {
7474 start_delay 2 secs
7575 attach "Defender0"
76- position 50.0 0.0 0.0 // relative to obj
76+ position 150.0 0.0 0.0 // relative to obj
7777 look_at "Defender0"
7878 end_delay 3000 ms
7979 }
@@ -90,7 +90,7 @@
9090 {
9191 start_delay 2 secs
9292 attach "Defender1"
93- position 50.0 0.0 0.0 // relative to obj
93+ position 150.0 0.0 0.0 // relative to obj
9494 look_at "Defender1"
9595 end_delay 3000 ms
9696 }
@@ -102,30 +102,34 @@
102102 }
103103 camera_event
104104 {
105- show_text_pos "What the ...?" 0.5 0.5 3000 ms
105+ show_text_pos "What the ...?" 0.5 0.5 6000 ms
106106 }
107107 obj_event
108108 {
109109 obj_def "Attacker0"
110110 {
111- mesh ship_alien0
112- type fighter_ship
111+ mesh "ship_alien0"
112+ type "fighter_ship"
113113 position 0.0 -100.0 -1600.0
114114 orientation 0.0 1.0 0.0 180.0
115115 speed 0.0 0.0 5.0
116116 ai 0
117117 friendly 0
118- behavior aggresive
118+ behavior "aggressive"
119119 health 100
120120 }
121121
122122 spawn "Attacker0"
123123 }
124+camera_detach
125+{
126+ detach
127+}
124128 camera_attach
125129 {
126- start_delay 2 secs
130+ start_delay 5 secs
127131 attach "Attacker0"
128- position 50.0 0.0 0.0 // relative to obj
132+ position 150.0 0.0 0.0 // relative to obj
129133 look_at "Attacker0"
130134 end_delay 3000 ms
131135 }
@@ -133,56 +137,5 @@
133137 {
134138 detach
135139 }
136-obj_event
137-{
138- obj "Defender0"
139- change_speed 20.0 // change ship speed with the maximum delta/second
140-}
141-obj_event
142-{
143- obj "Defender0"
144- change_speed 50.0
145- completion_time 5 secs // The speed must be reached within 5 secs if the ship acceleration permits it
146-}
147-parallel_task
148-{
149- // We need a way to execute events in parallel and advance once all have been completed
150- obj_event
151- {
152- obj "Defender0"
153- change_speed 20.0
154- }
155- camera_detach
156- {
157- start_delay 2 secs
158- detach
159- }
160- obj_event
161- {
162- obj_def "Defender2"
163- {
164- mesh "ship_human1"
165- type "fighter_ship"
166- position -500.0 0.0 300.0
167- orientation 0.0 1.0 0.0 180.0
168- speed 0.0 0.0 -0.0
169- ai 0
170- friendly 1
171- behavior "defensive"
172- health 100
173- }
174-
175- spawn "Defender2"
176- }
177-}
178-
179-parallel_task
180-{
181- obj_event
182- {
183- obj "Defender1"
184- change_speed 20.0
185- }
186-}
187140
188141 }