Commit Graph

15 Commits

Author SHA1 Message Date
Xavier Del Campo Romero 9d3e754f36 Implement checkbox GUI element 2022-09-23 04:12:07 +02:00
Xavier Del Campo Romero 8f9737b776 Implement GUI line edit 2022-09-20 17:34:25 +02:00
Xavier Del Campo Romero c401b7663d Implement main menu 2022-06-26 21:51:47 +02:00
Xavier Del Campo Romero 7c75118429 Revamp gui component
`gui` was tighly coupled to game logic, and could not be extended for
other purposes. Therefore, a generic GUI implementation, loosely
inspired by well-known GUI frameworks such as GTK, is now provided, with
the following properties:

- Does not depend on dynamic or static memory allocation, only automatic
(i.e., stack) memory allocation required.
- Portable among existing implementations.
- Simple to extend.
- Tiny memory footprint.

`gui` is now composed by GUI elements that can be chained to form a tree
structure. This is useful e.g.: to calculate X/Y coordinates for a given
GUI element given its parent(s).

This commit also refactors the older implementation, moving
game-specific logic into `player` and making use of the new component.
2022-06-26 20:00:27 +02:00
Xavier Del Campo Romero 992e7fb935 peripheral: provide common actions
Whereas some actions are context-specific (e.g.: selecting a player),
some are context-independent and can be executed for all screens
(e.g.: exiting the game).
2022-06-24 17:28:38 +02:00
Xavier Del Campo Romero 3cb276b19f camera: remove dependency against terrain
This will allow using camera for purposes other than showing the game
map.
2022-06-12 23:19:03 +02:00
Xavier Del Campo Romero 0f9e2d8958 Split peripheral-related logic into its own component
This has several advantages:

- `camera` no longer needs to define public functions for each
peripheral type.
- Peripheral-related is now no longer tighly coupled to human_player,
so peripheral logic can be reused elsewhere e.g.: on menus.
- Makes camera_update_touch consistent compared to equivalent functions,
since now `pan` has now been moved to `camera` (as it should be).
2022-06-12 23:18:57 +02:00
Xavier Del Campo Romero a84a55aa25 Implement button component 2022-06-11 23:42:27 +02:00
Xavier Del Campo Romero 938ab93482 Make gfx_draw return int 2022-05-24 22:20:04 +02:00
Xavier Del Campo Romero 45337576df Implement touch controls 2022-03-31 06:50:33 +02:00
Xavier Del Campo Romero 82c61e3d1d Implement sub-tile collboxes
These will be later used by the pathfinding algorithm.
2022-03-30 08:28:47 +02:00
Xavier Del Campo Romero 6c5eb81b3c game.c: remove #if 0 2022-03-30 08:20:21 +02:00
Xavier Del Campo Romero 9eee43d3bb Add support for keyboard and mouse 2022-03-30 08:20:21 +02:00
Xavier Del Campo Romero 68383dad33 Refresh camera and terrain rendering on screen resize 2022-03-30 08:20:20 +02:00
Xavier Del Campo Romero 8c10334252 Add project source code 2022-03-30 08:20:20 +02:00