aboutsummaryrefslogtreecommitdiff
path: root/src
Commit message (Collapse)AuthorAgeFilesLines
...
* gui: allow custom add_child callbackXavier Del Campo Romero2022-07-022-0/+4
|
* menu.c: center play button on screenXavier Del Campo Romero2022-06-291-2/+2
|
* button.c: fail on negative widthXavier Del Campo Romero2022-06-291-0/+2
|
* gui: implement {h,v}centeredXavier Del Campo Romero2022-06-295-3/+70
|
* font: implement font_dimXavier Del Campo Romero2022-06-292-16/+46
|
* Deprecate memset(3) for zero-initXavier Del Campo Romero2022-06-272-2/+2
|
* human_player_gui.c: fix segfault when selecting one unitXavier Del Campo Romero2022-06-271-1/+1
| | | | | | | Checking against `sel` is just plain wrong, since it always expected to be non-NULL, since `h->sel` is an array defined in `struct human_player`. Instead, `sel->d.i` is the pointer that should be checked.
* human_player: deprecate memset(3) for zero-initXavier Del Campo Romero2022-06-262-7/+12
|
* human_player.c: reset deselected instancesXavier Del Campo Romero2022-06-261-0/+9
|
* Fix hp bar not being displayed when carryingXavier Del Campo Romero2022-06-261-7/+6
|
* ps1/heap.c: bump heap sizeXavier Del Campo Romero2022-06-261-1/+1
|
* Implement main menuXavier Del Campo Romero2022-06-267-11/+104
|
* terrain: fix wrong renderingXavier Del Campo Romero2022-06-261-2/+2
| | | | | The older implementation would leave empty areas on the right side of the screen.
* font: deprecate font_printfXavier Del Campo Romero2022-06-262-20/+0
| | | | This function is no longer needed since `gui` was revamped.
* Revamp gui componentXavier Del Campo Romero2022-06-2623-598/+1245
| | | | | | | | | | | | | | | | | | | | `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.
* font: add font_putsXavier Del Campo Romero2022-06-262-0/+7
|
* peripheral.c: initialize common members onlyXavier Del Campo Romero2022-06-261-1/+1
| | | | Other members will be initialized according to peripheral configuration.
* Deprecate memset(3) over C99 compound literals for zero-initXavier Del Campo Romero2022-06-263-3/+3
| | | | | Using memset(3) does not ensure pointers are assigned to NULL for all platforms.
* player: limit data sizes for resources and populationXavier Del Campo Romero2022-06-263-3/+6
| | | | | - All platforms should allow for the same resources. - Population is not expected to exceed UCHAR_MAX on any platform.
* camera: implement fixed cursor movementXavier Del Campo Romero2022-06-243-3/+77
| | | | | | | | | | | On platforms with PERIPHERAL_TYPE_PAD, navigating through menus and options can be cumbersome if moving the cursor freely around the screen. Therefore, this commit instead defines a list of (X, Y) coordinates that the cursor can jump to. The implementation also attempts to guess which direction the cursor should jump to for the previous/next point, and hence determine which button should be pressed by the user.
* camera.c: refactor cursor_initXavier Del Campo Romero2022-06-241-4/+15
| | | | So that uninitialized members are set to 0.
* peripheral: provide common actionsXavier Del Campo Romero2022-06-246-38/+38
| | | | | | 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).
* camera: remove dependency against terrainXavier Del Campo Romero2022-06-126-9/+20
| | | | | This will allow using camera for purposes other than showing the game map.
* Split peripheral-related logic into its own componentXavier Del Campo Romero2022-06-1212-78/+164
| | | | | | | | | | | 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).
* sdl-1.2/sound.c: use SDL_WasInitXavier Del Campo Romero2022-06-111-4/+2
|
* sdl-1.2: return to original dimensions on fullscreen exitXavier Del Campo Romero2022-06-111-3/+8
|
* Implement button componentXavier Del Campo Romero2022-06-115-1/+169
|
* pad/CMakeLists.txt: add missing call to target_link_libraries()Xavier Del Campo Romero2022-06-081-0/+1
|
* Make gfx_draw return intXavier Del Campo Romero2022-05-244-4/+11
|
* Use realloc(3) directlyXavier Del Campo Romero2022-05-241-7/+1
| | | | It is simply not true realloc(3) cannot be used with NULL pointers.
* font.c: avoid several va_list in favor of large bufferXavier Del Campo Romero2022-05-241-32/+6
|
* Allow systems without sound supportXavier Del Campo Romero2022-05-244-11/+32
|
* Remove unused minor stuffXavier Del Campo Romero2022-03-312-2/+1
|
* resource.c: decouple collbox from sprite dimensionsXavier Del Campo Romero2022-03-311-6/+26
|
* Fix exit conditionXavier Del Campo Romero2022-03-311-1/+1
|
* Implement touch controlsXavier Del Campo Romero2022-03-319-18/+177
|
* Implement sub-tile collboxesXavier Del Campo Romero2022-03-309-7/+104
| | | | These will be later used by the pathfinding algorithm.
* Rename MAP_{X|Y} to MAP_{W|H}Xavier Del Campo Romero2022-03-303-8/+8
|
* camera: implement mouse supportXavier Del Campo Romero2022-03-301-2/+27
|
* Move CURSOR_{WIDTH|HEIGHT} to library scopeXavier Del Campo Romero2022-03-302-13/+13
|
* sdl-1.2/mouse.c: fix right click eventsXavier Del Campo Romero2022-03-301-1/+8
|
* sdl-1.2: implement rect_init and semitrans_rect_initXavier Del Campo Romero2022-03-301-2/+7
|
* sdl-1.2: implement env.cXavier Del Campo Romero2022-03-301-7/+82
|
* gfx: separate port-specific interfacesXavier Del Campo Romero2022-03-3016-32/+105
|
* game.c: remove #if 0Xavier Del Campo Romero2022-03-301-2/+2
|
* Add support for keyboard and mouseXavier Del Campo Romero2022-03-3026-237/+836
|
* Add metadata header to media filesXavier Del Campo Romero2022-03-308-5/+172
| | | | | | | | | | The following properties are supported: - Sound: "loop". Must be either 0 or 1 - Images: "transparent". Must be either 0 or 1 These headers are only used for non-PS1 builds, since .TIM and .VAG files do already implement such information.
* container.c: distinguish ferror/feof from other errorsXavier Del Campo Romero2022-03-301-2/+8
|
* terrain.c: use long for map coordinatesXavier Del Campo Romero2022-03-301-1/+1
|
* sdl-1.2: hide system cursorXavier Del Campo Romero2022-03-301-0/+1
|