MCPcopy Create free account
hub / github.com/diasurgical/devilution / InitMonsterGFX

Function InitMonsterGFX

Source/monster.cpp:278–365  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

276}
277
278void InitMonsterGFX(int monst)
279{
280 int mtype, anim, i;
281 char strBuff[256];
282 BYTE *celBuf;
283
284 mtype = Monsters[monst].mtype;
285
286 for (anim = 0; anim < 6; anim++) {
287 if ((animletter[anim] != 's' || monsterdata[mtype].has_special) && monsterdata[mtype].Frames[anim] > 0) {
288 sprintf(strBuff, monsterdata[mtype].GraphicType, animletter[anim]);
289
290 celBuf = LoadFileInMem(strBuff, NULL);
291 Monsters[monst].Anims[anim].CMem = celBuf;
292
293 if (Monsters[monst].mtype != MT_GOLEM || (animletter[anim] != 's' && animletter[anim] != 'd')) {
294
295 for (i = 0; i < 8; i++) {
296 Monsters[monst].Anims[anim].Data[i] = CelGetFrameStart(celBuf, i);
297 }
298 } else {
299 for (i = 0; i < 8; i++) {
300 Monsters[monst].Anims[anim].Data[i] = celBuf;
301 }
302 }
303 }
304
305 // TODO: either the AnimStruct members have wrong naming or the MonsterData ones it seems
306 Monsters[monst].Anims[anim].Frames = monsterdata[mtype].Frames[anim];
307 Monsters[monst].Anims[anim].Rate = monsterdata[mtype].Rate[anim];
308 }
309
310 Monsters[monst].width = monsterdata[mtype].width;
311 Monsters[monst].width2 = (monsterdata[mtype].width - 64) >> 1;
312 Monsters[monst].mMinHP = monsterdata[mtype].mMinHP;
313 Monsters[monst].mMaxHP = monsterdata[mtype].mMaxHP;
314 Monsters[monst].has_special = monsterdata[mtype].has_special;
315 Monsters[monst].mAFNum = monsterdata[mtype].mAFNum;
316 Monsters[monst].MData = &monsterdata[mtype];
317
318 if (monsterdata[mtype].has_trans) {
319 Monsters[monst].trans_file = LoadFileInMem(monsterdata[mtype].TransFile, NULL);
320 InitMonsterTRN(monst, monsterdata[mtype].has_special);
321 MemFreeDbg(Monsters[monst].trans_file);
322 }
323
324 if (mtype >= MT_NMAGMA && mtype <= MT_WMAGMA && !(MissileFileFlag & 1)) {
325 MissileFileFlag |= 1;
326 LoadMissileGFX(MFILE_MAGBALL);
327 }
328 if (mtype >= MT_STORM && mtype <= MT_MAEL && !(MissileFileFlag & 2)) {
329 MissileFileFlag |= 2;
330 LoadMissileGFX(MFILE_THINLGHT);
331 }
332 if (mtype == MT_SUCCUBUS && !(MissileFileFlag & 4)) {
333 MissileFileFlag |= 4;
334 LoadMissileGFX(MFILE_FLARE);
335 LoadMissileGFX(MFILE_FLAREEXP);

Callers 1

AddMonsterTypeFunction · 0.85

Calls 4

LoadFileInMemFunction · 0.85
CelGetFrameStartFunction · 0.85
InitMonsterTRNFunction · 0.85
LoadMissileGFXFunction · 0.85

Tested by

no test coverage detected