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

游戏引擎

开发平台:

Visual C++

  1. #ifndef GFX_OBJECT_H
  2. #define GFX_OBJECT_H
  3. #include "texasm.h"
  4. #include <stdio.h>
  5. #include <list>
  6. using namespace std;
  7. class CGfxObject
  8. {
  9. public:
  10. CGfxObject(char *_name, int _resgroup) { name=_name; placed = false; resgroup = _resgroup; }
  11. char *GetName() { return name; }
  12. void Place(int _x, int _y) { x = _x; y = _y; placed = true; }
  13. bool IsPlaced() { return placed; }
  14. int GetResGroup() { return resgroup; }
  15. void GetTargetPos(int *_x, int *_y) { *_x = x; *_y = y; }
  16. virtual int GetWidth() const = 0;
  17. virtual int GetHeight() const = 0;
  18. virtual HTEXTURE GetTexture() = 0;
  19. virtual void GetSourcePos(int *_x, int *_y) = 0;
  20. virtual bool SaveDescription(FILE *fp, char *texname) = 0;
  21. protected:
  22. char *name;
  23. int resgroup;
  24. bool placed;
  25. int x;
  26. int y;
  27. };
  28. // sorting predicate
  29. // WORKAROUND for VC6 and earlier - http://support.microsoft.com/kb/265109
  30. #ifdef _MSC_VER
  31. #if _MSC_VER < 1300
  32. template<>
  33. struct std::greater<CGfxObject*>  : public binary_function<CGfxObject*, CGfxObject*, bool> 
  34. {
  35. bool operator()(const CGfxObject* &a, const CGfxObject* &b) const
  36. return (a->GetWidth()  < b->GetWidth() && a->GetWidth()  > b->GetHeight()) ||
  37.                (a->GetHeight() > b->GetWidth() && a->GetHeight() > b->GetHeight());
  38. }
  39. };
  40. #endif
  41. #endif
  42. // END WORKAROUND
  43. struct ByLargestDimensionDescending : public greater<CGfxObject *>
  44. {
  45. bool operator()(CGfxObject* &a, CGfxObject* &b) const
  46. return (a->GetWidth()  < b->GetWidth() && a->GetWidth()  > b->GetHeight()) ||
  47.                (a->GetHeight() > b->GetWidth() && a->GetHeight() > b->GetHeight());
  48. }
  49. };
  50. // list and iterator
  51. typedef list<CGfxObject *> GfxObjList;
  52. typedef list<CGfxObject *>::iterator GfxObjIterator;
  53. #endif