12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758 |
- #include "object.h"
- #include "scene.h"
- #include <debug.h>
- #include <stdlib.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");
- #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){}
- void free_Object(Object* self){
- Object_log("Freeing object");
- free_Sprite(self->sprite);
- 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;
- return self;
- }
|