World of Might and Magic  0.2.0
Open reimplementation of Might and Magic 6 7 8 game engine
Sprites.h
См. документацию.
1 #pragma once
2 
3 #include "Engine/OurMath.h"
4 #include "Engine/Strings.h"
5 
7 
8 class Texture;
9 
10 class Sprite {
11  public:
12  inline Sprite() {
13  uPaletteID = 0;
14  texture = nullptr;
15  uAreaX = 0;
16  uAreaY = 0;
17  uBufferWidth = 0;
18  uBufferHeight = 0;
19  uAreaWidth = 0;
20  uAreaHeight = 0;
21  sprite_header = nullptr;
22  }
23 
24  void Release();
25 
29  int uAreaX;
30  int uAreaY;
31  int uBufferWidth; // hardware width (as opposed to LODSprite::Width)
32  int uBufferHeight; // hardware sprite height
35 
37 };
38 
39 class SpriteFrame {
40  public:
41  bool Deserialize(const struct SpriteFrame_MM7 *);
42 
45 
47  fixed scale; // used in screen space scaling
48  int uFlags;
52  int uAnimTime;
54 };
55 
56 #pragma pack(push, 1)
58  inline SpriteFrameTable() {
59  uNumSpriteFrames = 0;
60  pSpriteSFrames = nullptr;
61  pSpritePFrames = nullptr;
62  pSpriteEFrames = nullptr;
63  }
64  void ToFile();
65  void FromFile(void *data_mm6, void *data_mm7, void *data_mm8);
66  void ReleaseSFrames();
67  void ResetSomeSpriteFlags();
68  void InitializeSprite(signed int uSpriteID);
69  int FastFindSprite(const char *pSpriteName);
70  int BinarySearch(const char *pSpriteName);
71  SpriteFrame *GetFrame(unsigned int uSpriteID, unsigned int uTime);
72  SpriteFrame *GetFrameBy_x(unsigned int uSpriteID, signed int a3);
73 
75  unsigned int uNumEFrames; // field_4;
76  int unused_field; // field_8
77  SpriteFrame *pSpriteSFrames; // 0c new SpriteFrame[X]
78  SpriteFrame **pSpritePFrames; // 10h pSpritePFrames[i] = &pSpriteSFrames[pSpriteEFrames[i]];
80 };
81 #pragma pack(pop)
82 
83 void _46E26D_collide_against_sprites(int a1, int a2);
84 
85 extern struct SpriteFrameTable *pSpriteFrameTable;
86 
SpriteFrameTable::GetFrameBy_x
SpriteFrame * GetFrameBy_x(unsigned int uSpriteID, signed int a3)
Definition: Sprites.cpp:304
SpriteFrame_MM7
Definition: LegacyImages.h:29
SpriteFrame::hw_sprites
Sprite * hw_sprites[8]
Definition: Sprites.h:46
int16_t
signed __int16 int16_t
Definition: SDL_config.h:36
SpriteFrame::uGlowRadius
int uGlowRadius
Definition: Sprites.h:49
DecorationList.h
SpriteFrame::icon_name
String icon_name
Definition: Sprites.h:43
SpriteFrame::uPaletteID
int uPaletteID
Definition: Sprites.h:50
SpriteFrame::texture_name
String texture_name
Definition: Sprites.h:44
SpriteFrame::scale
fixed scale
Definition: Sprites.h:47
Texture
Definition: Texture.h:4
SpriteFrameTable
Definition: Sprites.h:57
Sprite::uBufferHeight
int uBufferHeight
Definition: Sprites.h:32
SpriteFrame::uPaletteIndex
int uPaletteIndex
Definition: Sprites.h:51
texture
GLenum GLenum GLuint texture
Definition: SDL_opengl_glext.h:1181
Sprite::texture
Texture * texture
Definition: Sprites.h:28
SpriteFrameTable::uNumSpriteFrames
int uNumSpriteFrames
Definition: Sprites.h:74
Sprite
Definition: Sprites.h:10
_46E26D_collide_against_sprites
void _46E26D_collide_against_sprites(int a1, int a2)
Definition: Sprites.cpp:447
SpriteFrameTable::BinarySearch
int BinarySearch(const char *pSpriteName)
Definition: Sprites.cpp:255
Sprite::uAreaY
int uAreaY
Definition: Sprites.h:30
SpriteFrameTable::ReleaseSFrames
void ReleaseSFrames()
Definition: Sprites.cpp:25
Sprite::uBufferWidth
int uBufferWidth
Definition: Sprites.h:31
SpriteFrameTable::uNumEFrames
unsigned int uNumEFrames
Definition: Sprites.h:75
SpriteFrameTable::FromFile
void FromFile(void *data_mm6, void *data_mm7, void *data_mm8)
Definition: Sprites.cpp:378
SpriteFrame::uAnimTime
int uAnimTime
Definition: Sprites.h:52
SpriteFrameTable::GetFrame
SpriteFrame * GetFrame(unsigned int uSpriteID, unsigned int uTime)
Definition: Sprites.cpp:277
SpriteFrameTable::ResetSomeSpriteFlags
void ResetSomeSpriteFlags()
Definition: Sprites.cpp:32
Sprite::uAreaWidth
int uAreaWidth
Definition: Sprites.h:33
LODSprite
Definition: LOD.h:197
SpriteFrameTable::pSpriteSFrames
SpriteFrame * pSpriteSFrames
Definition: Sprites.h:77
Sprite::Release
void Release()
Definition: LOD.cpp:332
SpriteFrameTable::InitializeSprite
void InitializeSprite(signed int uSpriteID)
Definition: Sprites.cpp:46
t
GLdouble GLdouble t
Definition: SDL_opengl.h:2071
SpriteFrameTable::FastFindSprite
int FastFindSprite(const char *pSpriteName)
Definition: Sprites.cpp:243
Sprite::sprite_header
struct LODSprite * sprite_header
Definition: Sprites.h:36
SpriteFrame::uAnimLength
int uAnimLength
Definition: Sprites.h:53
Sprite::uAreaX
int uAreaX
Definition: Sprites.h:29
SpriteFrameTable::ToFile
void ToFile()
Definition: Sprites.cpp:337
SpriteFrame
Definition: Sprites.h:39
Sprite::uPaletteID
int uPaletteID
Definition: Sprites.h:27
LevelDecorationChangeSeason
SpriteFrame * LevelDecorationChangeSeason(DecorationDesc *desc, int t, int month)
Definition: Sprites.cpp:614
pSpriteFrameTable
struct SpriteFrameTable * pSpriteFrameTable
Definition: Sprites.cpp:22
SpriteFrameTable::SpriteFrameTable
SpriteFrameTable()
Definition: Sprites.h:58
SpriteFrameTable::pSpritePFrames
SpriteFrame ** pSpritePFrames
Definition: Sprites.h:78
DecorationDesc
Definition: DecorationList.h:49
OurMath.h
SpriteFrameTable::unused_field
int unused_field
Definition: Sprites.h:76
fixed
Definition: OurMath.h:21
Sprite::pName
String pName
Definition: Sprites.h:26
String
std::string String
Definition: Strings.h:10
Sprite::uAreaHeight
int uAreaHeight
Definition: Sprites.h:34
Sprite::Sprite
Sprite()
Definition: Sprites.h:12
SpriteFrame::uFlags
int uFlags
Definition: Sprites.h:48
SpriteFrame::Deserialize
bool Deserialize(const struct SpriteFrame_MM7 *)
Definition: Sprites.cpp:349
SpriteFrameTable::pSpriteEFrames
int16_t * pSpriteEFrames
Definition: Sprites.h:79
Strings.h