l2-unlegits/l2detect/RadarSetupDlg_FolAsi.cpp
2012-02-01 05:25:08 +00:00

110 lines
4.5 KiB
C++

#include "stdafx.h"
#include "Resource.h"
#include "Logger.h"
#include "GameClient.h"
#include "DlgPressKey.h"
#include "windowUtils.h"
#include "RadarSetupDlg_FolAsi.h"
extern HINSTANCE g_radardll_hinst;
extern class GameClient *g_game_client; // in main.cpp
INT_PTR CALLBACK RadarSetupDlg_FollowAssist_DlgProc( HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam );
HWND RadarSetupDlg_FolAsi_Create( HWND hWndParent )
{
return CreateDialogParam( g_radardll_hinst, MAKEINTRESOURCE(IDD_SR_FOLLOWASSIST),
hWndParent, RadarSetupDlg_FollowAssist_DlgProc, 0 );
}
// =========================================================
void RadarSetupDlg_FollowAssist_Init( HWND hDlg );
void RadarSetupDlg_FollowAssist_OnDestroy( HWND hDlg );
void RadarSetupDlg_FollowAssist_OnApply( HWND hDlg );
// =====================================
void RadarSetupDlg_FollowAssist_UpdateDisabledWindows( HWND hDlg );
INT_PTR CALLBACK RadarSetupDlg_FollowAssist_DlgProc( HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam )
{
UNREFERENCED_PARAMETER(lParam);
switch( uMsg )
{
case WM_INITDIALOG: RadarSetupDlg_FollowAssist_Init( hDlg ); break;
case WM_DESTROY: { RadarSetupDlg_FollowAssist_OnDestroy( hDlg ); return FALSE; } break;
case WM_COMMAND:
{
switch( LOWORD(wParam) )
{
case IDC_APPLY: RadarSetupDlg_FollowAssist_OnApply( hDlg ); break;
case IDC_C_FOLLOW_ENABLE:
case IDC_C_ASSIST_ENABLE:
RadarSetupDlg_FollowAssist_UpdateDisabledWindows( hDlg );
break;
}
} break;
default: return FALSE; break;
}
return TRUE;
}
void RadarSetupDlg_FollowAssist_Init( HWND hDlg )
{
// force UserAI to reload config file
g_game_client->ai.folAsiCfg.loadFromFile( "L2Detect_folAsi.ini" );
// follow sets
CheckDlgButton( hDlg, IDC_C_FOLLOW_ENABLE, g_game_client->ai.folAsiCfg.m_follow_enable );
SetDlgItemInt( hDlg, IDC_E_FOLLOW_DISTANCE, g_game_client->ai.folAsiCfg.m_follow_dist, FALSE );
SetDlgItemTextW( hDlg, IDC_E_NAME_FOLLOW, g_game_client->ai.folAsiCfg.m_follow_name );
CheckDlgButton( hDlg, IDC_C_FOLLOW_ONLY_IN_PARTY, g_game_client->ai.folAsiCfg.m_follow_only_in_party );
// assist sets
CheckDlgButton( hDlg, IDC_C_ASSIST_ENABLE, g_game_client->ai.folAsiCfg.m_assist_enable );
SetDlgItemTextW( hDlg, IDC_E_NAME_ASSIST, g_game_client->ai.folAsiCfg.m_assist_name );
CheckDlgButton( hDlg, IDC_C_ASSIST_ONLY_IN_PARTY, g_game_client->ai.folAsiCfg.m_assist_only_in_party );
CheckDlgButton( hDlg, IDC_C_DONT_ASSIST_ALLIES, g_game_client->ai.folAsiCfg.m_assist_dont_ally );
//
RadarSetupDlg_FollowAssist_UpdateDisabledWindows( hDlg );
}
void RadarSetupDlg_FollowAssist_OnDestroy( HWND hDlg )
{
UNREFERENCED_PARAMETER(hDlg);
}
void RadarSetupDlg_FollowAssist_OnApply( HWND hDlg )
{
// follow sets
g_game_client->ai.folAsiCfg.m_follow_enable = IsDlgButtonChecked( hDlg, IDC_C_FOLLOW_ENABLE );
g_game_client->ai.folAsiCfg.m_follow_dist = (int)GetDlgItemInt( hDlg, IDC_E_FOLLOW_DISTANCE, NULL, FALSE );
GetDlgItemTextW( hDlg, IDC_E_NAME_FOLLOW, g_game_client->ai.folAsiCfg.m_follow_name, 127 );
g_game_client->ai.folAsiCfg.m_follow_only_in_party = IsDlgButtonChecked( hDlg, IDC_C_FOLLOW_ONLY_IN_PARTY );
// assist sets
g_game_client->ai.folAsiCfg.m_assist_enable = IsDlgButtonChecked( hDlg, IDC_C_ASSIST_ENABLE );
GetDlgItemTextW( hDlg, IDC_E_NAME_ASSIST, g_game_client->ai.folAsiCfg.m_assist_name, 127 );
g_game_client->ai.folAsiCfg.m_assist_only_in_party = IsDlgButtonChecked( hDlg, IDC_C_ASSIST_ONLY_IN_PARTY );
g_game_client->ai.folAsiCfg.m_assist_dont_ally = IsDlgButtonChecked( hDlg, IDC_C_DONT_ASSIST_ALLIES );
// save config to file
g_game_client->ai.folAsiCfg.saveToFile( "L2Detect_folAsi.ini" );
// checks
if( !g_game_client->ai.folAsiCfg.m_follow_enable )
g_game_client->ai.followDisable(); // zero follow objectID
if( !g_game_client->ai.folAsiCfg.m_assist_enable )
g_game_client->ai.assistDisable(); // zero assist objectID
}
void RadarSetupDlg_FollowAssist_UpdateDisabledWindows( HWND hDlg )
{
BOOL b = FALSE;
if( IsDlgButtonChecked( hDlg, IDC_C_FOLLOW_ENABLE ) ) b = TRUE;
EnableWindow( GetDlgItem( hDlg, IDC_E_NAME_FOLLOW ), b );
EnableWindow( GetDlgItem( hDlg, IDC_C_FOLLOW_ONLY_IN_PARTY ), b );
EnableWindow( GetDlgItem( hDlg, IDC_E_FOLLOW_DISTANCE ), b );
b = FALSE;
if( IsDlgButtonChecked( hDlg, IDC_C_ASSIST_ENABLE ) ) b = TRUE;
EnableWindow( GetDlgItem( hDlg, IDC_E_NAME_ASSIST ), b );
EnableWindow( GetDlgItem( hDlg, IDC_C_ASSIST_ONLY_IN_PARTY ), b );
EnableWindow( GetDlgItem( hDlg, IDC_C_DONT_ASSIST_ALLIES ), b );
}