Commit Graph

15 Commits

Author SHA1 Message Date
9d3e754f36 Implement checkbox GUI element 2022-09-23 04:12:07 +02:00
8f9737b776 Implement GUI line edit 2022-09-20 17:34:25 +02:00
e3356fde2d gui: Implement gui_deinit 2022-09-20 17:34:25 +02:00
4c5630b0d4 Remap calls to pad/mouse/keyboard to input 2022-09-20 16:56:30 +02:00
e636accfd5 Allow children of gui_container be resized anytime
So far, their position inside the container was determined when
initializing the interface. However, if a child were resized
afterwards, the container would not adjust its elements accordingly.
Moreover, the implementation for gui_container relied on hacking the
children's X/Y coordinates, which could only be done once.

Now, two additional members have been added to gui_common so that
specific X/Y offset can be determined by the parent, additionally to the
traditional rules followed by gui_coords. Despite the extra memory
footprint, it now allows containers to set specific X/Y offsets for
their children on every game cycle.
2022-07-10 00:26:48 +02:00
251bd41c44 Allow multiple button types 2022-07-07 02:37:25 +02:00
4f714af054 rounded_rect.h: fix typo 2022-07-07 02:37:25 +02:00
7325906351 gui/container: support spacing between GUI elements 2022-07-02 04:42:41 +02:00
93d2c39b1b gui/bar: support arbitrary x/y and width 2022-07-02 04:41:22 +02:00
b0eb562b9b gui: reuse callback data
There is no need to allocate memory for these callbacks for each single
GUI element. Instead, a single, statically-allocated instance can be
shared among all GUI elements of a given type.
2022-07-02 04:08:35 +02:00
e68c2fb4be gui: implement container
Containers, somewhat inspired by GtkBox, allow to packed other GUI
elements into a single row or column.
2022-07-02 00:53:03 +02:00
ec9f41f1ab gui: allow custom add_child callback 2022-07-02 00:45:51 +02:00
cff35e88f5 gui: implement {h,v}centered 2022-06-29 00:39:06 +02:00
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
8c10334252 Add project source code 2022-03-30 08:20:20 +02:00