📄 horse.cpp
字号:
#include "stdafx.h"
#include <io.h>
#include "gameproc.h"
#include "NetWork.h"
#include "menu.h"
#include "SmallMenu.h"
#include "map.h"
#include "LineCommand.h"
#include "tool.h"
#include "hong_sub.h"
#include "Horse.h"
#include "char.h"
#include "Battle.h"
using namespace battle;
#define CHECKSUM_ERROR_ANIMATIONDATA 20005
cHorseRider g_HorseRider;
extern DWORD g_curr_time;
char HorseWeaponConvertTable[2][38]=
{ // 18锅 何磐 标惯
{ 0, 0,-1,-1,-1, 4, 4, 6, 6,10, 8,10, 8, 9, 9,11,11,12,12,13,13,-1,-1,-1,-1,-1,17,17,17,17,17,17,18,19,20,21,22,23},
{ 0, 0,-1,-1,-1, 4, 4, 5, 5, 6, 6,10, 8, 9, 9,10, 8,11,11,12,12,13,13,-1,-1,-1,17,17,17,17,17,17,18,19,20,21,22,23}
}; // Sprite File
char HorseEffectWeaponConvertTable[2][10] =
{ //< CSD-031020 // 18锅 何磐 标惯
{-1, 0, 12, -1, 6, 9, 10, 11, -1, -1},
{-1, 0, 12, 13, 6, 9, 10, 11, 13, 5}
}; //> CSD-031020
extern int convert565to555_LoadSprite(Spr *sp);
extern void PutCompressedImage(int x, int y, Spr *sp );
extern BOOL PutDeadEffectBottom(LPCHARACTER ch);
extern void PutCompressedImageCharRGB( int x, int y, Spr *sp, DWORD RGB );
extern void PutCompressedImageFX(int x, int y, Spr *sp, DWORD alpha, DWORD op);
extern void PutCompressedImageVoid(int x, int y, Spr *sp );
extern void PutCompressedImageShadow( int x, int y, Spr *sp );
extern int IsDead( LPCHARACTER ch );
void InitHorseAniTable()
{
g_HorseRider.LoadHorseRiderAniMationTable(0,0,"./char/hrAniTable0000.txt");
g_HorseRider.LoadHorseRiderAniMationTable(0,1,"./char/hrAniTable0100.txt");
g_HorseRider.LoadHorseRiderAniMationTable(0,2,"./char/hrAniTable0200.txt");
g_HorseRider.LoadHorseRiderAniMationTable(1,0,"./char/hrAniTable0001.txt");
g_HorseRider.LoadHorseRiderAniMationTable(1,1,"./char/hrAniTable0101.txt");
g_HorseRider.LoadHorseRiderAniMationTable(1,2,"./char/hrAniTable0201.txt");
}
cHorseRider::cHorseRider()
{
}
cHorseRider::~cHorseRider()
{
ClearSpriteAll();
}
int cHorseRider::LoadRiderSprite(int SexType,int SpriteKind)
{
FILE *fp;
short no;
DWORD sprfilelength, size;
DWORD nOff = 0;
int i,j;
Spr* s;
int length;
char tempFileName[MAX_PATH];
if( RiderPicBuffer[SexType][SpriteKind] != NULL )
{
return FALSE;
}
sprintf(tempFileName,"./char/HR%03d%03d.spr",SexType,SpriteKind);
fp=Fopen(tempFileName,"rb" );
if (fp==NULL)
{
return FALSE;
}
fread( &no, 2,1, fp);
fseek( fp, no * 4, SEEK_CUR );
length = sprfilelength = _filelength( _fileno( fp) ) - no * 4 * 2 - 2;
MemAlloc( RiderPicBuffer[SexType][SpriteKind], sprfilelength );
for (i=0;i<8;i++)
{
for (j=0;j<75;j++)
{
s = &RiderPic[SexType][SpriteKind][i][j];
fread( &size, 4,1, fp);
if( size== 0 )
{
s->xl = 0;
s->yl = 0;
s->size = 0;
s->img = NULL;
continue;
}
fread( &(s->xl), sizeof( short ), 1, fp);
fread( &(s->yl), sizeof( short ), 1, fp);
fread( &(s->ox), sizeof( short ), 1, fp);
fread( &(s->oy), sizeof( short ), 1, fp);
fread( &(s->size), sizeof( unsigned int ), 1, fp);
if( nOff + s->size >= sprfilelength )
{
JustMsg( "%s File Error !!",tempFileName);
ExitApplication(EA_LOAD_RIDER_SPR_DATA_SUB);
}
fread( RiderPicBuffer[SexType][SpriteKind] + nOff, s->size, 1, fp);
s->img = RiderPicBuffer[SexType][SpriteKind] + nOff;
convert565to555_LoadSprite( s );
nOff += size;
}
}
fclose(fp);
return TRUE;
}
int cHorseRider::LoadRiderBandSprite(int SexType,int SpriteKind)
{
FILE *fp;
short no;
DWORD sprfilelength, size;
DWORD nOff = 0;
int i,j;
Spr* s;
int length;
char tempFileName[MAX_PATH];
if( RiderBandPicBuffer[SexType][SpriteKind] != NULL )
{
return FALSE;
}
sprintf(tempFileName,"./char/RB%03d%03d.spr",SexType,SpriteKind);
fp=Fopen(tempFileName,"rb" );
if (fp==NULL)
{
return FALSE;
}
fread( &no, 2,1, fp);
fseek( fp, no * 4, SEEK_CUR );
length = sprfilelength = _filelength( _fileno( fp) ) - no * 4 * 2 - 2;
MemAlloc( RiderBandPicBuffer[SexType][SpriteKind], sprfilelength );
for (i=0;i<8;i++)
{
for (j=0;j<75;j++)
{
s = &RiderBandPic[SexType][SpriteKind][i][j];
fread( &size, 4,1, fp);
if( size== 0 )
{
s->xl = 0;
s->yl = 0;
s->size = 0;
s->img = NULL;
continue;
}
fread( &(s->xl), sizeof( short ), 1, fp);
fread( &(s->yl), sizeof( short ), 1, fp);
fread( &(s->ox), sizeof( short ), 1, fp);
fread( &(s->oy), sizeof( short ), 1, fp);
fread( &(s->size), sizeof( unsigned int ), 1, fp);
if( nOff + s->size >= sprfilelength )
{
JustMsg( "%s File Error !!",tempFileName);
ExitApplication(EA_LOAD_RIDER_BAND_SPR_DATA_SUB);
}
fread( RiderBandPicBuffer[SexType][SpriteKind] + nOff, s->size, 1, fp);
s->img = RiderBandPicBuffer[SexType][SpriteKind] + nOff;
convert565to555_LoadSprite( s );
nOff += size;
}
}
fclose(fp);
return TRUE;
}
int cHorseRider::LoadRiderMantleSprite(int SexType) // Mantle Data
{
FILE *fp;
short no;
DWORD sprfilelength, size;
DWORD nOff = 0;
int i,j;
Spr* s;
int length;
char tempFileName[MAX_PATH];
if( RiderMantlePicBuffer[SexType]!=NULL )
{
return FALSE;
}
sprintf(tempFileName,"./char/RM%03d.spr",SexType);
fp=Fopen(tempFileName,"rb" );
if (fp==NULL)
{
return FALSE;
}
fread( &no, 2,1, fp);
fseek( fp, no * 4, SEEK_CUR );
length = sprfilelength = _filelength( _fileno( fp) ) - no * 4 * 2 - 2;
MemAlloc(RiderMantlePicBuffer[SexType], sprfilelength );
for (i=0;i<8;i++)
{
for (j=0;j<75;j++)
{
s = &RiderMantlePic[SexType][i][j];
fread( &size, 4,1, fp);
if( size== 0 )
{
s->xl = 0;
s->yl = 0;
s->size = 0;
s->img = NULL;
continue;
}
fread( &(s->xl), sizeof( short ), 1, fp);
fread( &(s->yl), sizeof( short ), 1, fp);
fread( &(s->ox), sizeof( short ), 1, fp);
fread( &(s->oy), sizeof( short ), 1, fp);
fread( &(s->size), sizeof( unsigned int ), 1, fp);
if( nOff + s->size >= sprfilelength )
{
JustMsg( "%s File Error !!",tempFileName);
ExitApplication(EA_LOAD_RIDER_MANTLE_SPR_DATA_SUB);
}
fread( RiderMantlePicBuffer[SexType] + nOff, s->size, 1, fp);
s->img = RiderMantlePicBuffer[SexType] + nOff;
convert565to555_LoadSprite( s );
nOff += size;
}
}
fclose(fp);
return TRUE;
}
int cHorseRider::LoadRiderGradeSprite(int SexType,int SpriteKind,int GradeKind)
{
FILE *fp;
short no;
DWORD sprfilelength, size;
DWORD nOff = 0;
int i,j;
Spr* s;
int length;
char tempFileName[MAX_PATH];
if( RiderGradePicBuffer[SexType][SpriteKind][GradeKind] != NULL )
{
return FALSE;
}
sprintf(tempFileName,"./char/RGR%02d%02d%02d.spr",SexType,SpriteKind,GradeKind);
fp=Fopen(tempFileName,"rb" );
if (fp==NULL)
{
return FALSE;
}
fread( &no, 2,1, fp);
fseek( fp, no * 4, SEEK_CUR );
length = sprfilelength = _filelength( _fileno( fp) ) - no * 4 * 2 - 2;
MemAlloc(RiderGradePicBuffer[SexType][SpriteKind][GradeKind], sprfilelength );
for (i=0;i<8;i++)
{
for (j=0;j<75;j++)
{
s = &RiderGradePic[SexType][SpriteKind][GradeKind][i][j];
fread( &size, 4,1, fp);
if( size== 0 )
{
s->xl = 0;
s->yl = 0;
s->size = 0;
s->img = NULL;
continue;
}
fread( &(s->xl), sizeof( short ), 1, fp);
fread( &(s->yl), sizeof( short ), 1, fp);
fread( &(s->ox), sizeof( short ), 1, fp);
fread( &(s->oy), sizeof( short ), 1, fp);
fread( &(s->size), sizeof( unsigned int ), 1, fp);
if( nOff + s->size >= sprfilelength )
{
JustMsg( "%s File Error !!",tempFileName);
ExitApplication(EA_LOAD_RIDER_GRADE_SPR_DATA_SUB);
}
fread( RiderGradePicBuffer[SexType][SpriteKind][GradeKind] + nOff, s->size, 1, fp);
s->img = RiderGradePicBuffer[SexType][SpriteKind][GradeKind] + nOff;
convert565to555_LoadSprite( s );
nOff += size;
}
}
fclose(fp);
return TRUE;
}
int cHorseRider::LoadHorseSprite(int SpriteKind)
{
FILE *fp;
short no;
DWORD sprfilelength, size;
DWORD nOff = 0;
int i,j;
Spr* s;
int length;
char tempFileName[MAX_PATH];
if( HorsePicBuffer[SpriteKind] != NULL )
{
return FALSE;
}
sprintf(tempFileName,"./char/H%03d.spr",SpriteKind);
fp=Fopen(tempFileName,"rb" );
if (fp==NULL)
{
return FALSE;
}
fread( &no, 2,1, fp);
fseek( fp, no * 4, SEEK_CUR );
length = sprfilelength = _filelength( _fileno( fp) ) - no * 4 * 2 - 2;
MemAlloc( HorsePicBuffer[SpriteKind], sprfilelength );
for (i=0;i<8;i++)
{
for (j=0;j<75;j++)
{
s = &HorsePic[SpriteKind][i][j];
fread( &size, 4,1, fp);
if( size== 0 )
{
s->xl = 0;
s->yl = 0;
s->size = 0;
s->img = NULL;
continue;
}
fread( &(s->xl), sizeof( short ), 1, fp);
fread( &(s->yl), sizeof( short ), 1, fp);
fread( &(s->ox), sizeof( short ), 1, fp);
fread( &(s->oy), sizeof( short ), 1, fp);
fread( &(s->size), sizeof( unsigned int ), 1, fp);
if( nOff + s->size >= sprfilelength )
{
JustMsg( "%s File Error !!",tempFileName);
ExitApplication(EA_LOAD_HORSE_SPR_DATA_SUB);
}
fread( HorsePicBuffer[SpriteKind] + nOff, s->size, 1, fp);
s->img = HorsePicBuffer[SpriteKind] + nOff;
convert565to555_LoadSprite( s );
nOff += size;
}
}
fclose(fp);
return TRUE;
}
int cHorseRider::LoadHorseSaddleSprite(int SpriteKind)
{
FILE *fp;
short no;
DWORD sprfilelength, size;
DWORD nOff = 0;
int i,j;
Spr* s;
int length;
char tempFileName[MAX_PATH];
if( HorseSaddlePicBuffer[SpriteKind] != NULL )
{
return FALSE;
}
sprintf(tempFileName,"./char/HS%03d.spr",SpriteKind);
fp=Fopen(tempFileName,"rb" );
if (fp==NULL)
{
return FALSE;
}
fread( &no, 2,1, fp);
fseek( fp, no * 4, SEEK_CUR );
length = sprfilelength = _filelength( _fileno( fp) ) - no * 4 * 2 - 2;
MemAlloc( HorseSaddlePicBuffer[SpriteKind], sprfilelength );
for (i=0;i<8;i++)
{
for (j=0;j<75;j++)
{
s = &HorseSaddlePic[SpriteKind][i][j];
fread( &size, 4,1, fp);
if( size== 0 )
{
s->xl = 0;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -