📄 tool.cpp
字号:
void SetAnimationTxt( LPCHARACTER lpChar, HWND hDlg )
{
char temp[ FILENAME_MAX];
int i;
#ifdef _DEBUG
sprintf (temp, "%d-%s", TempAnimationCount+1, AnimationName[ TempAnimationCount] );
#endif
Edit_SetText ( GetDlgItem(hDlg, IDC_ANI_TITLE ), temp);
SendMessage(GetDlgItem(hDlg, IDC_ANI_EDIT ), WM_SETTEXT, 0, (LPARAM)"");
for( i = 0 ; i < lpChar->AnimationTable[ TempAnimationCount].nCount ; i ++)
{
sprintf( temp,"%5d %5d %5d %5d %5d %5d %5d\n",
lpChar->AnimationTable[ TempAnimationCount].cFrame[ i]+1,
lpChar->AnimationTable[ TempAnimationCount].dx[ i],
lpChar->AnimationTable[ TempAnimationCount].dy[ i],
lpChar->AnimationTable[ TempAnimationCount].attackf[ i],
lpChar->AnimationTable[ TempAnimationCount].wave[ i],
lpChar->AnimationTable[ TempAnimationCount].height[ i],
lpChar->AnimationTable[ TempAnimationCount].effect[ i] );
Edit_ReplaceSel(GetDlgItem(hDlg, IDC_ANI_EDIT ), (LPARAM)temp);
}
} //> CSD-031014
void PutClipBoard( char *s )
{
int len = strlen( s );
HGLOBAL hGlobalMemory;
char *pGlobalMemory;
hGlobalMemory = GlobalAlloc( GHND, len + 1 );
if( hGlobalMemory )
{
pGlobalMemory = (char *)GlobalLock( hGlobalMemory );
strcpy( pGlobalMemory, s );
GlobalUnlock( hGlobalMemory );
OpenClipboard( g_hwndMain );
EmptyClipboard();
SetClipboardData( CF_TEXT, hGlobalMemory );
CloseClipboard();
GlobalFree( hGlobalMemory );
}
}
extern int g_bToolViewPlusEquip; // NEW_CHAR YGI
BOOL CALLBACK CheckAnimationProc(HWND hDlg, UINT Message, WPARAM wParam, LPARAM lParam)
{
LPCHARACTER lpChar = Hero->lpNext;
char temp[FILENAME_MAX];
static int oldsprno;
int i,j;
FILE *fp;
int ScreenX;
RECT rect, grect;
int *ac= lpChar->accessory;
int old[4];
switch(Message)
{
case WM_INITDIALOG: sprintf (temp, "%d", lpChar->sprno );
Edit_SetText (GetDlgItem(hDlg, IDC_CHAR_NO ), temp);
oldsprno = lpChar->sprno;
sprintf(temp, "%d", lpChar->mutant);
Edit_SetText(GetDlgItem(hDlg, EDT_CHAR_MUTANT), temp);
sprintf (temp, "%d", lpChar->basicAction+1);
Edit_SetText (GetDlgItem(hDlg, IDC_EDIT_BASIC ), temp);
tool_AnimationEditTotalSpriteNo = 0;
tool_AnimationEditCurFrame = 0;
sprintf( temp, "%d", tool_AnimationEditCurFrame +1 );
Edit_SetText (GetDlgItem(hDlg, IDC_EDIT_CURFRAME ), temp);
if( oldsprno <= 1 )
{
sprintf (temp, "%d", ac[0] );
Edit_SetText (GetDlgItem(hDlg, IDC_EDIT_ACC0), temp);
sprintf (temp, "%d", ac[1]);
Edit_SetText (GetDlgItem(hDlg, IDC_EDIT_ACC1), temp);
sprintf (temp, "%d", ac[2]);
Edit_SetText (GetDlgItem(hDlg, IDC_EDIT_ACC2), temp);
sprintf (temp, "%d", ac[3]);
Edit_SetText (GetDlgItem(hDlg, IDC_EDIT_ACC3), temp);
}
CheckAnimationHwnd = GetDlgItem(hDlg, IDC_ANI_EDIT );
ScreenX = GetSystemMetrics(SM_CXSCREEN);
//ShowWindow( CheckAnimationHwnd, SW_HIDE);
GetWindowRect( hDlg, &rect );// 拳搁 坷弗率捞 嘿绢唱坷霸 窍妨绊 茄扒单 ... 绢痘霸 秦具 且瘤..
GetWindowRect( g_hwndMain, &grect );// 拳搁 坷弗率捞 嘿绢唱坷霸 窍妨绊 茄扒单 ... 绢痘霸 秦具 且瘤..
MoveWindow( hDlg, grect.right+1, 0, rect.right, rect.bottom, true);
TempAnimationCount = 0;
SetAnimationTxt( lpChar, hDlg );
Button_SetCheck( GetDlgItem( hDlg, IDC_PLUS_EQUIP ), 1 );
Button_SetCheck(GetDlgItem(hDlg, CHK_NPC_HEADER), 0);
Button_SetCheck(GetDlgItem(hDlg, CHK_NPC_BODY), 0);
Button_SetCheck(GetDlgItem(hDlg, CHK_NPC_WEAPON), 0);
Button_SetCheck(GetDlgItem(hDlg, CHK_EFFECT_ONE), 0);
Button_SetCheck(GetDlgItem(hDlg, CHK_EFFECT_TWO), 0);
return TRUE;
case WM_PAINT:
break;
case WM_COMMAND:
switch( LOWORD( wParam ))
{
/////////////////////////////////////////////////////////
case IDC_PLUS_EQUIP :
{
g_bToolViewPlusEquip = Button_GetCheck( GetDlgItem( hDlg, IDC_PLUS_EQUIP ) );
EndOfAnimationFlag = 0;
while( EndOfAnimationFlag != 3 )
{
GameTestProc( &g_DirectDrawInfo );
}
break;
}
case IDC_CHANGE_EQUIP :
if( lpChar->sprno <= 1 )
{
if( IsDlgButtonChecked( hDlg, IDC_RADIO_1_NO ) )
{
lpChar->basicAction = ACTION_NONE;
lpChar->basicWalk = ACTION_BASIC_WALK;
}
if( IsDlgButtonChecked( hDlg, IDC_RADIO_1_ONESWORD ) )
{
lpChar->basicAction = ACTION_BATTLE_NONE;
lpChar->basicWalk = ACTION_BATTLE_WALK_OWNHAND;
}
if( IsDlgButtonChecked( hDlg, IDC_RADIO_1_TWOSWORD ) )
{
lpChar->basicAction = ACTION_BATTLE_NONE_TWOHAND;
lpChar->basicWalk = ACTION_BATTLE_WALK_TWOHAND;
}
if( IsDlgButtonChecked( hDlg, IDC_RADIO_1_PENSING ) )
{
lpChar->basicAction = ACTION_ATTACK_PENSWORD2;
lpChar->basicWalk = ACTION_BATTLE_WALK_OWNHAND;
}
if( IsDlgButtonChecked( hDlg, IDC_RADIO_1_BONG ) )
{
lpChar->basicAction = ACTION_BATTLE_NONE;
lpChar->basicWalk = ACTION_BATTLE_WALK_OWNHAND;
}
Edit_GetText( GetDlgItem(hDlg, IDC_EDIT_ACC0 ), temp, 9);
old[0] = ac[0]; ac[0] = atoi (temp);
Edit_GetText( GetDlgItem(hDlg, IDC_EDIT_ACC1 ), temp, 9);
old[1] = ac[1]; ac[1] = atoi (temp);
Edit_GetText( GetDlgItem(hDlg, IDC_EDIT_ACC2 ), temp, 9);
old[2] = ac[2]; ac[2] = atoi (temp);
Edit_GetText( GetDlgItem(hDlg, IDC_EDIT_ACC3 ), temp, 9);
old[3] = ac[3]; ac[3] = atoi (temp);
if( old[0] != ac[0] )
{
FreeHeroClothAccessoryDataOne( lpChar->sprno, old[0] );
LoadHeroClothAccessoryDataOne( lpChar->sprno, ac[0]);
FreeHeroClothAccessoryDataOne( lpChar->sprno, old[0] +1);
LoadHeroClothAccessoryDataOne( lpChar->sprno, ac[0]+1);
//FreeHeroClothAccessoryDataOne( lpChar->sprno, old[0]+200 ); // NEW_CHAR YGI
//LoadHeroClothAccessoryDataOne( lpChar->sprno, ac[0]+200);
//FreeHeroClothAccessoryDataOne( lpChar->sprno, old[0] +201);
//LoadHeroClothAccessoryDataOne( lpChar->sprno, ac[0]+201);
}
if( old[1] != ac[1] )
{
FreeHeroClothAccessoryDataOne( lpChar->sprno, old[1] );
LoadHeroClothAccessoryDataOne( lpChar->sprno, ac[1]);
}
if( old[2] != ac[2] )
{
FreeHeroClothAccessoryDataOne( lpChar->sprno, old[2] );
LoadHeroClothAccessoryDataOne( lpChar->sprno, ac[2]);
}
if( old[3] != ac[3] )
{
FreeHeroClothAccessoryDataOne( lpChar->sprno, old[3] );
LoadHeroClothAccessoryDataOne( lpChar->sprno, ac[3]);
}
}
else
{
JustMsg( "阁胶磐唱 NPC绰 厘厚甫 厘馒且荐 绝嚼聪促. " );
}
break;
///////////////////////////////////////////////////////////////
case ID_ANIMATION_LOAD :
{
LoadChacterAnimationData_Tool(lpChar);
break;
}
case ID_ANIMATION_SAVE :
{
sprintf( temp, "./char_test/%03dAniTable.txt", lpChar->sprno );
// sprintf( temp, "t.txt", lpChar->sprno );
fp = Fopen( temp, "wt" );
for( i = 0 ; i < lpChar->TotalAni; i ++)
{
#ifdef _DEBUG
fprintf( fp, "#%s\n", AnimationName[i] );
#endif
for( j = 0 ; j < lpChar->AnimationTable[i].nCount ; j ++)
{
fprintf( fp, "%d %3d %3d %3d %3d %3d %3d 0 0 0 0\n",
lpChar->AnimationTable[i].cFrame[ j]+1,
lpChar->AnimationTable[i].dx[ j],
lpChar->AnimationTable[i].dy[ j],
lpChar->AnimationTable[i].attackf[ j],
lpChar->AnimationTable[i].wave[ j],
lpChar->AnimationTable[i].height[ j],
lpChar->AnimationTable[i].effect[ j] );
}
fprintf( fp, "\n\n\n" );
}
fclose(fp);
JustMsg( "%d 锅 某腐磐狼 Animation Data甫 历厘钦聪促. \n \n[%s]", lpChar->sprno, temp );
break;
}
case IDC_CHARACTER_LOAD :
{
lpChar->animationType = ANIMATION_TYPE_TEST;
lpChar->peacests = 1;
Edit_GetText(GetDlgItem(hDlg, IDC_CHAR_NO), temp, 9);
lpChar->sprno = atoi(temp);
Edit_GetText(GetDlgItem(hDlg, EDT_CHAR_MUTANT), temp, 9);
lpChar->mutant = atoi(temp);
sprintf( temp, "./char_test/%03d000.spr", lpChar->sprno );
if( CharBuf[lpChar->sprno] != NULL ) { FreeCharacterSpriteData( CharBuf[lpChar->sprno] ); CharBuf[lpChar->sprno] = 0; }
tool_AnimationEditTotalSpriteNo = LoadCharSpriteData( temp, &CharBuf[lpChar->sprno], &CharBufLength[lpChar->sprno], &CharSpr[ lpChar->sprno], LD_CHAR_SPRITE_ALL_LOAD );
LoadChacterAnimationData_Tool( lpChar );
const int nMutant = lpChar->mutant;
const int nSprNo = lpChar->sprno;
for (int i = 0; i < MAX_CHARACTOR_PART_; i++)
{
if (CharLayerBuf[nSprNo][i][nMutant] == NULL)
{
char szBuffer[FILENAME_MAX];
sprintf(szBuffer, "./char_test/%03d%01d%02d.spr", nSprNo, i, nMutant);
LoadCharSpriteData(szBuffer,
&CharLayerBuf[nSprNo][i][nMutant],
&CharLayerBufLength[nSprNo][i][nMutant],
&CharLayerSpr[nSprNo][i][nMutant],
LD_CHAR_SPRITE_ALL_LOAD);
CharLayerBufCount[nSprNo][i][nMutant] = 1;
}
}
TempAnimationCount = 0;
SetAnimationTxt( lpChar, hDlg );
if( lpChar->sprno <= 1 )
{
sprintf (temp, "%d", ac[0]); Edit_SetText (GetDlgItem(hDlg, IDC_EDIT_ACC0 ), temp);
sprintf (temp, "%d", ac[1]); Edit_SetText (GetDlgItem(hDlg, IDC_EDIT_ACC1 ), temp);
sprintf (temp, "%d", ac[2]); Edit_SetText (GetDlgItem(hDlg, IDC_EDIT_ACC2 ), temp);
sprintf (temp, "%d", ac[3]); Edit_SetText (GetDlgItem(hDlg, IDC_EDIT_ACC3 ), temp);
}
tool_AnimationEditCurFrame = 0;
sprintf( temp, "%d", tool_AnimationEditCurFrame +1);
Edit_SetText (GetDlgItem(hDlg, IDC_EDIT_CURFRAME ), temp);
break;
}
case IDC_NEXT_ANIMATION : if( TempAnimationCount < lpChar->TotalAni - 1 )
{
GetAnimationTxt( lpChar, CheckAnimationHwnd );
TempAnimationCount ++;
SetAnimationTxt( lpChar, hDlg );
}
break;
case IDC_PRI_ANIMATION : if( TempAnimationCount > 0 )
{
GetAnimationTxt( lpChar, CheckAnimationHwnd );
TempAnimationCount --;
SetAnimationTxt( lpChar, hDlg );
}
break;
case IDC_PLAY_ANIMATION : Edit_GetText( GetDlgItem(hDlg, IDC_EDIT_BASIC ), temp, 9);
lpChar->basicAction = atoi (temp)-1;
Edit_GetText( GetDlgItem(hDlg, IDC_CHAR_NO ), temp, 9);
lpChar->sprno = atoi(temp);
GetAnimationTxt( lpChar, CheckAnimationHwnd );
lpChar->nCurrentAction = TempAnimationCount;
lpChar->nCurrentFrame = 0;
lpChar->animationType = ANIMATION_TYPE_TEST;
AnimationEditWorkStartFlag = TRUE;
EndOfAnimationFlag = 0;
while( EndOfAnimationFlag != 3 )
{
GameTestProc( &g_DirectDrawInfo );
}
break;
case IDC_BUTTON1 : lpChar->direction = DIRECTION_DOWN; ; GameTestProc( &g_DirectDrawInfo ); return TRUE;
case IDC_BUTTON2 : lpChar->direction = DIRECTION_LEFTDOWN; ; GameTestProc( &g_DirectDrawInfo ); return TRUE;
case IDC_BUTTON3 : lpChar->direction = DIRECTION_LEFT; ; GameTestProc( &g_DirectDrawInfo ); return TRUE;
case IDC_BUTTON4 : lpChar->direction = DIRECTION_LEFTUP; ; GameTestProc( &g_DirectDrawInfo ); return TRUE;
case IDC_BUTTON5 : lpChar->direction = DIRECTION_UP; ; GameTestProc( &g_DirectDrawInfo ); return TRUE;
case IDC_BUTTON6 : lpChar->direction = DIRECTION_RIGHTUP; ; GameTestProc( &g_DirectDrawInfo ); return TRUE;
case IDC_BUTTON7 : lpChar->direction = DIRECTION_RIGHT; ; GameTestProc( &g_DirectDrawInfo ); return TRUE;
case IDC_BUTTON8 : lpChar->direction = DIRECTION_RIGHTDOWN; ; GameTestProc( &g_DirectDrawInfo ); return TRUE;
case IDC_FRAME_DOWN : tool_AnimationEditCurFrame --;
if( tool_AnimationEditCurFrame < 0 )
{
tool_AnimationEditCurFrame = tool_AnimationEditTotalSpriteNo/8 -1;
}
sprintf( temp, "%d", tool_AnimationEditCurFrame+1 );
Edit_SetText (GetDlgItem(hDlg, IDC_EDIT_CURFRAME ), temp);
;
GameTestProc( &g_DirectDrawInfo );
sprintf( temp, " %3d 0 0 0 0 0\n", tool_AnimationEditCurFrame );
PutClipBoard( temp );
return TRUE;
case IDC_FRAME_UP : tool_AnimationEditCurFrame ++;
if( tool_AnimationEditCurFrame >= tool_AnimationEditTotalSpriteNo/8 )
{
tool_AnimationEditCurFrame = 0;
}
sprintf( temp, "%d", tool_AnimationEditCurFrame +1 );
Edit_SetText (GetDlgItem(hDlg, IDC_EDIT_CURFRAME ), temp);
sprintf( temp, " %3d 0 0 0 0 0\n", tool_AnimationEditCurFrame );
PutClipBoard( temp );
;
GameTestProc( &g_DirectDrawInfo );
return TRUE;
case IDC_FRAME_DOWN2 : tool_AnimationEditCurFrame -=10;
if( tool_AnimationEditCurFrame < 0 )
{
tool_AnimationEditCurFrame = tool_AnimationEditTotalSpriteNo/8 -1;
}
sprintf( temp, "%d", tool_AnimationEditCurFrame +1);
Edit_SetText (GetDlgItem(hDlg, IDC_EDIT_CURFRAME ), temp);
;
GameTestProc( &g_DirectDrawInfo );
sprintf( temp, " %3d 0 0 0 0 0\n", tool_AnimationEditCurFrame );
PutClipBoard( temp );
return TRUE;
case IDC_FRAME_UP2 : tool_AnimationEditCurFrame +=10;
if( tool_AnimationEditCurFrame >= tool_AnimationEditTotalSpriteNo/8 )
{
tool_AnimationEditCurFrame = 0;
}
sprintf( temp, "%d", tool_AnimationEditCurFrame +1);
Edit_SetText (GetDlgItem(hDlg, IDC_EDIT_CURFRAME ), temp);
;
GameTestProc( &g_DirectDrawInfo );
sprintf( temp, " %3d 0 0 0 0 0\n", tool_AnimationEditCurFrame );
PutClipBoard( temp );
return TRUE;
case IDCANCEL :
{
EndDialog(hDlg, LOWORD(wParam));
lpChar->position.x = lpChar->x / TILE_SIZE;
lpChar->position.y = lpChar->y / TILE_SIZE;
int tx = lpChar->position.x - 10;
if( tx < 0 ) tx = 0;
int ty = lpChar->position.y - 7;
if( ty < 0 ) ty = 0;
RECT rect;
rect.left = tx;
rect.top = ty;
rect.right = tx + 20;
rect.bottom = ty + 11;
;
SetHeroPosition(0);
return (TRUE);
}
}
break;
}
return FALSE;
}
void CheckAnimationEdit( HWND hwnd, HINSTANCE hInstance)
{
HINSTANCE hinst;
hinst = LoadLibrary("riched32.dll");
DialogBox( hInstance, MAKEINTRESOURCE( IDD_DIALOG_ANIMATION_EDIT ), NULL, (DLGPROC)CheckAnimationProc );
FreeLibrary( hinst );
}
/////////////////////////////////////////////////////////////////////////////////////
/// 捞亥飘 锅龋 涝仿..
BOOL CALLBACK InputEventNoProc(HWND hDlg, UINT Message, WPARAM wParam, LPARAM lParam)
{
char temp[FILENAME_MAX];
static int mx, my;
switch(Message)
{
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -