object.c 1.2 KB

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