extern int whiteFlag, blackFlag;\r
Boolean flipClock = FALSE;\r
extern HANDLE chatHandle[];\r
-extern int ics_type;\r
+extern enum ICS_TYPE ics_type;\r
\r
+int MySearchPath P((char *installDir, char *name, char *fullname));\r
+int MyGetFullPathName P((char *name, char *fullname));\r
void DisplayHoldingsCount(HDC hdc, int x, int y, int align, int copyNumber);\r
VOID NewVariantPopup(HWND hwnd);\r
int FinishMove P((ChessMove moveType, int fromX, int fromY, int toX, int toY,\r
\r
#define OPTCHAR "/"\r
#define SEPCHAR "="\r
+#define TOPLEVEL 0\r
\r
#include "args.h"\r
\r
RECT crect, wrect, oldRect;\r
int offby;\r
LOGBRUSH logbrush;\r
+ VariantClass v = gameInfo.variant;\r
\r
int suppressVisibleEffects = 0; // [HGM] kludge to request updating sizeInfo only\r
if((int)boardSize >= 1000 ) { boardSize -= 1000; suppressVisibleEffects = 1; }\r
\r
/* [HGM] call with -2 uses old size (for if nr of files, ranks changes) */\r
if(boardSize == (BoardSize)(-2) ) boardSize = oldBoardSize;\r
+ oldBoardSize = boardSize;\r
+\r
+ if(boardSize != SizeMiddling && boardSize != SizePetite && boardSize != SizeBulky && !appData.useFont)\r
+ { // correct board size to one where built-in pieces exist\r
+ if((v == VariantCapablanca || v == VariantGothic || v == VariantGrand || v == VariantCapaRandom || v == VariantJanus || v == VariantSuper)\r
+ && (boardSize < SizePetite || boardSize > SizeBulky) // Archbishop and Chancellor available in entire middle range\r
+ || (v == VariantShogi && boardSize != SizeModerate) // Japanese-style Shogi\r
+ || v == VariantKnightmate || v == VariantSChess || v == VariantXiangqi || v == VariantSpartan\r
+ || v == VariantShatranj || v == VariantMakruk || v == VariantGreat || v == VariantFairy ) {\r
+ if(boardSize < SizeMediocre) boardSize = SizePetite; else\r
+ if(boardSize > SizeModerate) boardSize = SizeBulky; else\r
+ boardSize = SizeMiddling;\r
+ }\r
+ }\r
+ if(!appData.useFont && boardSize == SizePetite && (v == VariantShogi || v == VariantKnightmate)) boardSize = SizeMiddling; // no Unicorn in Petite\r
\r
oldRect.left = wpMain.x; //[HGM] placement: remember previous window params\r
oldRect.top = wpMain.y;\r
\r
sizeInfo[boardSize].cliWidth = boardRect.right + OUTER_MARGIN;\r
sizeInfo[boardSize].cliHeight = boardRect.bottom + OUTER_MARGIN;\r
- oldBoardSize = boardSize;\r
oldTinyLayout = tinyLayout;\r
winW = 2 * GetSystemMetrics(SM_CXFRAME) + boardRect.right + OUTER_MARGIN;\r
winH = 2 * GetSystemMetrics(SM_CYFRAME) + GetSystemMetrics(SM_CYMENU) +\r
SelectObject(hdcSeek, oldBrush);\r
}\r
\r
+void DrawSeekOpen()\r
+{\r
+}\r
+\r
+void DrawSeekClose()\r
+{\r
+}\r
+\r
VOID\r
HDCDrawPosition(HDC hdc, BOOLEAN repaint, Board board)\r
{\r
PromotionPopup(hwndMain);\r
}\r
\r
-/* Toggle ShowThinking */\r
-VOID\r
-ToggleShowThinking()\r
-{\r
- appData.showThinking = !appData.showThinking;\r
- ShowThinkingEvent();\r
-}\r
-\r
VOID\r
LoadGameDialog(HWND hwnd, char* title)\r
{\r
break;\r
\r
case IDM_AnalysisMode:\r
- if (!first.analysisSupport) {\r
- snprintf(buf, MSG_SIZ, _("%s does not support analysis"), first.tidy);\r
- DisplayError(buf, 0);\r
- } else {\r
+ if(AnalyzeModeEvent()) {\r
SAY("analyzing current position");\r
- /* [DM] icsEngineAnlyze [HGM] Why is this front-end??? */\r
- if (appData.icsActive) {\r
- if (gameMode != IcsObserving) {\r
- snprintf(buf, MSG_SIZ, "You are not observing a game");\r
- DisplayError(buf, 0);\r
- /* secure check */\r
- if (appData.icsEngineAnalyze) {\r
- if (appData.debugMode) \r
- fprintf(debugFP, "Found unexpected active ICS engine analyze \n");\r
- ExitAnalyzeMode();\r
- ModeHighlight();\r
- break;\r
- }\r
- break;\r
- } else {\r
- /* if enable, user want disable icsEngineAnalyze */\r
- if (appData.icsEngineAnalyze) {\r
- ExitAnalyzeMode();\r
- ModeHighlight();\r
- break;\r
- }\r
- appData.icsEngineAnalyze = TRUE;\r
- if (appData.debugMode) fprintf(debugFP, "ICS engine analyze starting...\n");\r
- }\r
- } \r
- if (!appData.showThinking) ToggleShowThinking();\r
- AnalyzeModeEvent();\r
}\r
break;\r
\r
case IDM_AnalyzeFile:\r
- if (!first.analysisSupport) {\r
- char buf[MSG_SIZ];\r
- snprintf(buf, MSG_SIZ, _("%s does not support analysis"), first.tidy);\r
- DisplayError(buf, 0);\r
- } else {\r
- if (!appData.showThinking) ToggleShowThinking();\r
- AnalyzeFileEvent();\r
-// LoadGameDialog(hwnd, _("Analyze Game from File"));\r
- AnalysisPeriodicEvent(1);\r
- }\r
+ AnalyzeFileEvent();\r
break;\r
\r
case IDM_IcsClient:\r
COLORREF oldFg, oldBg;\r
HFONT oldFont;\r
\r
+ if (twoBoards && partnerUp) return;\r
if (appData.clockMode) {\r
if (tinyLayout)\r
snprintf(buf, sizeof(buf)/sizeof(buf[0]), "%c %s %s", color[0], TimeString(timeRemaining), flagFell);\r
ChildProc *cp;\r
int err;\r
SOCKET s;\r
+\r
struct sockaddr_in sa, mysa;\r
struct hostent FAR *hp;\r
unsigned short uport;\r