sprite_object.cpp
资源名称:hge181.rar [点击查看]
上传用户:jnfxsk
上传日期:2022-06-16
资源大小:3675k
文件大小:2k
源码类别:
游戏引擎
开发平台:
Visual C++
- #include "sprite_object.h"
- CSpriteObject::CSpriteObject(hgeSprite *_spr, char *_name, int _resgroup, bool _owned)
- : CGfxObject(_name, _resgroup)
- {
- owned = _owned;
- spr = _spr;
- }
- CSpriteObject::~CSpriteObject()
- {
- if(owned)
- {
- hge->Texture_Free(GetTexture());
- delete[] name;
- delete spr;
- }
- }
- void CSpriteObject::GetSourcePos(int *_x, int *_y)
- {
- float x, y, w, h;
- spr->GetTextureRect(&x, &y, &w, &h);
- *_x = int(x);
- *_y = int(y);
- }
- bool CSpriteObject::SaveDescription(FILE *fp, char *texname)
- {
- fprintf(fp, "Sprite %sn", name);
- fprintf(fp, "{n");
- if(GetTexture() && texname)
- fprintf(fp, " texture = %sn", texname);
- fprintf(fp, " rect = %d,%d,%d,%dn", x, y, GetWidth(), GetHeight());
- float HotX, HotY;
- spr->GetHotSpot(&HotX, &HotY);
- if(HotX || HotY)
- fprintf(fp, " hotspot = %d,%dn", int(HotX), int(HotY));
- int BlendMode = spr->GetBlendMode();
- if(BlendMode != BLEND_DEFAULT)
- {
- fprintf(fp, " blendmode = ");
- if(BlendMode & BLEND_COLORADD) fprintf(fp,"COLORADD,");
- else fprintf(fp,"COLORMUL,");
- if(BlendMode & BLEND_ALPHABLEND) fprintf(fp,"ALPHABLEND,");
- else fprintf(fp,"ALPHAADD,");
- if(BlendMode & BLEND_ZWRITE) fprintf(fp,"ZWRITEn");
- else fprintf(fp,"NOZWRITEn");
- }
- DWORD Color = spr->GetColor();
- if(Color != 0xFFFFFFFF)
- fprintf(fp, " color = %08Xn", Color);
- float ZOrder = spr->GetZ();
- if(ZOrder != 0.5f)
- fprintf(fp, " zorder = %03fn", ZOrder);
- bool FlipX, FlipY;
- spr->GetFlip(&FlipX, &FlipY);
- if(FlipX || FlipY)
- fprintf(fp, " flip = %s,%sn", FlipX ? "true" : "false", FlipY ? "true" : "false");
- fprintf(fp, " resgroup = %dn", resgroup);
- fprintf(fp, "}n");
- return true;
- }