⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 simoptn.cpp

📁 空战游戏flacon源码
💻 CPP
字号:
#include <windows.h>
#include <commdlg.h>    // includes common dialog functionality
#include <commctrl.h>
#include <dlgs.h>       // includes common dialog template defines
#include "resource.h"
#include "f4vu.h"
#include "sim\include\stdhdr.h"
#include "PlayerOp.h"

void InitSimOptionStuff (HWND hDlg)
{
   CheckDlgButton (hDlg, IDC_SIMOPTION_AUTOTARGET, PlayerOptions.AutoTargetingOn() ? BST_CHECKED : BST_UNCHECKED);
   CheckDlgButton (hDlg, IDC_SIMOPTION_BLACKOUT,   PlayerOptions.BlackoutOn() ? BST_CHECKED : BST_UNCHECKED);
   CheckDlgButton (hDlg, IDC_SIMOPTION_FUEL,       PlayerOptions.UnlimitedFuel() ? BST_CHECKED : BST_UNCHECKED);
   CheckDlgButton (hDlg, IDC_SIMOPTION_AMMO,       PlayerOptions.UnlimitedAmmo() ? BST_CHECKED : BST_UNCHECKED);
   CheckDlgButton (hDlg, IDC_SIMOPTION_CHAFF,      PlayerOptions.UnlimitedChaff() ? BST_CHECKED : BST_UNCHECKED);
   CheckDlgButton (hDlg, IDC_SIMOPTION_COLLISION,  PlayerOptions.CollisionsOn() ? BST_CHECKED : BST_UNCHECKED);
   CheckDlgButton (hDlg, IDC_SIMOPTION_NAMETAGS,   PlayerOptions.NameTagsOn() ? BST_CHECKED : BST_UNCHECKED);

   // Flight Model
   SendDlgItemMessage (hDlg, IDC_SIMOPTION_FLIGHTMODEL, CB_ADDSTRING,
   0, (LPARAM)"Simple");
   SendDlgItemMessage (hDlg, IDC_SIMOPTION_FLIGHTMODEL, CB_ADDSTRING,
   0, (LPARAM)"Moderate");
   SendDlgItemMessage (hDlg, IDC_SIMOPTION_FLIGHTMODEL, CB_ADDSTRING,
   0, (LPARAM)"Acurate");
   SendDlgItemMessage (hDlg, IDC_SIMOPTION_FLIGHTMODEL, CB_SETCURSEL,
      PlayerOptions.GetFlightModelType(), 0);

   // Weapon Model
   SendDlgItemMessage (hDlg, IDC_SIMOPTION_WEAPONEFFECT, CB_ADDSTRING,
   0, (LPARAM)"Exaggerated");
   SendDlgItemMessage (hDlg, IDC_SIMOPTION_WEAPONEFFECT, CB_ADDSTRING,
   0, (LPARAM)"Enhanced");
   SendDlgItemMessage (hDlg, IDC_SIMOPTION_WEAPONEFFECT, CB_ADDSTRING,
   0, (LPARAM)"Acurate");
   SendDlgItemMessage (hDlg, IDC_SIMOPTION_WEAPONEFFECT, CB_SETCURSEL,
      PlayerOptions.GetWeaponEffectiveness(), 0);

   // Radar Model
   SendDlgItemMessage (hDlg, IDC_SIMOPTION_RADARTYPE, CB_ADDSTRING,
   0, (LPARAM)"360");
   SendDlgItemMessage (hDlg, IDC_SIMOPTION_RADARTYPE, CB_ADDSTRING,
   0, (LPARAM)"Easy");
   SendDlgItemMessage (hDlg, IDC_SIMOPTION_RADARTYPE, CB_ADDSTRING,
   0, (LPARAM)"APG 68");
   SendDlgItemMessage (hDlg, IDC_SIMOPTION_RADARTYPE, CB_SETCURSEL,
      PlayerOptions.GetAvionicsType(), 0);

   // Autopilot
   SendDlgItemMessage (hDlg, IDC_SIMOPTION_AUTOPILOT, CB_ADDSTRING,
   0, (LPARAM)"Intelligent");
   SendDlgItemMessage (hDlg, IDC_SIMOPTION_AUTOPILOT, CB_ADDSTRING,
   0, (LPARAM)"Enhanced");
   SendDlgItemMessage (hDlg, IDC_SIMOPTION_AUTOPILOT, CB_ADDSTRING,
   0, (LPARAM)"Normal");
   SendDlgItemMessage (hDlg, IDC_SIMOPTION_AUTOPILOT, CB_SETCURSEL,
      PlayerOptions.GetAutopilotMode(), 0);

   // Detail levels
   SendDlgItemMessage (hDlg, IDC_SIMOPTION_FEAT_DETAIL, TBM_SETRANGE, 0, (LPARAM)MAKELONG(0,4));
   SendDlgItemMessage (hDlg, IDC_SIMOPTION_VEH_DETAIL, TBM_SETRANGE, 0, (LPARAM)MAKELONG(0,15));
   SendDlgItemMessage (hDlg, IDC_SIMOPTION_MAGNIFICATION, TBM_SETRANGE, 0, (LPARAM)MAKELONG(0,9));
   SendDlgItemMessage (hDlg, IDC_SIMOPTION_FEAT_DETAIL, TBM_SETPOS, (WPARAM)TRUE, (LPARAM)PlayerOptions.BldDeaggLevel);
   SendDlgItemMessage (hDlg, IDC_SIMOPTION_VEH_DETAIL, TBM_SETPOS, (WPARAM)TRUE, (LPARAM)PlayerOptions.ObjDeaggLevel);
   SendDlgItemMessage (hDlg, IDC_SIMOPTION_MAGNIFICATION, TBM_SETPOS, (WPARAM)TRUE, (LPARAM)PlayerOptions.ObjMagnification);
}

void UpdateSimOptions (HWND hDlg)
{
   if (IsDlgButtonChecked (hDlg, IDC_SIMOPTION_AUTOTARGET))
      PlayerOptions.SetSimFlag (SIM_AUTO_TARGET);
   else
      PlayerOptions.ClearSimFlag (SIM_AUTO_TARGET);

   if (IsDlgButtonChecked (hDlg, IDC_SIMOPTION_BLACKOUT))
      PlayerOptions.ClearSimFlag (SIM_NO_BLACKOUT);
   else
      PlayerOptions.SetSimFlag (SIM_NO_BLACKOUT);

   if (IsDlgButtonChecked (hDlg, IDC_SIMOPTION_FUEL))
      PlayerOptions.SetSimFlag (SIM_UNLIMITED_FUEL);
   else
      PlayerOptions.ClearSimFlag (SIM_UNLIMITED_FUEL);

   if (IsDlgButtonChecked (hDlg, IDC_SIMOPTION_CHAFF))
      PlayerOptions.SetSimFlag (SIM_UNLIMITED_CHAFF);
   else
      PlayerOptions.ClearSimFlag (SIM_UNLIMITED_CHAFF);

   if (IsDlgButtonChecked (hDlg, IDC_SIMOPTION_AMMO))
      PlayerOptions.SetSimFlag (SIM_UNLIMITED_AMMO);
   else
      PlayerOptions.ClearSimFlag (SIM_UNLIMITED_AMMO);

   if (IsDlgButtonChecked (hDlg, IDC_SIMOPTION_COLLISION))
      PlayerOptions.ClearSimFlag (SIM_NO_COLLISIONS);
   else
      PlayerOptions.SetSimFlag (SIM_NO_COLLISIONS);

   if (IsDlgButtonChecked (hDlg, IDC_SIMOPTION_NAMETAGS))
      PlayerOptions.SetSimFlag (SIM_NAMETAGS);
   else
      PlayerOptions.ClearSimFlag (SIM_NAMETAGS);

   PlayerOptions.BldDeaggLevel = SendDlgItemMessage (hDlg, IDC_SIMOPTION_FEAT_DETAIL, TBM_GETPOS, 0, 0);
   PlayerOptions.ObjDeaggLevel = SendDlgItemMessage (hDlg, IDC_SIMOPTION_VEH_DETAIL, TBM_GETPOS, 0, 0);
   PlayerOptions.ObjMagnification = static_cast<float>(SendDlgItemMessage (hDlg, IDC_SIMOPTION_MAGNIFICATION, TBM_GETPOS, 0, 0));

   PlayerOptions.SaveOptions ("Default");
}

BOOL DoSimOptions (HWND hDlg,UINT message,WPARAM wParam,LPARAM lParam)
{
int retval = FALSE;

   switch (message)
   {
      case WM_INITDIALOG:
         InitSimOptionStuff(hDlg);
         retval = TRUE;
     	break;

      case WM_COMMAND:                		/* message: received a command */
         switch (LOWORD(wParam))
         {
            case IDOK:
               UpdateSimOptions(hDlg);
            case IDCANCEL:
               EndDialog(hDlg, TRUE);        /* Exits the dialog box        */
            break;
         }
         retval = TRUE;
      break;

      default:
//         retval = DefDlgProc(hDlg, message, wParam, lParam);
      break;
   }
   lParam = wParam;
   return (retval);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -