sprite_object.cpp
上传用户:jnfxsk
上传日期:2022-06-16
资源大小:3675k
文件大小:2k
源码类别:

游戏引擎

开发平台:

Visual C++

  1. #include "sprite_object.h"
  2. CSpriteObject::CSpriteObject(hgeSprite *_spr, char *_name, int _resgroup, bool _owned)
  3. : CGfxObject(_name, _resgroup)
  4. {
  5. owned  = _owned;
  6. spr  = _spr;
  7. }
  8. CSpriteObject::~CSpriteObject()
  9. {
  10. if(owned)
  11. {
  12. hge->Texture_Free(GetTexture());
  13. delete[] name;
  14. delete spr;
  15. }
  16. }
  17. void CSpriteObject::GetSourcePos(int *_x, int *_y)
  18. {
  19. float x, y, w, h;
  20. spr->GetTextureRect(&x, &y, &w, &h);
  21. *_x = int(x);
  22. *_y = int(y);
  23. }
  24. bool CSpriteObject::SaveDescription(FILE *fp, char *texname)
  25. {
  26. fprintf(fp, "Sprite %sn", name);
  27. fprintf(fp, "{n");
  28. if(GetTexture() && texname)
  29. fprintf(fp, " texture = %sn", texname);
  30. fprintf(fp, " rect = %d,%d,%d,%dn", x, y, GetWidth(), GetHeight());
  31. float HotX, HotY;
  32. spr->GetHotSpot(&HotX, &HotY);
  33. if(HotX || HotY)
  34. fprintf(fp, " hotspot = %d,%dn", int(HotX), int(HotY));
  35. int BlendMode = spr->GetBlendMode();
  36. if(BlendMode != BLEND_DEFAULT)
  37. {
  38. fprintf(fp, " blendmode = ");
  39. if(BlendMode & BLEND_COLORADD) fprintf(fp,"COLORADD,");
  40. else fprintf(fp,"COLORMUL,");
  41. if(BlendMode & BLEND_ALPHABLEND) fprintf(fp,"ALPHABLEND,");
  42. else fprintf(fp,"ALPHAADD,");
  43. if(BlendMode & BLEND_ZWRITE) fprintf(fp,"ZWRITEn");
  44. else fprintf(fp,"NOZWRITEn");
  45. }
  46. DWORD Color = spr->GetColor();
  47. if(Color != 0xFFFFFFFF)
  48. fprintf(fp, " color = %08Xn", Color);
  49. float ZOrder = spr->GetZ();
  50. if(ZOrder != 0.5f)
  51. fprintf(fp, " zorder = %03fn", ZOrder);
  52. bool FlipX, FlipY;
  53. spr->GetFlip(&FlipX, &FlipY);
  54. if(FlipX || FlipY)
  55. fprintf(fp, " flip = %s,%sn", FlipX ? "true" : "false", FlipY ? "true" : "false");
  56. fprintf(fp, " resgroup = %dn", resgroup);
  57. fprintf(fp, "}n");
  58. return true;
  59. }