object.c 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  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. Object_log("Loading object");
  32. }
  33. void free_Object(Object* self){
  34. Object_log("Freeing object");
  35. free_Sprite(self->sprite);
  36. if(self->data != NULL && self->data_size > 0){
  37. free(self->data);
  38. }
  39. free(self);
  40. }
  41. Object* new_Object(int x, int y){
  42. Object* self = (Object*)malloc(sizeof(Object));
  43. Object_log("Creating object");
  44. self->data_size = 0;
  45. self->data = NULL;
  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. return self;
  56. }