#pragma once #include #include "LevelManager.h" #define FULLSCREENRESNOCHANGE -1 enum controlReferences { FULLSCREENRESMENU, STARTINFULLSCREENCHECKBOX, NOPOLYGONFILLCHECKBOX, SOUNDENABLEDCHECKBOX, LOOKLEFTKEYDISPLAY, SETLOOKLEFTKEYBUTTON, LOOKRIGHTKEYDISPLAY, SETLOOKRIGHTKEYBUTTON, LOOKDOWNKEYDISPLAY, SETLOOKDOWNKEYBUTTON, LOOKUPKEYDISPLAY, SETLOOKUPKEYBUTTON, MOVEFORWARDKEYDISPLAY, SETMOVEFORWARDKEYBUTTON, MOVEBACKWARDKEYDISPLAY, SETMOVEBACKWARDKEYBUTTON, BULLETKEYDISPLAY, SETBULLETKEYBUTTON, ROCKETTARGETKEYDISPLAY, SETROCKETTARGETKEYBUTTON, ROCKETKEYDISPLAY, SETROCKETKEYBUTTON, BRAKEKEYDISPLAY, SETBRAKEKEYBUTTON, PAUSEKEYDISPLAY, SETPAUSEKEYBUTTON, DEFAULTSBUTTON }; typedef struct ScreenResolution { int Width; int Height; int RefreshRate; int ColorDepth; struct ScreenResolution * next; /* Linked list */ } ScreenResolution; typedef struct VSettings { /* Keys */ UInt16 Left; UInt16 Right; UInt16 Down; UInt16 Up; UInt16 Forward; UInt16 Backward; UInt16 Bullet; UInt16 RocketTarget; UInt16 Rocket; UInt16 Brake; UInt16 Pause; UInt16 * KeyBeingSet; /* Other settings */ Boolean SoundEnabled; Boolean NoFilledPolys; Boolean StartInFullScreen; int FullScreenResolution; int NumberOfResolutions; ScreenResolution * Resolutions; WindowRef Window; } VSettings; void InitSettings(VSettings * s); void CleanUpSettings(VSettings * s); void OpenSettingsWindow(VSettings * s); #define SetSettings(s) (SettingsAccessor((s))) #define GetSettings() (SettingsAccessor(NULL)) VSettings * SettingsAccessor(VSettings * s); void GetFullscreenSettings(VSettings * s, int * Width, int * Height, int * RefreshRate); SInt16 KeyWithModifiers(unsigned char charCode, UInt32 modifiers); Boolean SettingsIsEquivalentKey(VSettings * s, SInt16 pressedKey, SInt16 setKey);