object.c 1.3 KB

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