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