object.c 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  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_free(Object* self){
  31. Object_log("Freeing object");
  32. free_Sprite(self->sprite);
  33. free(self);
  34. }
  35. void Object_load(Object* self){}
  36. void free_Object(Object* self){
  37. if(self->free != NULL){
  38. self->free(self);
  39. }else{
  40. Object_free(self);
  41. }
  42. }
  43. Object* new_Object(int x, int y){
  44. Object* self = (Object*)malloc(sizeof(Object));
  45. Object_log("Creating object");
  46. self->id = id_counter++;
  47. self->x = x;
  48. self->y = y;
  49. self->scale.x = self->scale.y = 1;
  50. self->width = &Object_width;
  51. self->height = &Object_height;
  52. self->update = &Object_update;
  53. self->draw = &Object_draw;
  54. self->load = &Object_load;
  55. self->free = &Object_free;
  56. return self;
  57. }