entity, species, body parts and related
This commit is contained in:
parent
1cce3bbeaf
commit
cd3027cedf
|
@ -14,6 +14,8 @@ include_directories(include)
|
|||
|
||||
set(SOURCES
|
||||
src/main.c
|
||||
src/entity/print.c
|
||||
src/entity/init.c
|
||||
src/disp/display.c
|
||||
src/disp/print.c
|
||||
src/disp/init.c
|
||||
|
|
|
@ -0,0 +1,11 @@
|
|||
#pragma once
|
||||
|
||||
#include "species.h"
|
||||
|
||||
struct Entity {
|
||||
enum Species body[BODY_PARTS];
|
||||
};
|
||||
|
||||
struct Entity entity_p_init(void);
|
||||
struct Entity entity_e_init(void);
|
||||
void entity_print_desc(struct Entity entity);
|
|
@ -0,0 +1,5 @@
|
|||
#pragma once
|
||||
|
||||
enum Species { VOID, HUMAN, SPIDER, DUCK, BABOON };
|
||||
#define BODY_PARTS 4
|
||||
enum BodyPart { HEAD, BODY, ARMS, LEGS };
|
|
@ -0,0 +1,25 @@
|
|||
#include "entity.h"
|
||||
|
||||
static struct Entity entity_init(enum Species head, enum Species body,
|
||||
enum Species arms, enum Species legs);
|
||||
|
||||
struct Entity
|
||||
entity_p_init(void)
|
||||
{
|
||||
return entity_init(HUMAN, HUMAN, HUMAN, HUMAN);
|
||||
}
|
||||
|
||||
struct Entity
|
||||
entity_e_init(void)
|
||||
{
|
||||
return entity_init(SPIDER, SPIDER, VOID, SPIDER);
|
||||
}
|
||||
|
||||
static struct Entity
|
||||
entity_init(enum Species head, enum Species body, enum Species arms,
|
||||
enum Species legs)
|
||||
{
|
||||
return (struct Entity){
|
||||
.body = {head, body, arms, legs},
|
||||
};
|
||||
}
|
|
@ -0,0 +1,55 @@
|
|||
#include "disp.h"
|
||||
#include "entity.h"
|
||||
|
||||
static char *body_part_str(enum BodyPart body_part);
|
||||
static char *species_str(enum Species species);
|
||||
|
||||
void
|
||||
entity_print_desc(struct Entity entity)
|
||||
{
|
||||
int i;
|
||||
|
||||
i = -1;
|
||||
while (++i < BODY_PARTS) {
|
||||
disp_print(species_str(entity.body[i]));
|
||||
disp_print(" ");
|
||||
disp_print(body_part_str(i));
|
||||
disp_print("\n");
|
||||
}
|
||||
}
|
||||
|
||||
static char *
|
||||
body_part_str(enum BodyPart body_part)
|
||||
{
|
||||
switch (body_part) {
|
||||
case HEAD:
|
||||
return "head";
|
||||
case BODY:
|
||||
return "body";
|
||||
case ARMS:
|
||||
return "arms";
|
||||
case LEGS:
|
||||
return "legs";
|
||||
default:
|
||||
return "<unknown body part>";
|
||||
}
|
||||
}
|
||||
|
||||
static char *
|
||||
species_str(enum Species species)
|
||||
{
|
||||
switch (species) {
|
||||
case VOID:
|
||||
return "no";
|
||||
case HUMAN:
|
||||
return "human";
|
||||
case SPIDER:
|
||||
return "spider";
|
||||
case DUCK:
|
||||
return "duck";
|
||||
case BABOON:
|
||||
return "baboon";
|
||||
default:
|
||||
return "<unknow species>";
|
||||
}
|
||||
}
|
|
@ -1,15 +1,24 @@
|
|||
#include "disp.h"
|
||||
#include "entity.h"
|
||||
#include <gint/display.h>
|
||||
#include <gint/keyboard.h>
|
||||
|
||||
int
|
||||
main(void)
|
||||
{
|
||||
struct Entity player;
|
||||
struct Entity enemy;
|
||||
|
||||
/* init */
|
||||
disp_init();
|
||||
player = entity_p_init();
|
||||
enemy = entity_e_init();
|
||||
|
||||
disp_print("Hello, World!\n");
|
||||
disp_print("Draw me an unicorn!\n");
|
||||
disp_print("<Hackcell> UwU\n");
|
||||
entity_print_desc(player);
|
||||
entity_print_desc(enemy);
|
||||
|
||||
dclear(C_WHITE);
|
||||
disp_display();
|
||||
|
|
Loading…
Reference in New Issue