Commit Graph

280 Commits

Author SHA1 Message Date
Daan Vanden Bosch
243638879c Entity counts in area select are now updated when adding or removing entities. Added more unit tests. 2019-12-24 03:04:18 +01:00
Daan Vanden Bosch
100272a115 Added a QuestInfoController and added unit tests for QuestInfoView. 2019-12-23 22:38:44 +01:00
Daan Vanden Bosch
b8210f8ea7 Fixed bug in quest editor ui persisted that prevented empty Golden Layout stacks from closing. 2019-12-22 23:45:06 +01:00
Daan Vanden Bosch
ebe2c78ca9 Stop the quest runner when a different quest is set. 2019-12-22 23:38:22 +01:00
Daan Vanden Bosch
89ed00718e Don't advance the instruction pointer after jumping unconditionally. 2019-12-22 23:28:11 +01:00
Daan Vanden Bosch
66b8e808dd Fixed bug in QuestRunner that prevented the correct episode from reaching the VM. Improved logging performance in several different components. 2019-12-22 23:15:05 +01:00
Daan Vanden Bosch
be144ce9b1 Event section IDs and delays can now be edited. 2019-12-22 17:24:22 +01:00
Daan Vanden Bosch
79407523d8 Quest editor UI persister now remembers active item index of stacks again. 2019-12-22 17:14:01 +01:00
Daan Vanden Bosch
33026ce015 Improved golden layout config persistence. A prompt is now shown when the user tries to leave the page after making changes to the current quest. Set production log level to INFO. 2019-12-22 15:30:16 +01:00
Daan Vanden Bosch
5522e7c6af Small improvements to QuestRunner. 2019-12-22 13:50:55 +01:00
Daan Vanden Bosch
f1374fe100 Improved log view performance and fixed bug in quest runner. 2019-12-22 04:34:50 +01:00
Daan Vanden Bosch
2083793e67 Added basic test for application initialization. 2019-12-22 00:43:27 +01:00
Daan Vanden Bosch
05c9f3ce81 All code now uses HttpClient interface instead of fetch for improved testability. 2019-12-21 22:49:41 +01:00
Daan Vanden Bosch
15ea3f5112 Upgraded all dependencies. 2019-12-21 20:49:20 +01:00
Daan Vanden Bosch
8ce19fac62 Most dependencies are now injected to improve testability. 2019-12-21 19:40:42 +01:00
Daan Vanden Bosch
063d524a7b Tweaked styling of entity info view. Entity names are now always fully visible. 2019-12-21 16:07:41 +01:00
Daan Vanden Bosch
f8a9c65086 NPC wave numbers are now shown in the entity info view. 2019-12-21 15:56:24 +01:00
Daan Vanden Bosch
ccf8ea6630 ASM editor is now readonly when necessary again. 2019-12-21 14:33:14 +01:00
Daan Vanden Bosch
202c01bf25 Added support for p_dead_v3 opcode. 2019-12-20 21:13:59 +01:00
Daan Vanden Bosch
02332929af Fixed conditional jump instructions. Floor-local threads are now started up but not yet terminated when necessary. 2019-12-20 21:03:15 +01:00
Daan Vanden Bosch
8e0b7abc52 The current stepping line is now automatically scrolled into view. 2019-12-20 18:26:16 +01:00
Daan Vanden Bosch
e4dda8c1c7 Added key bindings for debugging actions. 2019-12-20 18:20:02 +01:00
Daan Vanden Bosch
c7cbc4a377 Stepping over sync calls works now. 2019-12-20 18:08:04 +01:00
Daan Vanden Bosch
027b50d3e4 Fixed sync calls and step out now works too. 2019-12-20 17:57:34 +01:00
Daan Vanden Bosch
714a2b500e Removed unnecessary code. 2019-12-20 16:11:45 +01:00
Daan Vanden Bosch
663ad75435 Debugging now happens in the VM itself, this simplifies the code. 2019-12-20 16:10:50 +01:00
Daan Vanden Bosch
352365170f Fixed bug that resulted in the starting floor's floor_handler to run too early. 2019-12-20 00:32:56 +01:00
Daan Vanden Bosch
3fee246bd8 Fixed a bug in game state reset when debugging. 2019-12-20 00:22:41 +01:00
Daan Vanden Bosch
f8fc12c468 Fixed some bugs and added VM support for bb_map_designate. 2019-12-20 00:11:54 +01:00
Daan Vanden Bosch
aa0d398545 The floor handler for the initial area is now run when running a quest. 2019-12-19 22:14:59 +01:00
Daan Vanden Bosch
17daa26fb3 Area geometry in editor 3D view no longer disappears when running a quest. 2019-12-19 21:11:48 +01:00
Daan Vanden Bosch
52f2ddccd2 Virtual machine now suspends instead of halts when there no threads anymore. 2019-12-19 20:45:02 +01:00
Daan Vanden Bosch
88a60a9223 Area selection is now enabled even when running a quest. 2019-12-19 20:11:12 +01:00
Daan Vanden Bosch
c1b733cadf Entity controls are now disabled when running a quest. 2019-12-19 20:02:52 +01:00
Daan Vanden Bosch
1c48ca15ec Removed unnecessary console.log statement. 2019-12-19 18:54:38 +01:00
Daan Vanden Bosch
20885cb0f2 Simplified Widget.finalize_construction. Added game state to QuestRunner and modified execution flow to enable loading of area/entity models. Split QuestModelManager into two different classes so a different loading strategy can used in the quest runner view. Quest runner view is now automatically created when running a quest. 2019-12-19 18:54:01 +01:00
Daan Vanden Bosch
4d6bf4ba5c Fixed VM unit tests. 2019-12-19 14:41:31 +01:00
Daan Vanden Bosch
0585bbacec Removed VM dependency on QuestModel. 2019-12-19 14:35:13 +01:00
Daan Vanden Bosch
3714f5582a Renamed ZeroableBuffer to Memory and put it into its own file. 2019-12-19 13:58:11 +01:00
Daan Vanden Bosch
fcff6a2cd6 Almost all quest editor UI elements are now disabled when running a quest in the VM. 2019-12-19 00:11:42 +01:00
Daan Vanden Bosch
3bd3be8c4a Moved Thread to its own file and renamed vm/index.ts to vm/VirtualMachine.ts. 2019-12-18 23:40:38 +01:00
Daan Vanden Bosch
786e83ad99 Put breakpoints in script editor gutter behind feature flag. 2019-12-18 23:03:29 +01:00
Daan Vanden Bosch
86187a0539 Fixed bug in script editor that would add breakpoints whenever a line was deleted. 2019-12-18 22:58:46 +01:00
Daan Vanden Bosch
46b62cfaf7 Stack arguments are now always popped, even if an opcode is not implemented. 2019-12-18 22:47:53 +01:00
Daan Vanden Bosch
2366cb3aa0 Refactored script debugging code to avoid circular dependencies and separate concerns. 2019-12-18 22:37:26 +01:00
Daan Vanden Bosch
c0e9856d8a Using Select instead of DropDown in RegistersView. Only use monospace font in register container. 2019-12-18 20:20:32 +01:00
Daan Vanden Bosch
28b8fa03d9 Simplified quest logging system. 2019-12-18 20:06:09 +01:00
Daan Vanden Bosch
4ee4de95fa *Fully* put new VM views behind feature flag. 2019-12-17 22:12:55 +01:00
Daan Vanden Bosch
b9ca58ee16 Fixed bug in area mesh loading. Put new VM views behind feature flag. 2019-12-17 22:09:15 +01:00
Daan Vanden Bosch
b2c8a56a7b Fixed bug in QuestEntityControls that resulted in entities being positioned incorrectly when transitioning between sections. 2019-12-17 22:03:17 +01:00
jtuu
bb1a6b185e Added an execution count to QuestRunner to prevent the browser from freezing. 2019-11-23 17:01:04 +02:00
jtuu
8c102976a8 Added a VM registers viewer. 2019-11-21 23:04:16 +02:00
jtuu
d16c1634ba Modified QuestRunner to set paused state to false every time the execution loop is started regardless of whether any breakpoints are hit. 2019-11-21 19:52:42 +02:00
jtuu
b24afee12a Fixed VM threading in auto-advance mode.
Now when a thread is started at least one advance is required to have valid execution state.
2019-11-21 15:22:47 +02:00
jtuu
8582a25bc3 Lint 2019-11-16 18:07:21 +02:00
jtuu
918d8f7bdc The script editor is now set to readonly mode when a quest is running. 2019-11-16 17:35:20 +02:00
jtuu
f6f5fa7c3f QuestRunner now works in inline args mode. 2019-11-16 17:08:09 +02:00
jtuu
c57595a7af Simplified the way the VM manages the registers and the string argument store. 2019-11-16 00:16:09 +02:00
jtuu
0365b40e55 Added stop button. 2019-11-15 20:17:24 +02:00
jtuu
24abf3ae7f Modified QuestRunner's execution flow.
Now it goes like this:
1. Advance instruction pointer.
2. Check for breakpoints.
3. Execute instruction.

Also fixed some bugs.
2019-11-15 19:59:05 +02:00
jtuu
6e41b6fb79 Reworked script editor decorations.
Breakpoints now move correctly when script is edited.
2019-11-15 19:59:05 +02:00
jtuu
8c4e0c2ed2 Hooked up the stepping buttons to their respective methods in QuestRunner. 2019-11-15 19:59:05 +02:00
jtuu
b8f0cbfcb3 Added running and paused properties to QuestRunner.
Also tried to improve the situation with the circular dependencies.
2019-11-15 19:59:05 +02:00
jtuu
a219200291 Added buttons for VM controls.
Also added new icons.
2019-11-15 19:59:05 +02:00
jtuu
69f044ead1 [VM] Changed how mapping labels to segment indices works slightly. 2019-11-15 19:59:05 +02:00
jtuu
5c6dc50b4e Started working on stepping execution for QuestRunner.
Step over and step in kind of work but there are still bugs. Step out is unimplemented.
2019-11-15 19:59:05 +02:00
jtuu
911bde2bd9 Highlight the source location currently being executed when VM pauses. 2019-11-14 00:34:07 +02:00
jtuu
90ad66e96d Breakpoints now cause VM to pause. 2019-11-14 00:31:20 +02:00
jtuu
144e9513ac Added toggleable icons that represent breakpoints in the script editor. 2019-11-13 21:51:30 +02:00
jtuu
fbc9d96d25 Fixed VM state resetting. 2019-11-13 21:50:01 +02:00
jtuu
d2b57bb0c6 [VM] Implemented template string parsing for arg_pushs.
Most of the tags aren't implemented though.
2019-11-13 19:10:30 +02:00
jtuu
66525ca00c Added definition for opcode 0xf882 get_pl_job. 2019-11-12 17:10:03 +02:00
jtuu
d85de25f31 [VM] Fixed a bug where string arguments did not have a null terminator. 2019-11-11 23:00:56 +02:00
jtuu
f6b766bda3 Fixed VM tests that were broken by the changes to ExecutionResult. 2019-11-11 18:09:51 +02:00
jtuu
b8db5d46fc [VM] Allow last instruction to return an ExecutionResult other than Halted.
The next call to execute will then be a no-op and return Halted.
2019-11-11 18:07:26 +02:00
jtuu
87cabac307 Added a unit test for list opcode. 2019-11-11 16:08:38 +02:00
jtuu
6b2a61bc4f Added RegTupRef argument support for the argument stack. 2019-11-11 16:07:25 +02:00
jtuu
fbd4df4b58 Changed the way VM input is handled.
Now the VM informs the runner when it requires input via ExecutionResult. Input is provided to the VM by calling methods directly on it.
Also implemented opcode list.
2019-11-11 15:21:13 +02:00
jtuu
b9e762fa6e Use the new message log in QuestRunner. 2019-11-08 18:34:58 +02:00
jtuu
7e99857baf Added a message log in the quest editor.
QuestEditorStore was extended to hold the state of the message log. The view is handled by a new core GUI class MessageLog.
2019-11-08 15:07:46 +02:00
Daan Vanden Bosch
9545f056ab Added QuestRunner for managing game state, orchestrating the VM and controlling the visual aspects of a virtual quest run. 2019-11-05 21:07:17 +01:00
Daan Vanden Bosch
4a755a884f Entity world-relative rotation now stays constant while translating manually. 2019-11-04 18:02:30 +01:00
Daan Vanden Bosch
db9d15b78a Fixed bug in computation of inverse rotation of section. The bug manifested while manually translating an entity across a rotated section. 2019-11-04 18:01:11 +01:00
Daan Vanden Bosch
8212348a81 Made event rendering more robust. Added call_now option to ListProperty.observe_list. 2019-11-04 17:19:57 +01:00
jtuu
e7a39168ae [VM] Print a warning instead of throwing an error when a unimplemented opcode is encountered. 2019-11-01 21:05:20 +02:00
jtuu
4441435302 [VM] Implemented opcode set_episode and made it possible to load the entire quest in the VM. 2019-11-01 21:04:50 +02:00
jtuu
89a119e90d Modified the function convert_quest_from_model to do a deep copy of the given object.
Added a couple other cloning functions.
2019-11-01 18:13:32 +02:00
Daan Vanden Bosch
af5c27a565 Removed unnecessary console.log statements. 2019-10-31 19:11:58 +01:00
Daan Vanden Bosch
ee76fb8aea Merge remote-tracking branch 'github/master' 2019-10-31 19:11:20 +01:00
Daan Vanden Bosch
f1fa19238d Event DAG edges are now shown with lines. 2019-10-31 19:11:14 +01:00
jtuu
c726cd3461 [VM] Implemented gettime opcode. 2019-10-30 23:00:06 +02:00
jtuu
260c070f34 [VM] Implemented get_random opcode and added a unit test for it. 2019-10-30 21:02:35 +02:00
Daan Vanden Bosch
95da6e9e57 Logging when duplicate events are encountered. 2019-10-29 15:26:10 +01:00
Daan Vanden Bosch
5f1b3d5ff1 Quest events are now grouped in DAGs. 2019-10-29 15:22:46 +01:00
Daan Vanden Bosch
dff39bd194 Improved events view UI. 2019-10-27 23:21:58 +01:00
Daan Vanden Bosch
13fd0a984c Fixed bug in QuestModel. 2019-10-27 22:47:38 +01:00
Daan Vanden Bosch
2ed9659d9b Only the current area's event chains are now shown. 2019-10-27 22:40:26 +01:00
Daan Vanden Bosch
d6ebb8e21a Added simple transparency to entities. Seems to work for most entities except for those that use translucent texture to emulate light rays etc. 2019-10-27 16:45:30 +01:00
jtuu
27e0d2fd6d [VM] Added a unit test for float arithmetic. 2019-10-17 23:57:47 +03:00
jtuu
f42d66e7e1 [VM] Transform float arithmethic arguments to valid 32-bit floats. 2019-10-17 23:53:15 +03:00