|
@@ -1,10 +1,19 @@
|
|
|
#include "object.h"
|
|
|
+#include "scene.h"
|
|
|
#include <debug.h>
|
|
|
|
|
|
#define Object_log(msg) dbg_sprintf(dbgout, "[Object %d] %s\n", self->id, msg)
|
|
|
|
|
|
static int id_counter;
|
|
|
|
|
|
+int Object_width(Object* self){
|
|
|
+ return self->sprite->data->width * self->scale.x;
|
|
|
+}
|
|
|
+
|
|
|
+int Object_height(Object* self){
|
|
|
+ return self->sprite->data->height * self->scale.y;
|
|
|
+}
|
|
|
+
|
|
|
void Object_update(Object* self){
|
|
|
#ifdef LOG_UPDATE
|
|
|
Object_log("Updating object");
|
|
@@ -24,18 +33,20 @@ void Object_draw(Object* self){
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-int Object_width(Object* self){
|
|
|
- return self->sprite->data->width * self->scale.x;
|
|
|
+void Object_free(Object* self){
|
|
|
+ Object_log("Freeing object");
|
|
|
+ free_Sprite(self->sprite);
|
|
|
+ free(self);
|
|
|
}
|
|
|
|
|
|
-int Object_height(Object* self){
|
|
|
- return self->sprite->data->height * self->scale.y;
|
|
|
-}
|
|
|
+void Object_load(Object* self){}
|
|
|
|
|
|
void free_Object(Object* self){
|
|
|
- Object_log("Freeing object");
|
|
|
- free_Sprite(self->sprite);
|
|
|
- free(self);
|
|
|
+ if(self->free != NULL){
|
|
|
+ self->free(self);
|
|
|
+ }else{
|
|
|
+ Object_free(self);
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
Object* new_Object(int x, int y){
|
|
@@ -45,9 +56,11 @@ Object* new_Object(int x, int y){
|
|
|
self->x = x;
|
|
|
self->y = y;
|
|
|
self->scale.x = self->scale.y = 1;
|
|
|
- self->update = &Object_update;
|
|
|
- self->draw = &Object_draw;
|
|
|
self->width = &Object_width;
|
|
|
self->height = &Object_height;
|
|
|
+ self->update = &Object_update;
|
|
|
+ self->draw = &Object_draw;
|
|
|
+ self->load = &Object_load;
|
|
|
+ self->free = &Object_free;
|
|
|
return self;
|
|
|
}
|