#include "object.h" #include "scene.h" #include #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_load(Object* self){ Object_log("Loading object"); } void free_Object(Object* self){ Object_log("Freeing object"); free_Sprite(self->sprite); if(self->data != NULL && self->data_size > 0){ free(self->data); } free(self); } Object* new_Object(int x, int y){ Object* self = (Object*)malloc(sizeof(Object)); Object_log("Creating object"); self->data_size = 0; self->data = NULL; 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; return self; }