diff options
| author | Xavier Del Campo Romero <xavi.dcr@tutanota.com> | 2021-07-03 00:49:03 +0200 |
|---|---|---|
| committer | Xavier Del Campo Romero <xavi.dcr@tutanota.com> | 2022-03-30 08:20:20 +0200 |
| commit | 6b9f686913efc3725b2690033cd4f398e07076ba (patch) | |
| tree | e9aa91a6b9f617d78123ebe7ad272fc42a60d306 /src/player/inc | |
| parent | c9e6ae44a9aeb89b3f48f3443d6baa80103f7445 (diff) | |
| download | jancity-6b9f686913efc3725b2690033cd4f398e07076ba.tar.gz | |
Add project source code
Diffstat (limited to 'src/player/inc')
| -rw-r--r-- | src/player/inc/human_player.h | 69 | ||||
| -rw-r--r-- | src/player/inc/player.h | 71 |
2 files changed, 140 insertions, 0 deletions
diff --git a/src/player/inc/human_player.h b/src/player/inc/human_player.h new file mode 100644 index 0000000..6d97cf7 --- /dev/null +++ b/src/player/inc/human_player.h @@ -0,0 +1,69 @@ +#ifndef HUMAN_PLAYER_H +#define HUMAN_PLAYER_H + +#include <camera.h> +#include <instance.h> +#include <pad.h> +#include <player.h> +#include <stdbool.h> +#include <stddef.h> + +#ifdef __cplusplus +extern "C" +{ +#endif + +enum {MAX_SELECTED_INSTANCES = 4}; + +struct human_player +{ + struct player pl; + struct camera cam; + struct pad pad; + + struct sel_instance + { + enum sel_type + { + INSTANCE_TYPE_UNIT, + INSTANCE_TYPE_BUILDING, + INSTANCE_TYPE_RESOURCE + } type; + + union sel_data + { + const struct unit *u; + const struct building *b; + const struct resource *r; + const struct instance *i; + struct unit *rw_u; + } d; + } sel[MAX_SELECTED_INSTANCES]; + + struct + { + const struct instance *ins; + unsigned char t, n; + bool render; + } target; + + size_t n_sel; + bool top_gui; + unsigned long gui_res[MAX_RESOURCE_TYPES]; +}; + +struct human_player_cfg +{ + struct player_cfg pl; + int padn; +}; + +int human_player_init(const struct human_player_cfg *cfg, struct human_player *h); +bool human_player_update(struct human_player *h, struct player_others *o); +int human_player_render(const struct human_player *h, const struct player_others *o); + +#ifdef __cplusplus +} +#endif + +#endif /* HUMAN_PLAYER_H */ diff --git a/src/player/inc/player.h b/src/player/inc/player.h new file mode 100644 index 0000000..25f4d81 --- /dev/null +++ b/src/player/inc/player.h @@ -0,0 +1,71 @@ +#ifndef PLAYER_H +#define PLAYER_H + +#include <building.h> +#include <camera.h> +#include <instance.h> +#include <pad.h> +#include <resource.h> +#include <tech.h> +#include <unit.h> +#include <stdbool.h> +#include <stddef.h> + +#ifdef __cplusplus +extern "C" +{ +#endif + +typedef unsigned int player_team; + +enum +{ + PLAYER_MAX_UNITS = 5, + PLAYER_MAX_BUILDINGS = 5 +}; + +struct player +{ + enum player_color + { + PLAYER_COLOR_BLUE, + PLAYER_COLOR_RED + } color; + + player_team team; + bool alive; + struct unit units[PLAYER_MAX_UNITS]; + struct building buildings[PLAYER_MAX_BUILDINGS]; + unsigned long resources[MAX_RESOURCE_TYPES]; + size_t pop, bpop; + + struct + { + struct unit_tech u; + } tree; +}; + +struct player_cfg +{ + enum player_color color; + player_team team; + unsigned long x, y; +}; + +struct player_others +{ + struct player *pl; + struct resource *res; + size_t n_pl, n_res; +}; + +int player_init(const struct player_cfg *cfg, struct player *pl); +int player_create_unit(const struct unit_cfg *cfg, struct player *pl); +int player_create_building(const struct building_cfg *cfg, struct player *pl); +void player_update(struct player *p); + +#ifdef __cplusplus +} +#endif + +#endif /* PLAYER_H */ |
