World of Might and Magic  0.2.0
Open reimplementation of Might and Magic 6 7 8 game engine
Структура TextureFrameTable

#include <Image.h>

+ Граф связей класса TextureFrameTable:

Открытые члены

 TextureFrameTable ()
 
void ToFile ()
 
void FromFile (void *data_mm6, void *data_mm7, void *data_mm8)
 
void LoadAnimationSequenceAndPalettes (int uIconID)
 
TextureGetFrameTexture (int uFrameID, int time)
 
int FindTextureByName (const char *Str2)
 

Открытые атрибуты

uint32_t sNumTextures
 
TextureFramepTextures
 

Подробное описание

См. определение в файле Image.h строка 131

Конструктор(ы)

◆ TextureFrameTable()

TextureFrameTable::TextureFrameTable ( )
inline

См. определение в файле Image.h строка 132

132  {
133  pTextures = 0;
134  sNumTextures = 0;
135  }

Перекрестные ссылки pTextures и sNumTextures.

Методы

◆ ToFile()

void TextureFrameTable::ToFile ( )

См. определение в файле Image.cpp строка 72

72  {
73  TextureFrameTable *v1 = this;
74  FILE *file = fopen("data\\dtft.bin", "wb");
75  if (file == nullptr) {
76  Error("Unable to save dtft.bin!", 0);
77  }
78  fwrite(v1, 4u, 1u, file);
79  fwrite(v1->pTextures, 0x14u, v1->sNumTextures, file);
80  fclose(file);
81 }

◆ FromFile()

void TextureFrameTable::FromFile ( void data_mm6,
void data_mm7,
void data_mm8 
)

См. определение в файле Image.cpp строка 83

83  {
84  uint num_mm6_frames = data_mm6 ? *(int *)data_mm6 : 0,
85  num_mm7_frames = data_mm7 ? *(int *)data_mm7 : 0,
86  num_mm8_frames = data_mm8 ? *(int *)data_mm8 : 0;
87 
88  this->sNumTextures =
89  /*num_mm6_frames + */ num_mm7_frames /*+ num_mm8_frames*/;
90  Assert(sNumTextures, 0);
91  // Assert(!num_mm8_frames);
92 
93  TextureFrame_MM7 *frame_data =
94  (TextureFrame_MM7 *)((unsigned char *)data_mm7 + 4);
95  auto frames = new TextureFrame[this->sNumTextures];
96  for (unsigned int i = 0; i < this->sNumTextures; ++i) {
97  frames[i].name = frame_data->pTextureName;
98  std::transform(frames[i].name.begin(), frames[i].name.end(),
99  frames[i].name.begin(), ::tolower);
100 
101  frames[i].uAnimLength = frame_data->uAnimLength;
102  frames[i].uAnimTime = frame_data->uAnimTime;
103  frames[i].uFlags = frame_data->uFlags;
104 
105  ++frame_data;
106  }
107 
108  // pTextures = (TextureFrame *)malloc(sNumTextures * sizeof(TextureFrame));
109  // memcpy(pTextures, (char *)data_mm7 + 4,
110  // num_mm7_frames * sizeof(TextureFrame)); memcpy(pTextures + num_mm7_frames,
111  // (char *)data_mm6 + 4, num_mm6_frames * sizeof(TextureFrame));
112  // memcpy(pTextures + num_mm6_frames + num_mm7_frames, (char *)data_mm8 + 4,
113  // num_mm8_frames * sizeof(TextureFrame));
114 
115  this->pTextures = frames;
116 }

Перекрестные ссылки TextureFrame::name, TextureFrame_MM7::pTextureName, pTextures, sNumTextures, TextureFrame_MM7::uAnimLength, TextureFrame_MM7::uAnimTime и TextureFrame_MM7::uFlags.

Используется в Engine::MM7_Initialize().

+ Граф вызова функции:

◆ LoadAnimationSequenceAndPalettes()

void TextureFrameTable::LoadAnimationSequenceAndPalettes ( int  uIconID)

См. определение в файле Image.cpp строка 118

118  {
119  if (uFrameID <= this->sNumTextures && uFrameID >= 0) {
120  for (unsigned int i = uFrameID;; ++i) {
121  // this->pTextures[i].uTextureID =
122  // pBitmaps_LOD->LoadTexture(this->pTextures[i].pTextureName,
123  // TEXTURE_DEFAULT);
124 
125  // if (this->pTextures[i].uTextureID != -1)
126  // pBitmaps_LOD->pTextures[this->pTextures[i].uTextureID].palette_id2
127  // =
128  // pPaletteManager->LoadPalette(pBitmaps_LOD->pTextures[this->pTextures[i].uTextureID].palette_id1);
129 
130  if (this->pTextures[i].uFlags & 1) break;
131  }
132  }
133  return;
134 }

Перекрестные ссылки pTextures и sNumTextures.

◆ GetFrameTexture()

Texture * TextureFrameTable::GetFrameTexture ( int  uFrameID,
int  time 
)

См. определение в файле Image.cpp строка 146

146  {
147  int v3 = uFrameID;
148  TextureFrame *v4 = this->pTextures;
149  TextureFrame *v5 = &v4[uFrameID];
150  int v6 = v5->uAnimLength;
151  if (v5->uFlags & 1 && (v6 != 0)) {
152  int v7 = (a3 >> 3) % v6;
153  for (char *i = (char *)&v5->uAnimTime;; i += 20) {
154  int v9 = *(short *)i;
155  if (v7 <= v9) break;
156  v7 -= v9;
157  ++v3;
158  }
159  return v4[v3].GetTexture();
160  } else {
161  return v5->GetTexture();
162  }
163 }

Перекрестные ссылки TextureFrame::GetTexture(), pTextures, TextureFrame::uAnimLength, TextureFrame::uAnimTime и TextureFrame::uFlags.

Используется в IndoorLocation::ExecDraw_d3d(), ODMFace::GetTexture() и BLVFace::GetTexture().

+ Граф вызовов:
+ Граф вызова функции:

◆ FindTextureByName()

int TextureFrameTable::FindTextureByName ( const char *  Str2)

См. определение в файле Image.cpp строка 136

136  {
137  String name = Str2;
138  std::transform(name.begin(), name.end(), name.begin(), ::tolower);
139 
140  for (unsigned int i = 0; i < this->sNumTextures; ++i) {
141  if (this->pTextures[i].name == name) return i;
142  }
143  return -1;
144 }

Перекрестные ссылки pTextures и sNumTextures.

Используется в ODMFace::SetTexture() и BLVFace::SetTexture().

+ Граф вызова функции:

Данные класса

◆ sNumTextures

uint32_t TextureFrameTable::sNumTextures

См. определение в файле Image.h строка 142

Используется в FindTextureByName(), FromFile(), LoadAnimationSequenceAndPalettes() и TextureFrameTable().

◆ pTextures

TextureFrame* TextureFrameTable::pTextures

См. определение в файле Image.h строка 143

Используется в FindTextureByName(), FromFile(), GetFrameTexture(), LoadAnimationSequenceAndPalettes() и TextureFrameTable().


Объявления и описания членов структур находятся в файлах:
TextureFrame::uFlags
int16_t uFlags
Definition: Image.h:121
TextureFrameTable::pTextures
TextureFrame * pTextures
Definition: Image.h:143
TextureFrame::uAnimLength
int16_t uAnimLength
Definition: Image.h:120
TextureFrame_MM7::uAnimTime
int16_t uAnimTime
Definition: LegacyImages.h:80
TextureFrame::GetTexture
Texture * GetTexture()
Definition: Image.cpp:65
TextureFrameTable
Definition: Image.h:131
TextureFrameTable::sNumTextures
uint32_t sNumTextures
Definition: Image.h:142
TextureFrame::name
String name
Definition: Image.h:118
TextureFrame_MM7::pTextureName
char pTextureName[12]
Definition: LegacyImages.h:78
TextureFrame_MM7
Definition: LegacyImages.h:77
v1
GLfloat GLfloat v1
Definition: SDL_opengl_glext.h:694
transform
GLuint GLenum GLenum transform
Definition: SDL_opengl_glext.h:9999
name
EGLImageKHR EGLint * name
Definition: SDL_egl.h:1497
uint
unsigned int uint
Definition: MM7.h:4
v3
GLfloat GLfloat GLfloat GLfloat v3
Definition: SDL_opengl_glext.h:696
TextureFrame_MM7::uFlags
int16_t uFlags
Definition: LegacyImages.h:82
TextureFrame_MM7::uAnimLength
int16_t uAnimLength
Definition: LegacyImages.h:81
TextureFrame
Definition: Image.h:114
TextureFrame::uAnimTime
int16_t uAnimTime
Definition: Image.h:119
String
std::string String
Definition: Strings.h:10