Commit graph

328 commits

Author SHA1 Message Date
Vsevolod Kremianskii
1ef00f4728 Reorganize unit tests
- Link to a single executable
- One file per class
- Group files into folders by module
2021-06-19 07:47:39 +07:00
Vsevolod Kremianskii
357388914c Make game ID and GUI color resolution part of the Game class
Because _game.isKotOR() and _game.getGUIColorBase() are more readable
than isKotOR(_game.gameId()) and getBaseColor(_game.gameId())
respectively.
2021-06-18 09:11:15 +07:00
Vsevolod Kremianskii
b4432595b4 Simplify filenames in scene/node 2021-06-14 11:44:53 +07:00
Vsevolod Kremianskii
afdd80f3b3 Simplify filenames in game/camera 2021-06-14 11:23:28 +07:00
Vsevolod Kremianskii
d88156748f Simplify filenames in game/action
E.g., `#include "action/docommand.h"` reads better than `#include "action/commandaction.h"`.
2021-06-14 11:09:06 +07:00
e77e40085b Update minimum required cmake version
Signed-off-by: William Brawner <me@wbrawner.com>
2021-06-14 04:55:38 +07:00
Vsevolod Kremianskii
452baa3a16 Drop Stopwatch class
I don't see it being used any time used.
2021-06-13 10:40:59 +07:00
ef12fff06b Fix builds on macOS 2021-06-11 11:10:29 +07:00
Vsevolod Kremianskii
e265fb43d2 Use precompiled headers to improve compilation time 2021-06-11 10:44:08 +07:00
f3465b742a Add Slider control 2021-06-10 08:38:14 +07:00
Vsevolod Kremianskii
1690864689 Add placeholders for all script routines
Except those used for mini-games.
2021-06-06 13:22:37 +07:00
Vsevolod Kremianskii
582b87b540 Implement saving/loading party members and global variables
While at it, refactor GFF field construction.
2021-06-05 02:50:21 +07:00
Vsevolod Kremianskii
f34b0fd3f4 Treat UseFeat as normal attack
Until special attacks are properly implemented.
2021-05-27 09:27:50 +07:00
Vsevolod Kremianskii
9166d49f08 Replace OpenLock with UseSkill(Security) action 2021-05-27 07:20:46 +07:00
Vsevolod Kremianskii
b993989ae3 Add use feat actions to the action queue 2021-05-26 23:16:40 +07:00
Vsevolod Kremianskii
76bb4113dc Convert featureutil into Features class 2021-05-22 15:24:13 +07:00
Vsevolod Kremianskii
abe9aabc96 Convert stateutil to Context
Fits better into the new DI architecture.
2021-05-22 13:24:42 +07:00
Vsevolod Kremianskii
fe6abcc412 Refactor dependency injection
- Add Service class per module
- Services store and initialize dependencies
- To reduce number of dependenices passed, Service Locator pattern is
  used
2021-05-22 11:20:24 +07:00
45de5e7699 fixup! Add install commands to CMake 2021-05-22 08:38:29 +07:00
05cdef97c8 Add install commands to CMake
Signed-off-by: William Brawner <me@wbrawner.com>
2021-05-22 08:38:29 +07:00
Vsevolod Kremianskii
f5c0837fc3 Add service locator classes 2021-05-21 12:12:57 +07:00
Vsevolod Kremianskii
ec065ab68b Simplify null checks in ctors 2021-05-20 21:07:35 +07:00
Vsevolod Kremianskii
e9d0aeac5f Replace all remaining singletons with dependency injection
Needs major cleanup, but allegedly the code is more controllable now.
2021-05-20 20:26:54 +07:00
Vsevolod Kremianskii
1fee22c581 Convert all game singletons to injectable dependencies 2021-05-19 15:59:41 +07:00
Vsevolod Kremianskii
609afc7cf7 Rename SceneLeaf to SceneNodeElement 2021-05-19 12:42:26 +07:00
Vsevolod Kremianskii
8688e9d37b Load Force Powers from 2DA 2021-05-19 12:06:27 +07:00
Vsevolod Kremianskii
081b4877b8 Load feats from 2DA 2021-05-19 10:10:55 +07:00
Vsevolod Kremianskii
95f9fce3c4 Fix render order between particles and grass clusters 2021-05-19 01:22:05 +07:00
Vsevolod Kremianskii
e27a77b1e9 Combine Object and ActionQueue 2021-05-18 12:21:07 +07:00
Vsevolod Kremianskii
6c47a9de8e Make ObjectSelector, CreatureFinder and Perception part of Area 2021-05-18 11:44:51 +07:00
Vsevolod Kremianskii
eaaaa834bb Remove unused DebugOverlay class 2021-05-18 11:22:41 +07:00
Vsevolod Kremianskii
3ea7c3f869 Flatten CreatureAttributes/Abilities/Skills structure 2021-05-18 11:15:26 +07:00
Vsevolod Kremianskii
2113d13a0d Use Bezier curves for emitter constraints 2021-05-18 08:37:04 +07:00
Vsevolod Kremianskii
fc32d64642 Revert StateManager to stateutil
It's just easier to use that way.
2021-05-18 06:01:05 +07:00
Vsevolod Kremianskii
c4985f8684 Disable back-face culling for particles, grass and etc. 2021-05-16 14:08:25 +07:00
Vsevolod Kremianskii
740440ca78 Major refactoring of the scene management system 2021-05-14 23:31:05 +07:00
Vsevolod Kremianskii
aeffc4b453 Rename ModelNodeSceneNode to MeshSceneNode 2021-05-13 15:16:49 +07:00
Vsevolod Kremianskii
366d8d739d Major graphics/model refactoring
- Decouple Model and ModelNode from MdlReader
- Make Emitter a nested struct under ModelNode
- Read all known controller types
2021-05-13 14:54:23 +07:00
Vsevolod Kremianskii
640b5a3c8e Improve grass lightmapping
- Read face materials from MDL
- Use AABB model node, not walkmesh, to create grass clusters
- Use barycentric coordinates to interpolate texture coordinates

While at it, add Mesh methods to draw a subset of triangles.
2021-05-12 12:05:04 +07:00
Vsevolod Kremianskii
2843761be0 Add mesh and texture subdirectories to engine/graphics 2021-05-11 23:05:34 +07:00
Vsevolod Kremianskii
214aded7a4 Refactor ModelMesh
- Make it a struct, given how it doesn't have a behavior
- Place it under ModelNode
2021-05-11 22:25:52 +07:00
Vsevolod Kremianskii
0e2ffbee9d Refactor VertexOffsets
- Extract from Mesh
- Rename to VertexAttributes
- Move stride on top
2021-05-11 19:17:34 +07:00
Vsevolod Kremianskii
ad399815b7 Refactor collision detection
- Drop CollisionDetector class as unnecessary abstraction
- Move collision detection code from area.cpp into area_collision.cpp
- Implement sliding along obstacle normals
- Temporarily disable collision between creatures
2021-05-10 21:57:21 +07:00
Vsevolod Kremianskii
e8ff1d9ece Revise PBR shaders
While at it, move GLSL sources into a separate folder. Also split them
into multiple files: common, Blinn-Phong and PBR.
2021-05-07 18:55:17 +07:00
Vsevolod Kremianskii
a0e72164ed Convert stateutil into StateManager
Apparently, application-side caching of GL states improves performance.
2021-05-06 08:07:12 +07:00
Vsevolod Kremianskii
ae7dc8eb12 Move GLSL shaders into a separate CPP file 2021-05-06 07:42:28 +07:00
Vsevolod Kremianskii
62ed8f58e2 Move tools, launcher, external and tests under src directory 2021-05-05 08:08:12 +07:00
Vsevolod Kremianskii
67076473b2 Rename librender to libgraphics 2021-05-05 00:24:53 +07:00
Vsevolod Kremianskii
e3d49fd3b2 Implement footstep sounds 2021-05-04 23:21:18 +07:00
Vsevolod Kremianskii
ae47b3de64 Replace libtga with a custom TGAWriter 2021-05-04 16:22:22 +07:00