#include "object.h" #include "scene.h" #include #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"); #endif } void Object_draw(Object* self){ #ifdef LOG_DRAW Object_log("Drawing object"); #endif if(self->scale.x + self->scale.y != 0){ gfx_ScaledSprite_NoClip( self->sprite->data, self->x, self->y, self->scale.x, self->scale.y); }else{ gfx_Sprite_NoClip(self->sprite->data, self->x, self->y); } } 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* new_Object(int x, int y){ Object* self = (Object*)malloc(sizeof(Object)); Object_log("Creating object"); self->id = id_counter++; self->x = x; self->y = y; self->scale.x = self->scale.y = 1; 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; }