Descent3/legacy/editor/AnimStatesDialog.cpp
JeodC a4ab78192c Join license header with historical commentrs
Join the license header with historical comments using a separator so IDEs can correctly parse the initial header.

Also use .gitattributes to ensure all files are LF.
2024-05-08 14:41:19 -04:00

1417 lines
39 KiB
C++

/*
* Descent 3
* Copyright (C) 2024 Parallax Software
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
--- HISTORICAL COMMENTS FOLLOW ---
* $Logfile: /DescentIII/Main/editor/AnimStatesDialog.cpp $
* $Revision: 1.1.1.1 $
* $Date: 2003-08-26 03:57:37 $
* $Author: kevinb $
*
* AnimStatesDialog.cpp : implementation file
*
* $Log: not supported by cvs2svn $
*
* 17 10/22/99 6:04p Jeff
* fixed bugs and compiler errors resulting from mac code merge
*
* 16 9/21/99 5:06p Chris
* Faster animation dialog updates - an editor ONLY change
*
* 15 6/15/98 4:00p Jason
* replaced monochromatic polymodel lighting with rgb lighting
*
* 14 5/03/98 5:38p Chris
* Added sounds to anim page
*
* 13 4/16/98 2:56p Chris
* Added birth Animation
*
* 12 4/13/98 2:20p Chris
* IDLe works (kindof)
*
* 11 4/02/98 3:54p Jason
* first pass in getting polymodel paging to work
*
* 10 2/16/98 2:49p Chris
* Made the MAX_SUBOBJECTS determine the number of normalized_time values
* to be processed. No longer a 'literal' problem.
*
* 9 2/16/98 2:47a Chris
* Massive improvements to the animation system and the AI
*
* 8 12/19/97 11:25a Samir
* g3_StartFrame and g3_EndFrame replaced by EditorStartFrame and
* EditorEndFrame
*
* 7 12/17/97 3:17p Jason
* fixed potential fabs/abs bug
*
* 6 10/05/97 5:30a Chris
* Added more support for TIMED animations
*
* 5 9/08/97 11:51a Chris
* Added support for entering seconds-per-cycle animation information
*
* 4 8/08/97 11:45a Matt
* Made anim states dialog keep local copy of anim array. The caller then
* copies the data to his own array if the user exits from the dialog via
* OK.
*
* 3 8/06/97 1:35p Matt
* Changes for new generic object_info struct which replace robot-specific
* structure
*
* 2 7/24/97 6:35p Matt
* Created symbolic constant for default zoom, and used it every place
* that specifies zoom
*
* $NoKeywords: $
*/
#include "stdafx.h"
#include "editor.h"
#include "AnimStatesDialog.h"
#include "polymodel.h"
#include "gr.h"
#include "soundpage.h"
#include "soundload.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CAnimStatesDialog dialog
CAnimStatesDialog::CAnimStatesDialog(int render_handle,anim_elem *anim_info,CWnd* pParent /*=NULL*/)
: CDialog(CAnimStatesDialog::IDD, pParent)
{
//{{AFX_DATA_INIT(CAnimStatesDialog)
// NOTE: the ClassWizard will add member initialization here
//}}AFX_DATA_INIT
m_render_handle = render_handle;
for (int i=0;i<NUM_MOVEMENT_CLASSES;i++)
for (int j=0;j<NUM_ANIMS_PER_CLASS;j++)
{
//m_anim[i][j] = anim_info[i][j];
m_anim[i].elem[j] = anim_info[i].elem[j];
}
m_setup_sound_dialogs = false;
}
void CAnimStatesDialog::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CAnimStatesDialog)
// NOTE: the ClassWizard will add DDX and DDV calls here
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CAnimStatesDialog, CDialog)
//{{AFX_MSG_MAP(CAnimStatesDialog)
ON_BN_CLICKED(IDC_ALERT_CHECK, OnAlertCheck)
ON_BN_CLICKED(IDC_DEATH_CHECK, OnDeathCheck)
ON_BN_CLICKED(IDC_FLINCH_CHECK, OnFlinchCheck)
ON_BN_CLICKED(IDC_GOTO_FLYING_CHECK, OnGotoFlyingCheck)
ON_BN_CLICKED(IDC_GOTO_JUMPING_CHECK, OnGotoJumpingCheck)
ON_BN_CLICKED(IDC_GOTO_ROLLING_CHECK, OnGotoRollingCheck)
ON_BN_CLICKED(IDC_GOTO_STANDING_CHECK, OnGotoStandingCheck)
ON_BN_CLICKED(IDC_GOTO_WALKING_CHECK, OnGotoWalkingCheck)
ON_BN_CLICKED(IDC_IDLE_CHECK, OnIdleCheck)
ON_BN_CLICKED(IDC_MELEE1_CHECK, OnMelee1Check)
ON_BN_CLICKED(IDC_MELEE1_RECOIL_CHECK, OnMelee1RecoilCheck)
ON_BN_CLICKED(IDC_MELEE2_CHECK, OnMelee2Check)
ON_BN_CLICKED(IDC_MELEE2_RECOIL_CHECK, OnMelee2RecoilCheck)
ON_BN_CLICKED(IDC_MISSILE1_CHECK, OnMissile1Check)
ON_BN_CLICKED(IDC_MISSILE1_RECOIL_CHECK, OnMissile1RecoilCheck)
ON_BN_CLICKED(IDC_MISSILE2_CHECK, OnMissile2Check)
ON_BN_CLICKED(IDC_MISSILE2_RECOIL_CHECK, OnMissile2RecoilCheck)
ON_BN_CLICKED(IDC_QUIRK_CHECK, OnQuirkCheck)
ON_BN_CLICKED(IDC_SPECIAL1_CHECK, OnSpecial1Check)
ON_BN_CLICKED(IDC_SPECIAL2_CHECK, OnSpecial2Check)
ON_BN_CLICKED(IDC_SPECIAL3_CHECK, OnSpecial3Check)
ON_BN_CLICKED(IDC_SPECIAL4_CHECK, OnSpecial4Check)
ON_BN_CLICKED(IDC_SPECIAL5_CHECK, OnSpecial5Check)
ON_BN_CLICKED(IDC_TAUNT_CHECK, OnTauntCheck)
ON_CBN_SELENDOK(IDC_CURRENT_ANIMATION_PULLDOWN, OnSelendokCurrentAnimationPulldown)
ON_CBN_SELENDOK(IDC_CURRENT_STATE_PULLDOWN, OnSelendokCurrentStatePulldown)
ON_WM_TIMER()
ON_EN_KILLFOCUS(IDC_ALERT_FROM_EDIT, OnKillfocusAlertFromEdit)
ON_EN_KILLFOCUS(IDC_ALERT_TO_EDIT, OnKillfocusAlertToEdit)
ON_EN_KILLFOCUS(IDC_DEATH_FROM_EDIT, OnKillfocusDeathFromEdit)
ON_EN_KILLFOCUS(IDC_DEATH_TO_EDIT, OnKillfocusDeathToEdit)
ON_EN_KILLFOCUS(IDC_FLINCH_FROM_EDIT, OnKillfocusFlinchFromEdit)
ON_EN_KILLFOCUS(IDC_FLINCH_TO_EDIT, OnKillfocusFlinchToEdit)
ON_EN_KILLFOCUS(IDC_FLYING_FROM_EDIT, OnKillfocusFlyingFromEdit)
ON_EN_KILLFOCUS(IDC_FLYING_TO_EDIT, OnKillfocusFlyingToEdit)
ON_EN_KILLFOCUS(IDC_IDLE_FROM_EDIT, OnKillfocusIdleFromEdit)
ON_EN_KILLFOCUS(IDC_IDLE_TO_EDIT, OnKillfocusIdleToEdit)
ON_EN_KILLFOCUS(IDC_JUMPING_FROM_EDIT, OnKillfocusJumpingFromEdit)
ON_EN_KILLFOCUS(IDC_JUMPING_TO_EDIT, OnKillfocusJumpingToEdit)
ON_EN_KILLFOCUS(IDC_MELEE1_FROM_EDIT, OnKillfocusMelee1FromEdit)
ON_EN_KILLFOCUS(IDC_MELEE1_TO_EDIT, OnKillfocusMelee1ToEdit)
ON_EN_KILLFOCUS(IDC_MELEE2_FROM_EDIT, OnKillfocusMelee2FromEdit)
ON_EN_KILLFOCUS(IDC_MISSILE1_FROM_EDIT, OnKillfocusMissile1FromEdit)
ON_EN_KILLFOCUS(IDC_MISSILE1_TO_EDIT, OnKillfocusMissile1ToEdit)
ON_EN_KILLFOCUS(IDC_MISSILE2_FROM_EDIT, OnKillfocusMissile2FromEdit)
ON_EN_KILLFOCUS(IDC_MISSILE2_TO_EDIT, OnKillfocusMissile2ToEdit)
ON_EN_KILLFOCUS(IDC_MRECOIL1_TO_EDIT, OnKillfocusMrecoil1ToEdit)
ON_EN_KILLFOCUS(IDC_MRECOIL1_FROM_EDIT, OnKillfocusMrecoil1FromEdit)
ON_EN_KILLFOCUS(IDC_MRECOIL2_FROM_EDIT, OnKillfocusMrecoil2FromEdit)
ON_EN_KILLFOCUS(IDC_MRECOIL2_TO_EDIT, OnKillfocusMrecoil2ToEdit)
ON_EN_KILLFOCUS(IDC_QUIRK_FROM_EDIT, OnKillfocusQuirkFromEdit)
ON_EN_KILLFOCUS(IDC_QUIRK_TO_EDIT, OnKillfocusQuirkToEdit)
ON_EN_KILLFOCUS(IDC_RECOIL1_FROM_EDIT, OnKillfocusRecoil1FromEdit)
ON_EN_KILLFOCUS(IDC_RECOIL1_TO_EDIT, OnKillfocusRecoil1ToEdit)
ON_EN_KILLFOCUS(IDC_RECOIL2_FROM_EDIT, OnKillfocusRecoil2FromEdit)
ON_EN_KILLFOCUS(IDC_RECOIL2_TO_EDIT, OnKillfocusRecoil2ToEdit)
ON_EN_KILLFOCUS(IDC_ROLLING_FROM_EDIT, OnKillfocusRollingFromEdit)
ON_EN_KILLFOCUS(IDC_ROLLING_TO_EDIT, OnKillfocusRollingToEdit)
ON_EN_KILLFOCUS(IDC_SPECIAL1_FROM_EDIT, OnKillfocusSpecial1FromEdit)
ON_EN_KILLFOCUS(IDC_SPECIAL1_TO_EDIT, OnKillfocusSpecial1ToEdit)
ON_EN_KILLFOCUS(IDC_SPECIAL2_FROM_EDIT, OnKillfocusSpecial2FromEdit)
ON_EN_KILLFOCUS(IDC_SPECIAL2_TO_EDIT, OnKillfocusSpecial2ToEdit)
ON_EN_KILLFOCUS(IDC_SPECIAL3_FROM_EDIT, OnKillfocusSpecial3FromEdit)
ON_EN_KILLFOCUS(IDC_SPECIAL3_TO_EDIT, OnKillfocusSpecial3ToEdit)
ON_EN_KILLFOCUS(IDC_SPECIAL4_FROM_EDIT, OnKillfocusSpecial4FromEdit)
ON_EN_KILLFOCUS(IDC_SPECIAL4_TO_EDIT, OnKillfocusSpecial4ToEdit)
ON_EN_KILLFOCUS(IDC_SPECIAL5_FROM_EDIT, OnKillfocusSpecial5FromEdit)
ON_EN_KILLFOCUS(IDC_SPECIAL5_TO_EDIT, OnKillfocusSpecial5ToEdit)
ON_EN_KILLFOCUS(IDC_STANDING_FROM_EDIT, OnKillfocusStandingFromEdit)
ON_EN_KILLFOCUS(IDC_STANDING_TO_EDIT, OnKillfocusStandingToEdit)
ON_EN_KILLFOCUS(IDC_TAUNT_FROM_EDIT, OnKillfocusTauntFromEdit)
ON_EN_KILLFOCUS(IDC_TAUNT_TO_EDIT, OnKillfocusTauntToEdit)
ON_EN_KILLFOCUS(IDC_WALKING_FROM_EDIT, OnKillfocusWalkingFromEdit)
ON_EN_KILLFOCUS(IDC_WALKING_TO_EDIT, OnKillfocusWalkingToEdit)
ON_EN_KILLFOCUS(IDC_MELEE2_TO_EDIT, OnKillfocusMelee2ToEdit)
ON_BN_CLICKED(IDC_RESET_ANIM_ZERO, OnResetAnimZero)
ON_BN_CLICKED(IDC_ROT_LEFT, OnRotLeft)
ON_BN_CLICKED(IDC_ROT_RIGHT, OnRotRight)
ON_EN_KILLFOCUS(IDC_SEC_PER_CYCLE_EDIT1, OnKillfocusSecPerCycleEdit1)
ON_EN_KILLFOCUS(IDC_SEC_PER_CYCLE_EDIT2, OnKillfocusSecPerCycleEdit2)
ON_EN_KILLFOCUS(IDC_SEC_PER_CYCLE_EDIT3, OnKillfocusSecPerCycleEdit3)
ON_EN_KILLFOCUS(IDC_SEC_PER_CYCLE_EDIT4, OnKillfocusSecPerCycleEdit4)
ON_EN_KILLFOCUS(IDC_SEC_PER_CYCLE_EDIT5, OnKillfocusSecPerCycleEdit5)
ON_EN_KILLFOCUS(IDC_SEC_PER_CYCLE_EDIT6, OnKillfocusSecPerCycleEdit6)
ON_EN_KILLFOCUS(IDC_SEC_PER_CYCLE_EDIT7, OnKillfocusSecPerCycleEdit7)
ON_EN_KILLFOCUS(IDC_SEC_PER_CYCLE_EDIT8, OnKillfocusSecPerCycleEdit8)
ON_EN_KILLFOCUS(IDC_SEC_PER_CYCLE_EDIT9, OnKillfocusSecPerCycleEdit9)
ON_EN_KILLFOCUS(IDC_SEC_PER_CYCLE_EDIT10, OnKillfocusSecPerCycleEdit10)
ON_EN_KILLFOCUS(IDC_SEC_PER_CYCLE_EDIT11, OnKillfocusSecPerCycleEdit11)
ON_EN_KILLFOCUS(IDC_SEC_PER_CYCLE_EDIT12, OnKillfocusSecPerCycleEdit12)
ON_EN_KILLFOCUS(IDC_SEC_PER_CYCLE_EDIT13, OnKillfocusSecPerCycleEdit13)
ON_EN_KILLFOCUS(IDC_SEC_PER_CYCLE_EDIT14, OnKillfocusSecPerCycleEdit14)
ON_EN_KILLFOCUS(IDC_SEC_PER_CYCLE_EDIT15, OnKillfocusSecPerCycleEdit15)
ON_EN_KILLFOCUS(IDC_SEC_PER_CYCLE_EDIT16, OnKillfocusSecPerCycleEdit16)
ON_EN_KILLFOCUS(IDC_SEC_PER_CYCLE_EDIT17, OnKillfocusSecPerCycleEdit17)
ON_EN_KILLFOCUS(IDC_SEC_PER_CYCLE_EDIT18, OnKillfocusSecPerCycleEdit18)
ON_EN_KILLFOCUS(IDC_SEC_PER_CYCLE_EDIT19, OnKillfocusSecPerCycleEdit19)
ON_EN_KILLFOCUS(IDC_SEC_PER_CYCLE_EDIT20, OnKillfocusSecPerCycleEdit20)
ON_EN_KILLFOCUS(IDC_SEC_PER_CYCLE_EDIT21, OnKillfocusSecPerCycleEdit21)
ON_EN_KILLFOCUS(IDC_SEC_PER_CYCLE_EDIT22, OnKillfocusSecPerCycleEdit22)
ON_EN_KILLFOCUS(IDC_SEC_PER_CYCLE_EDIT23, OnKillfocusSecPerCycleEdit23)
ON_EN_KILLFOCUS(IDC_SEC_PER_CYCLE_EDIT24, OnKillfocusSecPerCycleEdit24)
ON_CBN_SELENDOK(IDC_ANIM_SOUND0_PULLDOWN, OnSelendokAnimSound0Pulldown)
ON_CBN_SELENDOK(IDC_ANIM_SOUND1_PULLDOWN, OnSelendokAnimSound1Pulldown)
ON_CBN_SELENDOK(IDC_ANIM_SOUND2_PULLDOWN, OnSelendokAnimSound2Pulldown)
ON_CBN_SELENDOK(IDC_ANIM_SOUND10_PULLDOWN, OnSelendokAnimSound10Pulldown)
ON_CBN_SELENDOK(IDC_ANIM_SOUND11_PULLDOWN, OnSelendokAnimSound11Pulldown)
ON_CBN_SELENDOK(IDC_ANIM_SOUND12_PULLDOWN, OnSelendokAnimSound12Pulldown)
ON_CBN_SELENDOK(IDC_ANIM_SOUND13_PULLDOWN, OnSelendokAnimSound13Pulldown)
ON_CBN_SELENDOK(IDC_ANIM_SOUND14_PULLDOWN, OnSelendokAnimSound14Pulldown)
ON_CBN_SELENDOK(IDC_ANIM_SOUND15_PULLDOWN, OnSelendokAnimSound15Pulldown)
ON_CBN_SELENDOK(IDC_ANIM_SOUND16_PULLDOWN, OnSelendokAnimSound16Pulldown)
ON_CBN_SELENDOK(IDC_ANIM_SOUND17_PULLDOWN, OnSelendokAnimSound17Pulldown)
ON_CBN_SELENDOK(IDC_ANIM_SOUND18_PULLDOWN, OnSelendokAnimSound18Pulldown)
ON_CBN_SELENDOK(IDC_ANIM_SOUND19_PULLDOWN, OnSelendokAnimSound19Pulldown)
ON_CBN_SELENDOK(IDC_ANIM_SOUND20_PULLDOWN, OnSelendokAnimSound20Pulldown)
ON_CBN_SELENDOK(IDC_ANIM_SOUND21_PULLDOWN, OnSelendokAnimSound21Pulldown)
ON_CBN_SELENDOK(IDC_ANIM_SOUND22_PULLDOWN, OnSelendokAnimSound22Pulldown)
ON_CBN_SELENDOK(IDC_ANIM_SOUND23_PULLDOWN, OnSelendokAnimSound23Pulldown)
ON_CBN_SELENDOK(IDC_ANIM_SOUND3_PULLDOWN, OnSelendokAnimSound3Pulldown)
ON_CBN_SELENDOK(IDC_ANIM_SOUND4_PULLDOWN, OnSelendokAnimSound4Pulldown)
ON_CBN_SELENDOK(IDC_ANIM_SOUND5_PULLDOWN, OnSelendokAnimSound5Pulldown)
ON_CBN_SELENDOK(IDC_ANIM_SOUND6_PULLDOWN, OnSelendokAnimSound6Pulldown)
ON_CBN_SELENDOK(IDC_ANIM_SOUND7_PULLDOWN, OnSelendokAnimSound7Pulldown)
ON_CBN_SELENDOK(IDC_ANIM_SOUND8_PULLDOWN, OnSelendokAnimSound8Pulldown)
ON_CBN_SELENDOK(IDC_ANIM_SOUND9_PULLDOWN, OnSelendokAnimSound9Pulldown)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CAnimStatesDialog message handlers
void CAnimStatesDialog::OnAlertCheck()
{
int mc=m_current_state;
m_anim[mc].elem[AS_ALERT].used=IsDlgButtonChecked(IDC_ALERT_CHECK);
}
void CAnimStatesDialog::OnDeathCheck()
{
int mc=m_current_state;
m_anim[mc].elem[AS_DEATH].used=IsDlgButtonChecked(IDC_DEATH_CHECK);
}
void CAnimStatesDialog::OnFlinchCheck()
{
int mc=m_current_state;
m_anim[mc].elem[AS_FLINCH].used=IsDlgButtonChecked(IDC_FLINCH_CHECK);
}
void CAnimStatesDialog::OnGotoFlyingCheck()
{
int mc=m_current_state;
m_anim[mc].elem[AS_GOTO_ALERT_FLYING].used=IsDlgButtonChecked(IDC_GOTO_FLYING_CHECK);
}
void CAnimStatesDialog::OnGotoJumpingCheck()
{
int mc=m_current_state;
m_anim[mc].elem[AS_GOTO_ALERT_JUMPING].used=IsDlgButtonChecked(IDC_GOTO_JUMPING_CHECK);
}
void CAnimStatesDialog::OnGotoRollingCheck()
{
int mc=m_current_state;
m_anim[mc].elem[AS_GOTO_ALERT_ROLLING].used=IsDlgButtonChecked(IDC_GOTO_ROLLING_CHECK);
}
void CAnimStatesDialog::OnGotoStandingCheck()
{
int mc=m_current_state;
m_anim[mc].elem[AS_GOTO_ALERT_STANDING].used=IsDlgButtonChecked(IDC_GOTO_STANDING_CHECK);
}
void CAnimStatesDialog::OnGotoWalkingCheck()
{
int mc=m_current_state;
m_anim[mc].elem[AS_GOTO_ALERT_WALKING].used=IsDlgButtonChecked(IDC_GOTO_WALKING_CHECK);
}
void CAnimStatesDialog::OnIdleCheck()
{
int mc=m_current_state;
m_anim[mc].elem[AS_IDLE].used=IsDlgButtonChecked(IDC_IDLE_CHECK);
}
void CAnimStatesDialog::OnMelee1Check()
{
int mc=m_current_state;
m_anim[mc].elem[AS_MELEE1].used=IsDlgButtonChecked(IDC_MELEE1_CHECK);
}
void CAnimStatesDialog::OnMelee1RecoilCheck()
{
int mc=m_current_state;
m_anim[mc].elem[AS_MELEE1_RECOIL].used=IsDlgButtonChecked(IDC_MELEE1_RECOIL_CHECK);
}
void CAnimStatesDialog::OnMelee2Check()
{
int mc=m_current_state;
m_anim[mc].elem[AS_MELEE2].used=IsDlgButtonChecked(IDC_MELEE2_CHECK);
}
void CAnimStatesDialog::OnMelee2RecoilCheck()
{
int mc=m_current_state;
m_anim[mc].elem[AS_MELEE1_RECOIL].used=IsDlgButtonChecked(IDC_MELEE1_RECOIL_CHECK);
}
void CAnimStatesDialog::OnMissile1Check()
{
int mc=m_current_state;
m_anim[mc].elem[AS_BIRTH].used=IsDlgButtonChecked(IDC_MISSILE1_CHECK);
}
void CAnimStatesDialog::OnMissile1RecoilCheck()
{
int mc=m_current_state;
m_anim[mc].elem[AS_MISSILE1_RECOIL].used=IsDlgButtonChecked(IDC_MISSILE1_RECOIL_CHECK);
}
void CAnimStatesDialog::OnMissile2Check()
{
int mc=m_current_state;
m_anim[mc].elem[AS_MISSILE2].used=IsDlgButtonChecked(IDC_MISSILE2_CHECK);
}
void CAnimStatesDialog::OnMissile2RecoilCheck()
{
int mc=m_current_state;
m_anim[mc].elem[AS_MISSILE2_RECOIL].used=IsDlgButtonChecked(IDC_MISSILE2_RECOIL_CHECK);
}
void CAnimStatesDialog::OnQuirkCheck()
{
int mc=m_current_state;
m_anim[mc].elem[AS_QUIRK].used=IsDlgButtonChecked(IDC_QUIRK_CHECK);
}
void CAnimStatesDialog::OnSpecial1Check()
{
int mc=m_current_state;
m_anim[mc].elem[AS_GOTO_IDLE_STANDING].used=IsDlgButtonChecked(IDC_SPECIAL1_CHECK);
}
void CAnimStatesDialog::OnSpecial2Check()
{
int mc=m_current_state;
m_anim[mc].elem[AS_GOTO_IDLE_FLYING].used=IsDlgButtonChecked(IDC_SPECIAL2_CHECK);
}
void CAnimStatesDialog::OnSpecial3Check()
{
int mc=m_current_state;
m_anim[mc].elem[AS_GOTO_IDLE_ROLLING].used=IsDlgButtonChecked(IDC_SPECIAL3_CHECK);
}
void CAnimStatesDialog::OnSpecial4Check()
{
int mc=m_current_state;
m_anim[mc].elem[AS_GOTO_IDLE_WALKING].used=IsDlgButtonChecked(IDC_SPECIAL4_CHECK);
}
void CAnimStatesDialog::OnSpecial5Check()
{
int mc=m_current_state;
m_anim[mc].elem[AS_GOTO_IDLE_JUMPING].used=IsDlgButtonChecked(IDC_SPECIAL5_CHECK);
}
void CAnimStatesDialog::OnTauntCheck()
{
int mc=m_current_state;
m_anim[mc].elem[AS_TAUNT].used=IsDlgButtonChecked(IDC_TAUNT_CHECK);
}
void CAnimStatesDialog::OnSelendokCurrentAnimationPulldown()
{
int i,cur;
char name[200];
cur=SendDlgItemMessage( IDC_CURRENT_ANIMATION_PULLDOWN, CB_GETCURSEL,0,0);
SendDlgItemMessage( IDC_CURRENT_ANIMATION_PULLDOWN, CB_GETLBTEXT,cur,(LPARAM) (LPCTSTR)name);
for (i=0;i<NUM_ANIMS_PER_CLASS;i++)
{
if (!stricmp (Anim_state_names[i],name))
break;
}
ASSERT (i!=NUM_ANIMS_PER_CLASS);
m_current_anim=i;
UpdateDialog();
}
void CAnimStatesDialog::OnSelendokCurrentStatePulldown()
{
int i,cur;
char name[200];
cur=SendDlgItemMessage( IDC_CURRENT_STATE_PULLDOWN, CB_GETCURSEL,0,0);
SendDlgItemMessage( IDC_CURRENT_STATE_PULLDOWN, CB_GETLBTEXT,cur,(LPARAM) (LPCTSTR)name);
for (i=0;i<NUM_MOVEMENT_CLASSES;i++)
{
if (!stricmp (Movement_class_names[i],name))
break;
}
ASSERT (i!=NUM_MOVEMENT_CLASSES);
m_current_state=i;
UpdateDialog();
}
BOOL CAnimStatesDialog::OnInitDialog()
{
CDialog::OnInitDialog();
m_current_state=0;
m_current_anim=0;
CWnd::SetTimer(1,50,NULL);
UpdateDialog();
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
void CAnimStatesDialog::OnTimer(UINT nIDEvent)
{
UpdateAnimStateView();
CDialog::OnTimer(nIDEvent);
}
void CAnimStatesDialog::OnKillfocusAlertFromEdit()
{
KillFocusFroms (IDC_ALERT_FROM_EDIT);
}
void CAnimStatesDialog::OnKillfocusAlertToEdit()
{
KillFocusTos (IDC_ALERT_TO_EDIT);
}
#define NUM_ANIM_FRAMES 30
// Draws the object based on the current animation state
void CAnimStatesDialog::UpdateAnimStateView()
{
int mc=m_current_state;
int anim=m_current_anim;
CWnd *objectwnd;
RECT rect;
int x, y, bm_handle,w,h;
static int frame=0;
grHardwareSurface surf;
if (m_anim[mc].elem[anim].used!=1)
return;
// Bail out if the "to" frame is less than the "from" frame (ie backwards)
if (m_anim[mc].elem[anim].to<m_anim[mc].elem[anim].from)
return;
float frame_diff=(float)abs(m_anim[mc].elem[anim].to-m_anim[mc].elem[anim].from);
float frame_start=m_anim[mc].elem[anim].from;
frame++;
if (frame==NUM_ANIM_FRAMES)
frame=0;
objectwnd = GetDlgItem(IDC_ANIMSTATE_VIEW);
objectwnd->GetWindowRect(&rect);
ScreenToClient(&rect);
Desktop_surf->attach_to_window((unsigned)m_hWnd);
w=rect.right-rect.left;
h=rect.bottom-rect.top;
bm_handle = m_render_handle; //GetObjectImage(m_current_id);
vector zero_vector;
vector view_vector={0,0,-20};
matrix id_matrix,rot_matrix;
poly_model *pm=GetPolymodelPointer (bm_handle);
vm_MakeZero (&zero_vector);
vm_MakeIdentity (&id_matrix);
float norm_angles[MAX_SUBOBJECTS];
float keyframe = frame_start + frame_diff*((float)frame/(float)NUM_ANIM_FRAMES);
SetNormalizedTimeAnim(keyframe, norm_angles, pm);
vm_AnglesToMatrix (&rot_matrix,0,m_SpinFrame*400,0);
view_vector.z=-(fabs(pm->maxs.z-pm->mins.z)*2);
surf.create(128, 128, BPP_16);
grViewport *vport=new grViewport (&surf);
StartEditorFrame (vport,&view_vector,&id_matrix,D3_DEFAULT_ZOOM);
DrawPolygonModel (&zero_vector,&rot_matrix,bm_handle,norm_angles,0,1.0,1.0,1.0);
EndEditorFrame();
x = rect.left + ((rect.right-rect.left)/2) - surf.width()/2;
y = rect.top + ((rect.bottom-rect.top)/2) - surf.height()/2;
Desktop_surf->blt(x, y, &surf);
delete vport;
surf.free();
}
void CAnimStatesDialog::UpdateDialog()
{
CEdit *ebox;
char str[20];
int mc=m_current_state;
int max_states=24;
int control_froms[]={IDC_ALERT_FROM_EDIT,IDC_DEATH_FROM_EDIT,IDC_MISSILE1_FROM_EDIT,
IDC_RECOIL1_FROM_EDIT, IDC_MISSILE2_FROM_EDIT,
IDC_RECOIL2_FROM_EDIT,IDC_MELEE1_FROM_EDIT,IDC_MRECOIL1_FROM_EDIT,
IDC_MELEE2_FROM_EDIT,IDC_MRECOIL2_FROM_EDIT,IDC_IDLE_FROM_EDIT,
IDC_QUIRK_FROM_EDIT,IDC_FLINCH_FROM_EDIT,IDC_TAUNT_FROM_EDIT,
IDC_SPECIAL1_FROM_EDIT,IDC_SPECIAL2_FROM_EDIT,IDC_SPECIAL3_FROM_EDIT,
IDC_SPECIAL4_FROM_EDIT,IDC_SPECIAL5_FROM_EDIT,
IDC_STANDING_FROM_EDIT,IDC_FLYING_FROM_EDIT,IDC_ROLLING_FROM_EDIT,
IDC_WALKING_FROM_EDIT,IDC_JUMPING_FROM_EDIT};
int control_tos[]= {IDC_ALERT_TO_EDIT,IDC_DEATH_TO_EDIT,IDC_MISSILE1_TO_EDIT,
IDC_RECOIL1_TO_EDIT, IDC_MISSILE2_TO_EDIT,
IDC_RECOIL2_TO_EDIT,IDC_MELEE1_TO_EDIT,IDC_MRECOIL1_TO_EDIT,
IDC_MELEE2_TO_EDIT,IDC_MRECOIL2_TO_EDIT,IDC_IDLE_TO_EDIT,
IDC_QUIRK_TO_EDIT,IDC_FLINCH_TO_EDIT,IDC_TAUNT_TO_EDIT,
IDC_SPECIAL1_TO_EDIT,IDC_SPECIAL2_TO_EDIT,IDC_SPECIAL3_TO_EDIT,
IDC_SPECIAL4_TO_EDIT,IDC_SPECIAL5_TO_EDIT,
IDC_STANDING_TO_EDIT,IDC_FLYING_TO_EDIT,IDC_ROLLING_TO_EDIT,
IDC_WALKING_TO_EDIT,IDC_JUMPING_TO_EDIT};
int control_spc[]= {IDC_SEC_PER_CYCLE_EDIT1, IDC_SEC_PER_CYCLE_EDIT2, IDC_SEC_PER_CYCLE_EDIT3,
IDC_SEC_PER_CYCLE_EDIT4, IDC_SEC_PER_CYCLE_EDIT5, IDC_SEC_PER_CYCLE_EDIT6,
IDC_SEC_PER_CYCLE_EDIT7, IDC_SEC_PER_CYCLE_EDIT8, IDC_SEC_PER_CYCLE_EDIT9,
IDC_SEC_PER_CYCLE_EDIT10, IDC_SEC_PER_CYCLE_EDIT11, IDC_SEC_PER_CYCLE_EDIT12,
IDC_SEC_PER_CYCLE_EDIT13, IDC_SEC_PER_CYCLE_EDIT14, IDC_SEC_PER_CYCLE_EDIT15,
IDC_SEC_PER_CYCLE_EDIT16, IDC_SEC_PER_CYCLE_EDIT17, IDC_SEC_PER_CYCLE_EDIT18,
IDC_SEC_PER_CYCLE_EDIT19, IDC_SEC_PER_CYCLE_EDIT20, IDC_SEC_PER_CYCLE_EDIT21,
IDC_SEC_PER_CYCLE_EDIT22, IDC_SEC_PER_CYCLE_EDIT23, IDC_SEC_PER_CYCLE_EDIT24};
int anim_sounds[]= {IDC_ANIM_SOUND0_PULLDOWN, IDC_ANIM_SOUND1_PULLDOWN, IDC_ANIM_SOUND2_PULLDOWN,
IDC_ANIM_SOUND3_PULLDOWN, IDC_ANIM_SOUND4_PULLDOWN, IDC_ANIM_SOUND5_PULLDOWN,
IDC_ANIM_SOUND6_PULLDOWN, IDC_ANIM_SOUND7_PULLDOWN, IDC_ANIM_SOUND8_PULLDOWN,
IDC_ANIM_SOUND9_PULLDOWN, IDC_ANIM_SOUND10_PULLDOWN, IDC_ANIM_SOUND11_PULLDOWN,
IDC_ANIM_SOUND12_PULLDOWN, IDC_ANIM_SOUND13_PULLDOWN, IDC_ANIM_SOUND14_PULLDOWN,
IDC_ANIM_SOUND15_PULLDOWN, IDC_ANIM_SOUND16_PULLDOWN, IDC_ANIM_SOUND17_PULLDOWN,
IDC_ANIM_SOUND18_PULLDOWN, IDC_ANIM_SOUND19_PULLDOWN, IDC_ANIM_SOUND20_PULLDOWN,
IDC_ANIM_SOUND21_PULLDOWN, IDC_ANIM_SOUND22_PULLDOWN, IDC_ANIM_SOUND23_PULLDOWN};
CheckDlgButton (IDC_ALERT_CHECK,m_anim[mc].elem[AS_ALERT].used?1:0);
CheckDlgButton (IDC_DEATH_CHECK,m_anim[mc].elem[AS_DEATH].used?1:0);
CheckDlgButton (IDC_MISSILE1_CHECK,m_anim[mc].elem[AS_BIRTH].used?1:0);
CheckDlgButton (IDC_MISSILE1_RECOIL_CHECK,m_anim[mc].elem[AS_MISSILE1_RECOIL].used?1:0);
CheckDlgButton (IDC_MISSILE2_CHECK,m_anim[mc].elem[AS_MISSILE2].used?1:0);
CheckDlgButton (IDC_MISSILE2_RECOIL_CHECK,m_anim[mc].elem[AS_MISSILE2_RECOIL].used?1:0);
CheckDlgButton (IDC_MELEE1_CHECK,m_anim[mc].elem[AS_MELEE1].used?1:0);
CheckDlgButton (IDC_MELEE1_RECOIL_CHECK,m_anim[mc].elem[AS_MELEE1_RECOIL].used?1:0);
CheckDlgButton (IDC_MELEE2_CHECK,m_anim[mc].elem[AS_MELEE2].used?1:0);
CheckDlgButton (IDC_MELEE2_RECOIL_CHECK,m_anim[mc].elem[AS_MELEE2_RECOIL].used?1:0);
CheckDlgButton (IDC_QUIRK_CHECK,m_anim[mc].elem[AS_QUIRK].used?1:0);
CheckDlgButton (IDC_IDLE_CHECK,m_anim[mc].elem[AS_IDLE].used?1:0);
CheckDlgButton (IDC_TAUNT_CHECK,m_anim[mc].elem[AS_TAUNT].used?1:0);
CheckDlgButton (IDC_FLINCH_CHECK,m_anim[mc].elem[AS_FLINCH].used?1:0);
CheckDlgButton (IDC_SPECIAL1_CHECK,m_anim[mc].elem[AS_GOTO_IDLE_STANDING].used?1:0);
CheckDlgButton (IDC_SPECIAL2_CHECK,m_anim[mc].elem[AS_GOTO_IDLE_FLYING].used?1:0);
CheckDlgButton (IDC_SPECIAL3_CHECK,m_anim[mc].elem[AS_GOTO_IDLE_ROLLING].used?1:0);
CheckDlgButton (IDC_SPECIAL4_CHECK,m_anim[mc].elem[AS_GOTO_IDLE_WALKING].used?1:0);
CheckDlgButton (IDC_SPECIAL5_CHECK,m_anim[mc].elem[AS_GOTO_IDLE_JUMPING].used?1:0);
CheckDlgButton (IDC_GOTO_STANDING_CHECK,m_anim[mc].elem[AS_GOTO_ALERT_STANDING].used?1:0);
CheckDlgButton (IDC_GOTO_FLYING_CHECK,m_anim[mc].elem[AS_GOTO_ALERT_FLYING].used?1:0);
CheckDlgButton (IDC_GOTO_WALKING_CHECK,m_anim[mc].elem[AS_GOTO_ALERT_WALKING].used?1:0);
CheckDlgButton (IDC_GOTO_ROLLING_CHECK,m_anim[mc].elem[AS_GOTO_ALERT_ROLLING].used?1:0);
CheckDlgButton (IDC_GOTO_JUMPING_CHECK,m_anim[mc].elem[AS_GOTO_ALERT_JUMPING].used?1:0);
for (int i=0;i<max_states;i++)
{
ebox=(CEdit *) GetDlgItem (control_froms[i]);
itoa (m_anim[mc].elem[i].from,str,10);
ebox->SetWindowText (str);
ebox=(CEdit *) GetDlgItem (control_tos[i]);
itoa (m_anim[mc].elem[i].to,str,10);
ebox->SetWindowText (str);
ebox=(CEdit *) GetDlgItem (control_spc[i]);
sprintf(str, "%f", m_anim[mc].elem[i].spc);
ebox->SetWindowText (str);
}
if(!m_setup_sound_dialogs)
{
m_setup_sound_dialogs = true;
for (i=0;i<max_states;i++)
{
SendDlgItemMessage( anim_sounds[i], CB_RESETCONTENT,0,0);
}
for (i=0;i<MAX_SOUNDS;i++)
{
if (Sounds[i].used)
{
for (int j=0;j<max_states;j++)
{
SendDlgItemMessage( anim_sounds[j], CB_ADDSTRING,0,(LPARAM) (LPCTSTR) Sounds[i].name);
}
}
}
}
for (i=0;i<max_states;i++)
{
if(m_anim[mc].elem[i].anim_sound_index >= 0 && m_anim[mc].elem[i].anim_sound_index < MAX_SOUNDS && Sounds[m_anim[mc].elem[i].anim_sound_index].used != 0)
SendDlgItemMessage( anim_sounds[i], CB_SELECTSTRING,0,(LPARAM) (LPCTSTR) Sounds[m_anim[mc].elem[i].anim_sound_index].name);
else
SendDlgItemMessage( anim_sounds[i], CB_SELECTSTRING,0,(LPARAM) (LPCTSTR) "\0");
}
SendDlgItemMessage( IDC_CURRENT_STATE_PULLDOWN, CB_RESETCONTENT,0,0);
for (i=0;i<NUM_MOVEMENT_CLASSES;i++)
SendDlgItemMessage( IDC_CURRENT_STATE_PULLDOWN, CB_ADDSTRING,0,(LPARAM) (LPCTSTR) Movement_class_names[i]);
SendDlgItemMessage( IDC_CURRENT_STATE_PULLDOWN, CB_SELECTSTRING,0,(LPARAM) (LPCTSTR) Movement_class_names[m_current_state]);
SendDlgItemMessage( IDC_CURRENT_ANIMATION_PULLDOWN, CB_RESETCONTENT,0,0);
for (i=0;i<NUM_ANIMS_PER_CLASS;i++)
SendDlgItemMessage( IDC_CURRENT_ANIMATION_PULLDOWN, CB_ADDSTRING,0,(LPARAM) (LPCTSTR) Anim_state_names[i]);
SendDlgItemMessage( IDC_CURRENT_ANIMATION_PULLDOWN, CB_SELECTSTRING,0,(LPARAM) (LPCTSTR) Anim_state_names[m_current_anim]);
UpdateAnimStateView();
}
void CAnimStatesDialog::KillFocusFroms(int num)
{
int control_froms[]={IDC_ALERT_FROM_EDIT,IDC_DEATH_FROM_EDIT,IDC_MISSILE1_FROM_EDIT,
IDC_RECOIL1_FROM_EDIT, IDC_MISSILE2_FROM_EDIT,
IDC_RECOIL2_FROM_EDIT,IDC_MELEE1_FROM_EDIT,IDC_MRECOIL1_FROM_EDIT,
IDC_MELEE2_FROM_EDIT,IDC_MRECOIL2_FROM_EDIT,IDC_IDLE_FROM_EDIT,
IDC_QUIRK_FROM_EDIT,IDC_FLINCH_FROM_EDIT,IDC_TAUNT_FROM_EDIT,
IDC_SPECIAL1_FROM_EDIT,IDC_SPECIAL2_FROM_EDIT,IDC_SPECIAL3_FROM_EDIT,
IDC_SPECIAL4_FROM_EDIT,IDC_SPECIAL5_FROM_EDIT,
IDC_STANDING_FROM_EDIT,IDC_FLYING_FROM_EDIT,IDC_ROLLING_FROM_EDIT,
IDC_WALKING_FROM_EDIT,IDC_JUMPING_FROM_EDIT};
char str[20];
int mc=m_current_state;
PageInPolymodel (m_render_handle);
int min_keyframe = Poly_models[m_render_handle].frame_min;
int max_keyframe = Poly_models[m_render_handle].frame_max;
int i;
int max_states=24;
for (i=0;i<max_states;i++)
if (control_froms[i]==num)
break;
ASSERT (i!=max_states);
int anim_state=i;
CEdit *ebox=(CEdit *) GetDlgItem (num);
ebox->GetWindowText (str,20);
int frame=atoi (str);
if (frame<min_keyframe)
frame=min_keyframe;
else if (frame>max_keyframe)
frame=max_keyframe;
m_anim[mc].elem[anim_state].from=frame;
UpdateDialog();
}
void CAnimStatesDialog::KillFocusSPC(int num)
{
int control_spc[]= {IDC_SEC_PER_CYCLE_EDIT1, IDC_SEC_PER_CYCLE_EDIT2, IDC_SEC_PER_CYCLE_EDIT3,
IDC_SEC_PER_CYCLE_EDIT4, IDC_SEC_PER_CYCLE_EDIT5, IDC_SEC_PER_CYCLE_EDIT6,
IDC_SEC_PER_CYCLE_EDIT7, IDC_SEC_PER_CYCLE_EDIT8, IDC_SEC_PER_CYCLE_EDIT9,
IDC_SEC_PER_CYCLE_EDIT10, IDC_SEC_PER_CYCLE_EDIT11, IDC_SEC_PER_CYCLE_EDIT12,
IDC_SEC_PER_CYCLE_EDIT13, IDC_SEC_PER_CYCLE_EDIT14, IDC_SEC_PER_CYCLE_EDIT15,
IDC_SEC_PER_CYCLE_EDIT16, IDC_SEC_PER_CYCLE_EDIT17, IDC_SEC_PER_CYCLE_EDIT18,
IDC_SEC_PER_CYCLE_EDIT19, IDC_SEC_PER_CYCLE_EDIT20, IDC_SEC_PER_CYCLE_EDIT21,
IDC_SEC_PER_CYCLE_EDIT22, IDC_SEC_PER_CYCLE_EDIT23, IDC_SEC_PER_CYCLE_EDIT24};
char str[20];
int mc=m_current_state;
int i;
int max_states=24;
// Find the index into the array
for (i = 0;i < max_states; i++)
if (control_spc[i] == num)
break;
// Make sure that we find it
ASSERT (i != max_states);
int anim_state = i;
CEdit *ebox=(CEdit *) GetDlgItem (num);
ebox->GetWindowText (str,20);
float spc = atof(str);
if (spc <= 0.0 || spc >= 10000.0)
spc = 1.0f;
m_anim[mc].elem[anim_state].spc = spc;
UpdateDialog();
}
void CAnimStatesDialog::KillFocusTos(int num)
{
int control_tos[]={ IDC_ALERT_TO_EDIT,IDC_DEATH_TO_EDIT,IDC_MISSILE1_TO_EDIT,
IDC_RECOIL1_TO_EDIT, IDC_MISSILE2_TO_EDIT,
IDC_RECOIL2_TO_EDIT,IDC_MELEE1_TO_EDIT,IDC_MRECOIL1_TO_EDIT,
IDC_MELEE2_TO_EDIT,IDC_MRECOIL2_TO_EDIT,IDC_IDLE_TO_EDIT,
IDC_QUIRK_TO_EDIT,IDC_FLINCH_TO_EDIT,IDC_TAUNT_TO_EDIT,
IDC_SPECIAL1_TO_EDIT,IDC_SPECIAL2_TO_EDIT,IDC_SPECIAL3_TO_EDIT,
IDC_SPECIAL4_TO_EDIT,IDC_SPECIAL5_TO_EDIT,
IDC_STANDING_TO_EDIT,IDC_FLYING_TO_EDIT,IDC_ROLLING_TO_EDIT,
IDC_WALKING_TO_EDIT,IDC_JUMPING_TO_EDIT};
char str[20];
int mc=m_current_state;
int min_keyframe = Poly_models[m_render_handle].frame_min;
int max_keyframe = Poly_models[m_render_handle].frame_max;
int i;
int max_states=24;
for (i=0;i<max_states;i++)
if (control_tos[i]==num)
break;
ASSERT (i!=max_states);
int anim_state=i;
CEdit *ebox=(CEdit *) GetDlgItem (num);
ebox->GetWindowText (str,20);
int frame=atoi (str);
if (frame<min_keyframe)
frame=min_keyframe;
else if (frame>max_keyframe)
frame=max_keyframe;
m_anim[mc].elem[anim_state].to=frame;
UpdateDialog();
}
void CAnimStatesDialog::OnKillfocusDeathFromEdit()
{
KillFocusFroms (IDC_DEATH_FROM_EDIT);
}
void CAnimStatesDialog::OnKillfocusDeathToEdit()
{
KillFocusTos (IDC_DEATH_TO_EDIT);
}
void CAnimStatesDialog::OnKillfocusFlinchFromEdit()
{
KillFocusFroms (IDC_FLINCH_FROM_EDIT);
}
void CAnimStatesDialog::OnKillfocusFlinchToEdit()
{
KillFocusTos (IDC_FLINCH_TO_EDIT);
}
void CAnimStatesDialog::OnKillfocusFlyingFromEdit()
{
KillFocusFroms (IDC_FLYING_FROM_EDIT);
}
void CAnimStatesDialog::OnKillfocusFlyingToEdit()
{
KillFocusTos (IDC_FLYING_TO_EDIT);
}
void CAnimStatesDialog::OnKillfocusIdleFromEdit()
{
KillFocusFroms (IDC_IDLE_FROM_EDIT);
}
void CAnimStatesDialog::OnKillfocusIdleToEdit()
{
KillFocusTos (IDC_IDLE_TO_EDIT);
}
void CAnimStatesDialog::OnKillfocusJumpingFromEdit()
{
KillFocusFroms (IDC_JUMPING_FROM_EDIT);
}
void CAnimStatesDialog::OnKillfocusJumpingToEdit()
{
KillFocusTos (IDC_JUMPING_TO_EDIT);
}
void CAnimStatesDialog::OnKillfocusMelee1FromEdit()
{
KillFocusFroms (IDC_MELEE1_FROM_EDIT);
}
void CAnimStatesDialog::OnKillfocusMelee1ToEdit()
{
KillFocusTos (IDC_MELEE1_TO_EDIT);
}
void CAnimStatesDialog::OnKillfocusMelee2FromEdit()
{
KillFocusFroms (IDC_MELEE2_FROM_EDIT);
}
void CAnimStatesDialog::OnKillfocusMissile1FromEdit()
{
KillFocusFroms (IDC_MISSILE1_FROM_EDIT);
}
void CAnimStatesDialog::OnKillfocusMissile1ToEdit()
{
KillFocusTos (IDC_MISSILE1_TO_EDIT);
}
void CAnimStatesDialog::OnKillfocusMissile2FromEdit()
{
KillFocusFroms (IDC_MISSILE2_FROM_EDIT);
}
void CAnimStatesDialog::OnKillfocusMissile2ToEdit()
{
KillFocusTos (IDC_MISSILE2_TO_EDIT);
}
void CAnimStatesDialog::OnKillfocusMrecoil1ToEdit()
{
KillFocusTos (IDC_MRECOIL1_TO_EDIT);
}
void CAnimStatesDialog::OnKillfocusMrecoil1FromEdit()
{
KillFocusFroms (IDC_MRECOIL1_FROM_EDIT);
}
void CAnimStatesDialog::OnKillfocusMrecoil2FromEdit()
{
KillFocusFroms (IDC_MRECOIL2_FROM_EDIT);
}
void CAnimStatesDialog::OnKillfocusMrecoil2ToEdit()
{
KillFocusTos (IDC_MRECOIL2_TO_EDIT);
}
void CAnimStatesDialog::OnKillfocusQuirkFromEdit()
{
KillFocusFroms (IDC_QUIRK_FROM_EDIT);
}
void CAnimStatesDialog::OnKillfocusQuirkToEdit()
{
KillFocusTos (IDC_QUIRK_TO_EDIT);
}
void CAnimStatesDialog::OnKillfocusRecoil1FromEdit()
{
KillFocusFroms (IDC_RECOIL1_FROM_EDIT);
}
void CAnimStatesDialog::OnKillfocusRecoil1ToEdit()
{
KillFocusTos (IDC_RECOIL1_TO_EDIT);
}
void CAnimStatesDialog::OnKillfocusRecoil2FromEdit()
{
KillFocusFroms (IDC_RECOIL2_FROM_EDIT);
}
void CAnimStatesDialog::OnKillfocusRecoil2ToEdit()
{
KillFocusTos (IDC_RECOIL2_TO_EDIT);
}
void CAnimStatesDialog::OnKillfocusRollingFromEdit()
{
KillFocusFroms (IDC_ROLLING_FROM_EDIT);
}
void CAnimStatesDialog::OnKillfocusRollingToEdit()
{
KillFocusTos (IDC_ROLLING_TO_EDIT);
}
void CAnimStatesDialog::OnKillfocusSpecial1FromEdit()
{
KillFocusFroms (IDC_SPECIAL1_FROM_EDIT);
}
void CAnimStatesDialog::OnKillfocusSpecial1ToEdit()
{
KillFocusTos (IDC_SPECIAL1_TO_EDIT);
}
void CAnimStatesDialog::OnKillfocusSpecial2FromEdit()
{
KillFocusFroms (IDC_SPECIAL2_FROM_EDIT);
}
void CAnimStatesDialog::OnKillfocusSpecial2ToEdit()
{
KillFocusTos (IDC_SPECIAL2_TO_EDIT);
}
void CAnimStatesDialog::OnKillfocusSpecial3FromEdit()
{
KillFocusFroms (IDC_SPECIAL3_FROM_EDIT);
}
void CAnimStatesDialog::OnKillfocusSpecial3ToEdit()
{
KillFocusTos (IDC_SPECIAL3_TO_EDIT);
}
void CAnimStatesDialog::OnKillfocusSpecial4FromEdit()
{
KillFocusFroms (IDC_SPECIAL4_FROM_EDIT);
}
void CAnimStatesDialog::OnKillfocusSpecial4ToEdit()
{
KillFocusTos (IDC_SPECIAL4_TO_EDIT);
}
void CAnimStatesDialog::OnKillfocusSpecial5FromEdit()
{
KillFocusFroms (IDC_SPECIAL5_FROM_EDIT);
}
void CAnimStatesDialog::OnKillfocusSpecial5ToEdit()
{
KillFocusTos (IDC_SPECIAL5_TO_EDIT);
}
void CAnimStatesDialog::OnKillfocusStandingFromEdit()
{
KillFocusFroms (IDC_STANDING_FROM_EDIT);
}
void CAnimStatesDialog::OnKillfocusStandingToEdit()
{
KillFocusTos (IDC_STANDING_TO_EDIT);
}
void CAnimStatesDialog::OnKillfocusTauntFromEdit()
{
KillFocusFroms (IDC_TAUNT_FROM_EDIT);
}
void CAnimStatesDialog::OnKillfocusTauntToEdit()
{
KillFocusTos (IDC_TAUNT_TO_EDIT);
}
void CAnimStatesDialog::OnKillfocusWalkingFromEdit()
{
KillFocusFroms (IDC_WALKING_FROM_EDIT);
}
void CAnimStatesDialog::OnKillfocusWalkingToEdit()
{
KillFocusTos (IDC_WALKING_TO_EDIT);
}
void CAnimStatesDialog::OnKillfocusMelee2ToEdit()
{
KillFocusTos (IDC_MELEE2_TO_EDIT);
}
void CAnimStatesDialog::OnResetAnimZero()
{
int mc=m_current_state;
memset (m_anim[mc].elem,0,NUM_ANIMS_PER_CLASS*sizeof(anim_entry));
UpdateDialog();
}
void CAnimStatesDialog::OnRotLeft()
{
m_SpinFrame-=3;
}
void CAnimStatesDialog::OnRotRight()
{
m_SpinFrame+=3;
}
//Copy data from CAnimStatesDialog class to anim struct
void CAnimStatesDialog::GetAnimData(anim_elem *anim_info)
{
for (int i=0;i<NUM_MOVEMENT_CLASSES;i++)
for (int j=0;j<NUM_ANIMS_PER_CLASS;j++)
anim_info[i].elem[j] = m_anim[i].elem[j];
}
void CAnimStatesDialog::OnKillfocusSecPerCycleEdit1()
{
KillFocusSPC(IDC_SEC_PER_CYCLE_EDIT1);
}
void CAnimStatesDialog::OnKillfocusSecPerCycleEdit2()
{
KillFocusSPC(IDC_SEC_PER_CYCLE_EDIT2);
}
void CAnimStatesDialog::OnKillfocusSecPerCycleEdit3()
{
KillFocusSPC(IDC_SEC_PER_CYCLE_EDIT3);
}
void CAnimStatesDialog::OnKillfocusSecPerCycleEdit4()
{
KillFocusSPC(IDC_SEC_PER_CYCLE_EDIT4);
}
void CAnimStatesDialog::OnKillfocusSecPerCycleEdit5()
{
KillFocusSPC(IDC_SEC_PER_CYCLE_EDIT5);
}
void CAnimStatesDialog::OnKillfocusSecPerCycleEdit6()
{
KillFocusSPC(IDC_SEC_PER_CYCLE_EDIT6);
}
void CAnimStatesDialog::OnKillfocusSecPerCycleEdit7()
{
KillFocusSPC(IDC_SEC_PER_CYCLE_EDIT7);
}
void CAnimStatesDialog::OnKillfocusSecPerCycleEdit8()
{
KillFocusSPC(IDC_SEC_PER_CYCLE_EDIT8);
}
void CAnimStatesDialog::OnKillfocusSecPerCycleEdit9()
{
KillFocusSPC(IDC_SEC_PER_CYCLE_EDIT9);
}
void CAnimStatesDialog::OnKillfocusSecPerCycleEdit10()
{
KillFocusSPC(IDC_SEC_PER_CYCLE_EDIT10);
}
void CAnimStatesDialog::OnKillfocusSecPerCycleEdit11()
{
KillFocusSPC(IDC_SEC_PER_CYCLE_EDIT11);
}
void CAnimStatesDialog::OnKillfocusSecPerCycleEdit12()
{
KillFocusSPC(IDC_SEC_PER_CYCLE_EDIT12);
}
void CAnimStatesDialog::OnKillfocusSecPerCycleEdit13()
{
KillFocusSPC(IDC_SEC_PER_CYCLE_EDIT13);
}
void CAnimStatesDialog::OnKillfocusSecPerCycleEdit14()
{
KillFocusSPC(IDC_SEC_PER_CYCLE_EDIT14);
}
void CAnimStatesDialog::OnKillfocusSecPerCycleEdit15()
{
KillFocusSPC(IDC_SEC_PER_CYCLE_EDIT15);
}
void CAnimStatesDialog::OnKillfocusSecPerCycleEdit16()
{
KillFocusSPC(IDC_SEC_PER_CYCLE_EDIT16);
}
void CAnimStatesDialog::OnKillfocusSecPerCycleEdit17()
{
KillFocusSPC(IDC_SEC_PER_CYCLE_EDIT17);
}
void CAnimStatesDialog::OnKillfocusSecPerCycleEdit18()
{
KillFocusSPC(IDC_SEC_PER_CYCLE_EDIT18);
}
void CAnimStatesDialog::OnKillfocusSecPerCycleEdit19()
{
KillFocusSPC(IDC_SEC_PER_CYCLE_EDIT19);
}
void CAnimStatesDialog::OnKillfocusSecPerCycleEdit20()
{
KillFocusSPC(IDC_SEC_PER_CYCLE_EDIT20);
}
void CAnimStatesDialog::OnKillfocusSecPerCycleEdit21()
{
KillFocusSPC(IDC_SEC_PER_CYCLE_EDIT21);
}
void CAnimStatesDialog::OnKillfocusSecPerCycleEdit22()
{
KillFocusSPC(IDC_SEC_PER_CYCLE_EDIT22);
}
void CAnimStatesDialog::OnKillfocusSecPerCycleEdit23()
{
KillFocusSPC(IDC_SEC_PER_CYCLE_EDIT23);
}
void CAnimStatesDialog::OnKillfocusSecPerCycleEdit24()
{
KillFocusSPC(IDC_SEC_PER_CYCLE_EDIT24);
}
void CAnimStatesDialog::KillFocusAnimSoundName(int num)
{
int anim_sounds[]= {IDC_ANIM_SOUND0_PULLDOWN, IDC_ANIM_SOUND1_PULLDOWN, IDC_ANIM_SOUND2_PULLDOWN,
IDC_ANIM_SOUND3_PULLDOWN, IDC_ANIM_SOUND4_PULLDOWN, IDC_ANIM_SOUND5_PULLDOWN,
IDC_ANIM_SOUND6_PULLDOWN, IDC_ANIM_SOUND7_PULLDOWN, IDC_ANIM_SOUND8_PULLDOWN,
IDC_ANIM_SOUND9_PULLDOWN, IDC_ANIM_SOUND10_PULLDOWN, IDC_ANIM_SOUND11_PULLDOWN,
IDC_ANIM_SOUND12_PULLDOWN, IDC_ANIM_SOUND13_PULLDOWN, IDC_ANIM_SOUND14_PULLDOWN,
IDC_ANIM_SOUND15_PULLDOWN, IDC_ANIM_SOUND16_PULLDOWN, IDC_ANIM_SOUND17_PULLDOWN,
IDC_ANIM_SOUND18_PULLDOWN, IDC_ANIM_SOUND19_PULLDOWN, IDC_ANIM_SOUND20_PULLDOWN,
IDC_ANIM_SOUND21_PULLDOWN, IDC_ANIM_SOUND22_PULLDOWN, IDC_ANIM_SOUND23_PULLDOWN};
int mc=m_current_state;
int cur;
char name[200];
cur=SendDlgItemMessage( anim_sounds[num], CB_GETCURSEL,0,0);
SendDlgItemMessage( anim_sounds[num], CB_GETLBTEXT,cur,(LPARAM) (LPCTSTR)name);
m_anim[mc].elem[num].anim_sound_index = FindSoundName (name);
UpdateDialog();
}
void CAnimStatesDialog::OnSelendokAnimSound0Pulldown()
{
KillFocusAnimSoundName(0);
}
void CAnimStatesDialog::OnSelendokAnimSound1Pulldown()
{
KillFocusAnimSoundName(1);
}
void CAnimStatesDialog::OnSelendokAnimSound2Pulldown()
{
KillFocusAnimSoundName(2);
}
void CAnimStatesDialog::OnSelendokAnimSound10Pulldown()
{
KillFocusAnimSoundName(10);
}
void CAnimStatesDialog::OnSelendokAnimSound11Pulldown()
{
KillFocusAnimSoundName(11);
}
void CAnimStatesDialog::OnSelendokAnimSound12Pulldown()
{
KillFocusAnimSoundName(12);
}
void CAnimStatesDialog::OnSelendokAnimSound13Pulldown()
{
KillFocusAnimSoundName(13);
}
void CAnimStatesDialog::OnSelendokAnimSound14Pulldown()
{
KillFocusAnimSoundName(14);
}
void CAnimStatesDialog::OnSelendokAnimSound15Pulldown()
{
KillFocusAnimSoundName(15);
}
void CAnimStatesDialog::OnSelendokAnimSound16Pulldown()
{
KillFocusAnimSoundName(16);
}
void CAnimStatesDialog::OnSelendokAnimSound17Pulldown()
{
KillFocusAnimSoundName(17);
}
void CAnimStatesDialog::OnSelendokAnimSound18Pulldown()
{
KillFocusAnimSoundName(18);
}
void CAnimStatesDialog::OnSelendokAnimSound19Pulldown()
{
KillFocusAnimSoundName(19);
}
void CAnimStatesDialog::OnSelendokAnimSound20Pulldown()
{
KillFocusAnimSoundName(20);
}
void CAnimStatesDialog::OnSelendokAnimSound21Pulldown()
{
KillFocusAnimSoundName(21);
}
void CAnimStatesDialog::OnSelendokAnimSound22Pulldown()
{
KillFocusAnimSoundName(22);
}
void CAnimStatesDialog::OnSelendokAnimSound23Pulldown()
{
KillFocusAnimSoundName(23);
}
void CAnimStatesDialog::OnSelendokAnimSound3Pulldown()
{
KillFocusAnimSoundName(3);
}
void CAnimStatesDialog::OnSelendokAnimSound4Pulldown()
{
KillFocusAnimSoundName(4);
}
void CAnimStatesDialog::OnSelendokAnimSound5Pulldown()
{
KillFocusAnimSoundName(5);
}
void CAnimStatesDialog::OnSelendokAnimSound6Pulldown()
{
KillFocusAnimSoundName(6);
}
void CAnimStatesDialog::OnSelendokAnimSound7Pulldown()
{
KillFocusAnimSoundName(7);
}
void CAnimStatesDialog::OnSelendokAnimSound8Pulldown()
{
KillFocusAnimSoundName(8);
}
void CAnimStatesDialog::OnSelendokAnimSound9Pulldown()
{
KillFocusAnimSoundName(9);
}