00001 #ifndef MMANN_FCPRESETS_H 00002 #define MMANN_FCPRESETS_H 00003 00011 00012 #include "FCSFreecellSolvingAlgorithm.h" 00013 00014 class FCCommandLineArguments; 00015 00017 #define FC_SIZE_OF_PRESET_NAME 32 00018 00020 enum FCSPresetID 00021 { 00022 FCS_PRESET_NONE = -1, 00023 FCS_PRESET_BAKERS_DOZEN, 00024 FCS_PRESET_BAKERS_GAME, 00025 FCS_PRESET_CRUEL, 00026 FCS_PRESET_DER_KATZENSCHWANZ, 00027 FCS_PRESET_DIE_SCHLANGE, 00028 FCS_PRESET_EIGHT_OFF, 00029 FCS_PRESET_FORECELL, 00030 FCS_PRESET_FREECELL, 00031 FCS_PRESET_GOOD_MEASURE, 00032 FCS_PRESET_KLONDIKE, 00033 FCS_PRESET_KINGS_ONLY_BAKERS_GAME, 00034 FCS_PRESET_RELAXED_FREECELL, 00035 FCS_PRESET_RELAXED_SEAHAVEN_TOWERS, 00036 FCS_PRESET_SEAHAVEN_TOWERS, 00037 FCS_PRESET_SIMPLE_SIMON, 00038 FCS_PRESET_YUKON, 00039 FCS_PRESET_BELEAGUERED_CASTLE 00040 }; 00041 00043 class FCSPreset 00044 { 00045 public: 00050 static FCSPreset* GetPresetInfo(const char* Name); 00051 00055 void ApplyPresetID(FCSPresetID Id); 00056 00058 FCSPresetID m_PresetID; 00059 00061 int m_NumberOfFreecells; 00062 00064 int m_NumberOfStacks; 00065 00067 int m_NumberOfDecks; 00068 00070 BuildSequenceByEnum m_SequencesAreBuiltBy; 00071 00073 bool m_UnlimitedSequenceMove; 00074 00076 FCEmptyStacksFillType m_EmptyStacksFill; 00077 00079 FCSTalonType m_TalonType; 00080 00082 char m_TestOrder[FCS_TESTS_NUM*3+1]; 00083 }; 00084 00086 class FCSPresetName 00087 { 00088 public: 00089 00094 static FCSPresetID GetPresetID(const char* Name); 00095 00097 char m_Name[FC_SIZE_OF_PRESET_NAME]; 00098 00100 FCSPresetID m_PresetID; 00101 }; 00102 00111 int FCSApplyTestOrder(int* TestOrderArray, const char* TestOrderString, 00112 int* TestOrderCount, char* GameName, char** ErrorString); 00113 00115 extern const FCSPresetName FCSPresetNames[]; 00116 00117 #endif