CNAME should be opt master
authorNiki <niki@nikiroo.be>
Sat, 19 Apr 2025 19:26:49 +0000 (21:26 +0200)
committerNiki <niki@nikiroo.be>
Sat, 19 Apr 2025 19:26:49 +0000 (21:26 +0200)
src/tdef/any.c
src/tdef/any.h
src/tdef/enemy.c
src/tdef/enemy.h
src/tdef/engine.c
src/tdef/path.c
src/tdef/path.h
src/tdef/tower.c
src/tdef/tower.h

index 5d20b01779ae1ee96dbb7e97fc5d6b8ac31b8631..5e2f20e944ae38dc189f5e94d8297b9d86f320e2 100644 (file)
 #include "any.h"
 
 path_t *anypath(any_t *self) {
 #include "any.h"
 
 path_t *anypath(any_t *self) {
-       if (self && self->_.type == 'p')
+       if (self && self->_.obj == 'P')
                return (path_t*)(void*)self;
        return NULL;
 }
 
 tower_t *anytower(any_t *self) {
                return (path_t*)(void*)self;
        return NULL;
 }
 
 tower_t *anytower(any_t *self) {
-       if (self && self->_.type == 't')
+       if (self && self->_.obj == 'T')
                return (tower_t*)(void*)self;
        return NULL;
 }
 
 enemy_t *anyenemy(any_t *self) {
                return (tower_t*)(void*)self;
        return NULL;
 }
 
 enemy_t *anyenemy(any_t *self) {
-       if (self && self->_.type == 'e')
+       if (self && self->_.obj == 'E')
                return (enemy_t*)(void*)self;
        return NULL;
 }
                return (enemy_t*)(void*)self;
        return NULL;
 }
index 9a1e7b2df6aeb2402b28d560ff3696c1ab9bcb0d..99f70b5046360f186214446f27025ad170c43142 100644 (file)
  * blablabla
  */
 typedef union {
  * blablabla
  */
 typedef union {
-       struct { char _; char type; } _;
+       struct { 
+               char CNAME[10];
+               char obj;
+       } _;
        path_t _l;
        tower_t _t;
        enemy_t _e;
        path_t _l;
        tower_t _t;
        enemy_t _e;
index 2375b918a45665f6b6d0234e7d9154a94a478f22..b27c83f81790c93efd5dca62ed0d8cfd74ade17c 100644 (file)
@@ -38,6 +38,7 @@ int init_enemy(enemy_t *self, enemy_base_t *base, int id, size_t start_tick) {
        self->CNAME[sz - 2] = ']';
        self->CNAME[sz - 1] = '\0';
        
        self->CNAME[sz - 2] = ']';
        self->CNAME[sz - 1] = '\0';
        
+       self->obj = 'E';
        self->start_tick = start_tick;
        self->base  = base;
        self->id    = id;
        self->start_tick = start_tick;
        self->base  = base;
        self->id    = id;
@@ -60,6 +61,7 @@ void uninit_enemy(enemy_t *self) {
 }
 
 int init_enemy_base(enemy_base_t *self, int type, int hp, int speed, int bits){
 }
 
 int init_enemy_base(enemy_base_t *self, int type, int hp, int speed, int bits){
+       self->obj = 'e';
        self->type   = type;
        self->max_hp = hp;
        self->speed  = speed;
        self->type   = type;
        self->max_hp = hp;
        self->speed  = speed;
index 6c5faf45a265a096c1660d9b06f068f5b7871d54..aa4e3959164dc8bbc57a2b73be425d7b881f387a 100644 (file)
@@ -15,6 +15,8 @@
 #include <stddef.h>
 
 typedef struct {
 #include <stddef.h>
 
 typedef struct {
+       char CNAME[10];
+       char obj; // object type: e
        int type; // identify the unique enemy type
        int max_hp;
        int speed; // paths per tick
        int type; // identify the unique enemy type
        int max_hp;
        int speed; // paths per tick
@@ -28,6 +30,7 @@ typedef struct {
  */
 typedef struct {
        char CNAME[10];
  */
 typedef struct {
        char CNAME[10];
+       char obj; // object type: E
        enemy_base_t *base;
        size_t start_tick;
        int index; // index in paths
        enemy_base_t *base;
        size_t start_tick;
        int index; // index in paths
index 8fcae418ed353be4d63c511dc21720b64da5bcd7..eaae990053330f41c84806a5a15ff3263be53472 100644 (file)
@@ -244,6 +244,7 @@ int setup_tower_lvl(
        }
        
        tower_lvl_t *lvl = &(base->stats[base->stats_sz]);
        }
        
        tower_lvl_t *lvl = &(base->stats[base->stats_sz]);
+       init_tower_lvl(lvl);
        lvl->speed  = speed;
        lvl->attack = attack;
        lvl->range  = range;
        lvl->speed  = speed;
        lvl->attack = attack;
        lvl->range  = range;
index 70cf97939896aa192b7951be0d32d787f72b610a..806952b665ec0e3fb96973ae807105f168a97fad 100644 (file)
@@ -38,6 +38,7 @@ int init_path(path_t *self, int x, int y) {
        self->CNAME[sz - 2] = ']';
        self->CNAME[sz - 1] = '\0';
        
        self->CNAME[sz - 2] = ']';
        self->CNAME[sz - 1] = '\0';
        
+       self->obj = 'P';
        self->x = x;
        self->y = y;
        self->index = -1;
        self->x = x;
        self->y = y;
        self->index = -1;
index e4d8c227a4fc401a112da6c578c561314fef8d3e..5cc8f766bd3a5ef40573c976403922ed4f713058 100644 (file)
@@ -21,6 +21,7 @@
  */
 typedef struct {
        char CNAME[10];
  */
 typedef struct {
        char CNAME[10];
+       char obj; // object type: P
        int x;
        int y;
        int index;
        int x;
        int y;
        int index;
index a8e0973fee8ad6152b650f39b0496acb9cbdd883..b5a0c5d3b28db4e113185094395f8d199970d077 100644 (file)
@@ -46,6 +46,7 @@ int init_tower(tower_t *self, tower_base_t *base, int id, int x, int y) {
        self->CNAME[sz - 2] = ']';
        self->CNAME[sz - 1] = '\0';
        
        self->CNAME[sz - 2] = ']';
        self->CNAME[sz - 1] = '\0';
        
+       self->obj          = 'T';
        self->base         = base;
        self->id           = id;
        self->x            = x;
        self->base         = base;
        self->id           = id;
        self->x            = x;
@@ -77,11 +78,33 @@ void uninit_tower(tower_t *self) {
 }
 
 int init_tower_base(tower_base_t *self, int type) {
 }
 
 int init_tower_base(tower_base_t *self, int type) {
+       size_t sz = sizeof(self->CNAME);
+       strncpy(self->CNAME, "[tower_base          ", sz);
+       self->CNAME[sz - 2] = ']';
+       self->CNAME[sz - 1] = '\0';
+       
+       self->obj         = 't';
        self->type        = type;
        self->stats_sz    = 0;
        self->super_cost  = 0;
        self->super_power = 0;
        memset(self->stats, '\0', sizeof(self->stats));
        self->type        = type;
        self->stats_sz    = 0;
        self->super_cost  = 0;
        self->super_power = 0;
        memset(self->stats, '\0', sizeof(self->stats));
+       
+       return 1;
+}
+
+int init_tower_lvl(tower_lvl_t *self) {
+       size_t sz = sizeof(self->CNAME);
+       strncpy(self->CNAME, "[tower_lvl          ", sz);
+       self->CNAME[sz - 2] = ']';
+       self->CNAME[sz - 1] = '\0';
+       
+       self->obj    = 't';
+       self->attack = 0;
+       self->speed  = 0;
+       self->range  = 0;
+       self->cost   = 0;
+       
        return 1;
 }
 
        return 1;
 }
 
index 7f490ee11c462792739c26e7f759ef11e03b5112..df29411ad826688876e4f0a7f6c83d63eba963e4 100644 (file)
@@ -23,6 +23,8 @@ typedef enum {
 } target_t;
 
 typedef struct {
 } target_t;
 
 typedef struct {
+       char CNAME[10];
+       char obj; // object type: t
        int attack;
        int speed; // fire_delay in ticks
        int range;
        int attack;
        int speed; // fire_delay in ticks
        int range;
@@ -30,6 +32,8 @@ typedef struct {
 } tower_lvl_t;
 
 typedef struct {
 } tower_lvl_t;
 
 typedef struct {
+       char CNAME[10];
+       char obj; // object type: t
        int type; // identify the unique tower type
        tower_lvl_t stats[6];
        int stats_sz; // how many are used
        int type; // identify the unique tower type
        tower_lvl_t stats[6];
        int stats_sz; // how many are used
@@ -44,6 +48,7 @@ typedef struct {
  */
 typedef struct {
        char CNAME[10];
  */
 typedef struct {
        char CNAME[10];
+       char obj; // Object type: T
        tower_base_t *base;
        int id;
        int x;
        tower_base_t *base;
        int id;
        int x;
@@ -111,6 +116,8 @@ void uninit_tower(tower_t *self);
 
 int init_tower_base(tower_base_t *self, int type);
 
 
 int init_tower_base(tower_base_t *self, int type);
 
+int init_tower_lvl(tower_lvl_t *self);
+
 void tower_rearm(tower_t *self);
 
 proj_t *tower_fire(tower_t *self, int current_tick, array_t *enemies, 
 void tower_rearm(tower_t *self);
 
 proj_t *tower_fire(tower_t *self, int current_tick, array_t *enemies,