void BeCheckersWindow::OpenGame(const char *file) { int x, y, cjx, cjy, prevDist; int color, rank, turn, jumpAvailable; ifstream inGame(file, ios::in); if(!inGame) (new BAlert("LoadError", "Error while loading BeCheckers game.", "Okay", NULL, NULL, B_WIDTH_AS_USUAL, B_WARNING_ALERT))->Go(); else { cb->RemoveSelf(); delete cb; cb = new CheckerBoard(BPoint(0, 20), APP_NME); AddChild(cb); inGame >> turn >> prevDist >> jumpAvailable >> cjx >> cjy; while(inGame >> x >> y >> color >> rank) cb->AddChild(new Checker((bool)color, x, y, (bool)rank)); if(BPoint(cjx, cjy) != B_ORIGIN) Checker::SetCheckerJumping(((Checker *)cb->ChildAt(0))->CheckerAt(BPoint(cjx, cjy))); Checker::SetTurn((bool)turn); Checker::SetPrevDist(prevDist); Checker::SetJumpAvailable((bool)jumpAvailable); mvIndicationLabel->SetText(turn == DARK ? "Dark to move" : "Light to move"); } }
//------------------------------------------------------------------------------------------------- D2Watcher::D2Watcher(std::string title) : mWinName(title), mD2Hand(0) { DWORD pID; if ( windowExists() ) { GetWindowThreadProcessId (mD2Hwnd, &pID); mD2Hand = OpenProcess (PROCESS_VM_READ|PROCESS_VM_OPERATION, FALSE, pID); if (!mD2Hand) return; if ( !inGame() ) return; mThisPlayers = readPlayerCount(); mLastPlayers = mThisPlayers; } }