stoneage8.5/石器时代8.5客户端最新源代码/石器源码/system/loadsprbin.cpp

168 lines
8.0 KiB
C++
Raw Normal View History

2020-06-23 15:53:23 +08:00
#define sprVERSION 3 //SPR ? ??????
2020-06-23 15:27:59 +08:00
#include "../systeminc/version.h"
#include "../systeminc/system.h"
#include "../systeminc/loadsprbin.h"
#include "../systeminc/anim_tbl.h"
#include "../oft/vg410.h"
#include "../oft/work.h"
#define ERRPRINT(a);
SPRITEDATA SpriteData[mxSPRITE];
extern int nextMaxAdrnID;
BOOL InitSprBinFileOpen(char *SPR_BIN, char *SPRADRN_BIN)
{
SPRADRN _spradrn;
ANIM_HEADER sprhead;
FRAMELIST sprdata;
FILE *fp1, *fp2;
int j;
unsigned int k;
if ((fp1 = fopen(SPR_BIN, "rb")) == NULL)
return FALSE;
if ((fp2 = fopen(SPRADRN_BIN, "rb")) == NULL)
return FALSE;
static BOOL Sprflg = TRUE;
static BOOL Sprflg1 = TRUE;
if (Sprflg){
Sprflg = FALSE;
memset(SpriteData, 0, sizeof(SpriteData));
}
int no = 0;
while (TRUE){
fread(&_spradrn, 1, sizeof(_spradrn), fp2);
if (feof(fp2) != 0)
break;
no = _spradrn.sprNo - SPRSTART;
if (no > mxSPRITE) break;
SpriteData[no].animSize = _spradrn.animSize;
SpriteData[no].ptAnimlist = (ANIMLIST*)calloc(SpriteData[no].animSize, sizeof(ANIMLIST));
fseek(fp1, _spradrn.offset, SEEK_SET);
for (j = 0; j < SpriteData[no].animSize; j++){
fread(&sprhead, 1, 12, fp1);
SpriteData[no].ptAnimlist[j].dir = sprhead.dir;
SpriteData[no].ptAnimlist[j].no = sprhead.no;
if (!sprhead.frameCnt) SpriteData[no].ptAnimlist[j].dtAnim = 0;
else SpriteData[no].ptAnimlist[j].dtAnim = sprhead.dtAnim / sprhead.frameCnt / 16;
SpriteData[no].ptAnimlist[j].frameCnt = sprhead.frameCnt;
SpriteData[no].ptAnimlist[j].ptFramelist = (FRAMELIST*)calloc(SpriteData[no].ptAnimlist[j].frameCnt, sizeof(FRAMELIST));
for (k = 0; k < SpriteData[no].ptAnimlist[j].frameCnt; k++){
fread(&sprdata, 1, 10, fp1);
SpriteData[no].ptAnimlist[j].ptFramelist[k].BmpNo = sprdata.BmpNo + nextMaxAdrnID;
SpriteData[no].ptAnimlist[j].ptFramelist[k].PosX = sprdata.PosX;
SpriteData[no].ptAnimlist[j].ptFramelist[k].PosY = sprdata.PosY;
SpriteData[no].ptAnimlist[j].ptFramelist[k].SoundNo = sprdata.SoundNo;
}
}
if (no == 1059) SpriteData[1059].ptAnimlist[80].ptFramelist[8].BmpNo = 283639;
if (no == 1059) SpriteData[1059].ptAnimlist[93].ptFramelist[8].BmpNo = 283640;
if (no == 1283) SpriteData[1283].ptAnimlist[7].ptFramelist[6].SoundNo = 10100;
if (no == 1283) SpriteData[1283].ptAnimlist[49].ptFramelist[6].SoundNo = 10100;
if (no == 1404) SpriteData[1404].ptAnimlist[0].ptFramelist[6].BmpNo = 284436;
if (no == 1409) SpriteData[1409].ptAnimlist[0].ptFramelist[6].BmpNo = 284476;
if (no == 373)
for (int kk = 0; kk < 8; kk++) {
SpriteData[373].ptAnimlist[kk * 7].ptFramelist[8].SoundNo = 254;
SpriteData[373].ptAnimlist[kk * 7].ptFramelist[10].SoundNo = 254;
SpriteData[373].ptAnimlist[kk * 7].ptFramelist[15].SoundNo = 250;
}
if (no == 102) SpriteData[102].ptAnimlist[82].ptFramelist[0].BmpNo = 126235;
if (no == 102) SpriteData[102].ptAnimlist[83].ptFramelist[0].BmpNo = 126236;
if (no == 102) SpriteData[102].ptAnimlist[83].ptFramelist[1].BmpNo = 126237;
if (no == 102) SpriteData[102].ptAnimlist[84].ptFramelist[1].BmpNo = 126238;
if (no == 1058) SpriteData[1058].ptAnimlist[80].ptFramelist[8].BmpNo = 232475;
if (no == 1058) SpriteData[1058].ptAnimlist[93].ptFramelist[8].BmpNo = 232476;
if (no == 260) SpriteData[260].ptAnimlist[21].ptFramelist[5].SoundNo = 10001;
if (no == 502) SpriteData[502].animSize = 1;
if (no == 502) SpriteData[502].ptAnimlist = (ANIMLIST*)calloc(SpriteData[502].animSize, sizeof(ANIMLIST));
if (no == 502) SpriteData[502].ptAnimlist[0].dir = 0;
if (no == 502) SpriteData[502].ptAnimlist[0].no = 0;
if (no == 502) SpriteData[502].ptAnimlist[0].dtAnim = 4;
if (no == 502) SpriteData[502].ptAnimlist[0].frameCnt = 3;
if (no == 502) SpriteData[502].ptAnimlist[0].ptFramelist = (FRAMELIST*)calloc(SpriteData[502].ptAnimlist[0].frameCnt, sizeof(FRAMELIST));
int iTemp = 8590;
if (no == 382){
for (int kkk = 0; kkk < 8; kkk++){
SpriteData[382].ptAnimlist[7 * kkk].frameCnt = 14;
free(SpriteData[382].ptAnimlist[7 * kkk].ptFramelist);
SpriteData[382].ptAnimlist[7 * kkk].ptFramelist = (FRAMELIST*)calloc(SpriteData[382].ptAnimlist[7 * kkk].frameCnt, sizeof(FRAMELIST));
SpriteData[382].ptAnimlist[7 * kkk].ptFramelist[4].SoundNo = SpriteData[381].ptAnimlist[0].ptFramelist[4].SoundNo;
SpriteData[382].ptAnimlist[7 * kkk].ptFramelist[9].SoundNo = SpriteData[381].ptAnimlist[0].ptFramelist[9].SoundNo;
SpriteData[382].ptAnimlist[7 * kkk].dtAnim = SpriteData[381].ptAnimlist[0].dtAnim;
SpriteData[382].ptAnimlist[7 * kkk].ptFramelist[0].BmpNo = 124604 + kkk * 29;
SpriteData[382].ptAnimlist[7 * kkk].ptFramelist[1].BmpNo = 124605 + kkk * 29;
SpriteData[382].ptAnimlist[7 * kkk].ptFramelist[2].BmpNo = 124606 + kkk * 29;
SpriteData[382].ptAnimlist[7 * kkk].ptFramelist[3].BmpNo = 124607 + kkk * 29;
SpriteData[382].ptAnimlist[7 * kkk].ptFramelist[4].BmpNo = 124608 + kkk * 29;
SpriteData[382].ptAnimlist[7 * kkk].ptFramelist[5].BmpNo = 124609 + kkk * 29;
SpriteData[382].ptAnimlist[7 * kkk].ptFramelist[6].BmpNo = 124610 + kkk * 29;
SpriteData[382].ptAnimlist[7 * kkk].ptFramelist[7].BmpNo = 124611 + kkk * 29;
SpriteData[382].ptAnimlist[7 * kkk].ptFramelist[8].BmpNo = 124607 + kkk * 29;
SpriteData[382].ptAnimlist[7 * kkk].ptFramelist[9].BmpNo = 124608 + kkk * 29;
SpriteData[382].ptAnimlist[7 * kkk].ptFramelist[10].BmpNo = 124609 + kkk * 29;
SpriteData[382].ptAnimlist[7 * kkk].ptFramelist[11].BmpNo = 124610 + kkk * 29;
SpriteData[382].ptAnimlist[7 * kkk].ptFramelist[12].BmpNo = 124611 + kkk * 29;
SpriteData[382].ptAnimlist[7 * kkk].ptFramelist[13].BmpNo = 124604 + kkk * 29;
}
}
if (no == 502)
for (k = 0; k < SpriteData[502].ptAnimlist[0].frameCnt; k++){
SpriteData[502].ptAnimlist[0].ptFramelist[k].BmpNo = iTemp++;
SpriteData[502].ptAnimlist[0].ptFramelist[k].PosX = 0;
SpriteData[502].ptAnimlist[0].ptFramelist[k].PosY = 0;
SpriteData[502].ptAnimlist[0].ptFramelist[k].SoundNo = 0;
}
2020-06-23 15:53:23 +08:00
//Change fix 投掷动作没有设定SoundNo,战斗时会当
2020-06-23 15:27:59 +08:00
if (no >= 1965 && no < 1987) {
//for(int kk=1965;kk<1987;kk++)
//{
SpriteData[no].ptAnimlist[9].ptFramelist[4].SoundNo = 10006;
SpriteData[no].ptAnimlist[22].ptFramelist[4].SoundNo = 10006;
SpriteData[no].ptAnimlist[35].ptFramelist[4].SoundNo = 10006;
SpriteData[no].ptAnimlist[48].ptFramelist[4].SoundNo = 10006;
SpriteData[no].ptAnimlist[61].ptFramelist[4].SoundNo = 10006;
SpriteData[no].ptAnimlist[74].ptFramelist[4].SoundNo = 10006;
SpriteData[no].ptAnimlist[87].ptFramelist[4].SoundNo = 10006;
SpriteData[no].ptAnimlist[100].ptFramelist[4].SoundNo = 10006;
//}
}
if (no >= 1988 && no < 1990) {
//for(int kk=1988;kk<1990;kk++)
//{
SpriteData[no].ptAnimlist[9].ptFramelist[4].SoundNo = 10006;
SpriteData[no].ptAnimlist[22].ptFramelist[4].SoundNo = 10006;
SpriteData[no].ptAnimlist[35].ptFramelist[4].SoundNo = 10006;
SpriteData[no].ptAnimlist[48].ptFramelist[4].SoundNo = 10006;
SpriteData[no].ptAnimlist[61].ptFramelist[4].SoundNo = 10006;
SpriteData[no].ptAnimlist[74].ptFramelist[4].SoundNo = 10006;
SpriteData[no].ptAnimlist[87].ptFramelist[4].SoundNo = 10006;
SpriteData[no].ptAnimlist[100].ptFramelist[4].SoundNo = 10006;
//}
}
if (no >= 3347 && no <= 3370)
{
SpriteData[no].ptAnimlist[9].ptFramelist[4].SoundNo = 10006;
SpriteData[no].ptAnimlist[22].ptFramelist[4].SoundNo = 10006;
SpriteData[no].ptAnimlist[35].ptFramelist[4].SoundNo = 10006;
SpriteData[no].ptAnimlist[48].ptFramelist[4].SoundNo = 10006;
SpriteData[no].ptAnimlist[61].ptFramelist[4].SoundNo = 10006;
SpriteData[no].ptAnimlist[74].ptFramelist[4].SoundNo = 10006;
SpriteData[no].ptAnimlist[87].ptFramelist[4].SoundNo = 10006;
SpriteData[no].ptAnimlist[100].ptFramelist[4].SoundNo = 10006;
SpriteData[no].ptAnimlist[52].ptFramelist[4].SoundNo = 10006;
SpriteData[no].ptAnimlist[39].ptFramelist[5].SoundNo = 10006;
}
}
fclose(fp1);
fclose(fp2);
if (Sprflg1){
Sprflg1 = FALSE;
}
return TRUE;
}