object.c 1.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. #include "object.h"
  2. #include <debug.h>
  3. #define Object_log(msg) dbg_sprintf(dbgout, "[Object] %s\n", msg)
  4. void Object_update(Object* self){}
  5. void Object_draw(Object* self){
  6. if(self->scale.x + self->scale.y != 0){
  7. gfx_ScaledSprite_NoClip(
  8. self->sprite->data, self->x, self->y,
  9. self->scale.x, self->scale.y);
  10. }else{
  11. gfx_Sprite_NoClip(self->sprite->data, self->x, self->y);
  12. }
  13. }
  14. int Object_width(Object* self){
  15. return self->sprite->data->width * self->scale.x;
  16. }
  17. int Object_height(Object* self){
  18. return self->sprite->data->height * self->scale.y;
  19. }
  20. void free_Object(Object* self){
  21. Object_log("Freeing object");
  22. free_Sprite(self->sprite);
  23. free(self);
  24. }
  25. Object* new_Object(int x, int y){
  26. Object* self = (Object*)malloc(sizeof(Object));
  27. self->x = x;
  28. self->y = y;
  29. self->scale.x = self->scale.y = 1;
  30. self->update = &Object_update;
  31. self->draw = &Object_draw;
  32. self->width = &Object_width;
  33. self->height = &Object_height;
  34. return self;
  35. }