Browse Source

Cleanup trying to get llvm to work

Nathaniel van Diepen 3 years ago
parent
commit
42b777e9cf
6 changed files with 60 additions and 81 deletions
  1. 2 2
      makefile
  2. 3 12
      src/lib/object.c
  3. 0 1
      src/lib/object.h
  4. 15 4
      src/main.c
  5. 39 54
      src/objects/player.c
  6. 1 8
      src/objects/player.h

+ 2 - 2
makefile

@@ -12,7 +12,7 @@ ARCHIVED     ?= NO
 # Debug Options
 # ----------------------------
 
-OUTPUT_MAP   ?= NO
+OUTPUT_MAP   ?= YES
 
 include $(CEDEV)/include/.makefile
 
@@ -27,5 +27,5 @@ bin/clibs.8xg:
 		 https://github.com/CE-Programming/libraries/releases/download/v8.8/clibs.8xg \
 		 -O bin/clibs.8xg
 
-emulator: debug bin/clibs.8xg
+emulator: bin/clibs.8xg
 	CEmu -a bin/clibs.8xg -s bin/${NAME}.8xp --launch ${NAME}

+ 3 - 12
src/lib/object.c

@@ -34,20 +34,12 @@ void Object_draw(Object* self){
     }
 }
 
-void Object_free(Object* self){
-    Object_log("Freeing object");
-    free_Sprite(self->sprite);
-    free(self);
-}
-
 void Object_load(Object* self){}
 
 void free_Object(Object* self){
-    if(self->free != NULL){
-        self->free(self);
-    }else{
-        Object_free(self);
-    }
+    Object_log("Freeing object");
+    free_Sprite(self->sprite);
+    free(self);
 }
 
 Object* new_Object(int x, int y){
@@ -62,6 +54,5 @@ Object* new_Object(int x, int y){
     self->update = &Object_update;
     self->draw = &Object_draw;
     self->load = &Object_load;
-    self->free = &Object_free;
     return self;
 }

+ 0 - 1
src/lib/object.h

@@ -24,7 +24,6 @@ struct Object {
     void (*draw)(Object*);
     void (*update)(Object*);
     void (*load)(Object*);
-    void (*free)(Object*);
 };
 
 void Object_draw(Object* self);

+ 15 - 4
src/main.c

@@ -10,7 +10,7 @@ int main(void){
     size_t i;
     Scene* scene = new_Scene("Main");
     Sprite* sprite;
-    Object* player = (Object*)new_Player();
+    Object* player;
     Vector* objects = scene->objects;
     Vector* sprites = scene->sprites;
     if(!sprites->consume(sprites, new_Sprite(bm1_width, bm1_height, bm1_compressed)) ||
@@ -41,18 +41,29 @@ int main(void){
         return 1;
     }
 
-    if(!objects->consume(objects, player)){
+    if(!objects->consume(objects, new_Player())){
         log("Unable to add player to stack");
         free_Scene(scene);
         return 1;
     }
     player = objects->get(objects, 0);
-    player->sprite = sprites->get(sprites, 0);
+    if(player == NULL){
+        log("Unable to get player from stack");
+        free_Scene(scene);
+        return 1;
+    }
+    sprite = sprites->get(sprites, 0);
+    if(sprite == NULL){
+        log("Unable to get sprite");
+        free_Scene(scene);
+        return 1;
+    }
+    player->sprite = sprite;
     log("Get max sizes");
 
     #ifdef RESIZE_SPRITES
     log("Resizing sprites");
-    dbg_sprintf(dbgout, "[Player] %d x %d\n", player->sprite->data->width, player->sprite->data->height);
+    dbg_sprintf(dbgout, "[Player] %d x %d\n", sprite->data->width, sprite->data->height);
     for(i = 0; i < sprites->count(sprites); i++){
         sprite = sprites->get(sprites, i);
         sprite->resize(sprite, sprite->data->width * SCALE, sprite->data->height * SCALE);

+ 39 - 54
src/objects/player.c

@@ -5,14 +5,13 @@
 
 #define Player_log(msg) dbg_sprintf(dbgout, "[Object(Player) %d] %s\n", self->id, msg)
 
-void Player_update(Object* base){
-    Player* self = (Player*)base;
-    Scene* scene = base->scene;
+void Player_update(Object* self){
+    Scene* scene = self->scene;
     Vector* sprites = scene->sprites;
     Sprite* sprite;
     kb_key_t arrows = kb_Data[7];
-    int x = base->x;
-    int y = base->y;
+    int x = self->x;
+    int y = self->y;
     int speed;
     #ifdef LOG_UPDATE
     Player_log("Drawing player");
@@ -23,83 +22,69 @@ void Player_update(Object* base){
         speed = WALK_SPEED;
     }
     if(arrows & kb_Down){
-        if(base->y < MAX_HEIGHT){
-            base->y += speed;
+        if(self->y < MAX_HEIGHT){
+            self->y += speed;
             sprite = sprites->get(sprites, 2);
-            if(sprite != base->sprite){
-                base->sprite = sprite;
+            if(sprite != self->sprite){
+                self->sprite = sprite;
             }else{
-                base->sprite = sprites->get(sprites, 4);
+                self->sprite = sprites->get(sprites, 4);
             }
         }
     }else if(arrows & kb_Up){
-        if(base->y > 0){
-            base->y -= speed;
+        if(self->y > 0){
+            self->y -= speed;
             sprite = sprites->get(sprites, 18);
-            if(sprite != base->sprite){
-                base->sprite = sprite;
+            if(sprite != self->sprite){
+                self->sprite = sprite;
             }else{
-                base->sprite = sprites->get(sprites, 20);
+                self->sprite = sprites->get(sprites, 20);
             }
         }
     }
     if(arrows & kb_Right){
-        if(base->x < MAX_WIDTH){
-            base->x += speed;
+        if(self->x < MAX_WIDTH){
+            self->x += speed;
             sprite = sprites->get(sprites, 10);
-            if(sprite != base->sprite){
-                base->sprite = sprite;
+            if(sprite != self->sprite){
+                self->sprite = sprite;
             }else{
-                base->sprite = sprites->get(sprites, 12);
+                self->sprite = sprites->get(sprites, 12);
             }
         }
     }else if(arrows & kb_Left){
-        if(base->x > 0){
-            base->x -= speed;
+        if(self->x > 0){
+            self->x -= speed;
             sprite = sprites->get(sprites, 6);
-            if(sprite != base->sprite){
-                base->sprite = sprite;
+            if(sprite != self->sprite){
+                self->sprite = sprite;
             }else{
-                base->sprite = sprites->get(sprites, 8);
+                self->sprite = sprites->get(sprites, 8);
             }
         }
     }
-    if(base->x < 0){
-        base->x = 0;
-    }else if(base->x >= MAX_WIDTH){
-        base->x = MAX_WIDTH;
+    if(self->x < 0){
+        self->x = 0;
+    }else if(self->x >= MAX_WIDTH){
+        self->x = MAX_WIDTH;
     }
-    if(base->y < 0){
-        base->y = 0;
-    }else if(base->y >= MAX_HEIGHT){
-        base->y = MAX_HEIGHT;
+    if(self->y < 0){
+        self->y = 0;
+    }else if(self->y >= MAX_HEIGHT){
+        self->y = MAX_HEIGHT;
     }
-    if(x == base->x && y == base->y){
-        base->sprite = sprites->get(sprites, 0);
+    if(x == self->x && y == self->y){
+        self->sprite = sprites->get(sprites, 0);
     }
 }
 
-void Player_load(Object* base){
+void Player_load(Object* self){
     Player_log("Loading player");
-    Player* self = (Player*)base;
 }
 
-void Player_free(Object* base){
-    Player* self = (Player*)base;
-    Player_log("Freeing player");
-    free(self->sprites);
-    base->free = NULL;
-    free_Object((Object*)self);
-    free(self);
-}
-
-Player* new_Player(){
-    Player* self = (Player*)malloc(sizeof(Player));
-    Object* base = new_Object(0,0);
-    self->base = *base;
-    self->sprites = new_Vector(0, sizeof(Sprite), (vc_vector_deleter*)&free_Sprite);
-    base->update = &Player_update;
-    base->free = &Player_free;
-    base->load = &Player_load;
+Object* new_Player(){
+    Object* self = new_Object(0,0);
+    self->update = &Player_update;
+    self->load = &Player_load;
     return self;
 }

+ 1 - 8
src/objects/player.h

@@ -2,13 +2,6 @@
 #define PLAYER_H_
 #include "../lib/object.h"
 
-typedef struct Player Player;
-
-struct Player {
-    Object base;
-    Vector* sprites;
-};
-
-Player* new_Player();
+Object* new_Player();
 
 #endif