/** * リプレイを読み込んで再生 * * @param prop リプレイ dataの入ったプロパティセット */ public void startReplayGame(CustomProperties prop) { gameManager = new GameManager(new RendererSDL()); gameManager.replayMode = true; gameManager.replayProp = prop; pause = false; try { gameManager.receiver.setGraphics(SDLVideo.getVideoSurface()); } catch (SDLException e) { log.warn("SDLException throwed", e); } // Mode modeName = prop.getProperty("name.mode", ""); GameMode modeObj = NullpoMinoSDL.modeManager.getMode(modeName); if (modeObj == null) { log.warn("Couldn't find mode:" + modeName); } else { gameManager.mode = modeObj; } gameManager.init(); // Initialization for each player for (int i = 0; i < gameManager.getPlayers(); i++) { // ルール RuleOptions ruleopt = new RuleOptions(); ruleopt.readProperty(prop, i); gameManager.engine[i].ruleopt = ruleopt; // NEXT順生成アルゴリズム if ((ruleopt.strRandomizer != null) && (ruleopt.strRandomizer.length() > 0)) { Randomizer randomizerObject = GeneralUtil.loadRandomizer(ruleopt.strRandomizer); gameManager.engine[i].randomizer = randomizerObject; } // Wallkick if ((ruleopt.strWallkick != null) && (ruleopt.strWallkick.length() > 0)) { Wallkick wallkickObject = GeneralUtil.loadWallkick(ruleopt.strWallkick); gameManager.engine[i].wallkick = wallkickObject; } // AI (リプレイ追記用) String aiName = NullpoMinoSDL.propGlobal.getProperty(i + ".ai", ""); if (aiName.length() > 0) { DummyAI aiObj = GeneralUtil.loadAIPlayer(aiName); gameManager.engine[i].ai = aiObj; gameManager.engine[i].aiMoveDelay = NullpoMinoSDL.propGlobal.getProperty(i + ".aiMoveDelay", 0); gameManager.engine[i].aiThinkDelay = NullpoMinoSDL.propGlobal.getProperty(i + ".aiThinkDelay", 0); gameManager.engine[i].aiUseThread = NullpoMinoSDL.propGlobal.getProperty(i + ".aiUseThread", true); gameManager.engine[i].aiShowHint = NullpoMinoSDL.propGlobal.getProperty(i + ".aiShowHint", false); gameManager.engine[i].aiPrethink = NullpoMinoSDL.propGlobal.getProperty(i + ".aiPrethink", false); gameManager.engine[i].aiShowState = NullpoMinoSDL.propGlobal.getProperty(i + ".aiShowState", false); } gameManager.showInput = NullpoMinoSDL.propConfig.getProperty("option.showInput", false); // Called at initialization gameManager.engine[i].init(); } updateTitleBarCaption(); }
/** * Start a new game * * @param strRulePath Rule file path (null if you want to use user-selected one) */ public void startNewGame(String strRulePath) { gameManager = new GameManager(new RendererSDL()); pause = false; try { gameManager.receiver.setGraphics(SDLVideo.getVideoSurface()); } catch (SDLException e) { log.warn("SDLException throwed", e); } // Mode modeName = NullpoMinoSDL.propGlobal.getProperty("name.mode", ""); GameMode modeObj = NullpoMinoSDL.modeManager.getMode(modeName); if (modeObj == null) { log.warn("Couldn't find mode:" + modeName); } else { gameManager.mode = modeObj; } gameManager.init(); // Initialization for each player for (int i = 0; i < gameManager.getPlayers(); i++) { // チューニング設定 gameManager.engine[i].owRotateButtonDefaultRight = NullpoMinoSDL.propGlobal.getProperty(i + ".tuning.owRotateButtonDefaultRight", -1); gameManager.engine[i].owSkin = NullpoMinoSDL.propGlobal.getProperty(i + ".tuning.owSkin", -1); gameManager.engine[i].gSkin = NullpoMinoSDL.propGlobal.getProperty(i + ".tuning.gSkin", gameManager.engine[i].owSkin); gameManager.engine[i].owMinDAS = NullpoMinoSDL.propGlobal.getProperty(i + ".tuning.owMinDAS", -1); gameManager.engine[i].owMaxDAS = NullpoMinoSDL.propGlobal.getProperty(i + ".tuning.owMaxDAS", -1); gameManager.engine[i].owDasDelay = NullpoMinoSDL.propGlobal.getProperty(i + ".tuning.owDasDelay", -1); gameManager.engine[0].owReverseUpDown = NullpoMinoSDL.propGlobal.getProperty(0 + ".tuning.owReverseUpDown", false); gameManager.engine[i].owMoveDiagonal = NullpoMinoSDL.propGlobal.getProperty(i + ".tuning.owMoveDiagonal", -1); gameManager.engine[i].owBlockOutlineType = NullpoMinoSDL.propGlobal.getProperty(i + ".tuning.owBlockOutlineType", -1); gameManager.engine[i].owBlockShowOutlineOnly = NullpoMinoSDL.propGlobal.getProperty(i + ".tuning.owBlockShowOutlineOnly", -1); // ルール RuleOptions ruleopt = null; String rulename = strRulePath; if (rulename == null) { rulename = NullpoMinoSDL.propGlobal.getProperty(i + ".rule", ""); if (gameManager.mode.getGameStyle() > 0) { rulename = NullpoMinoSDL.propGlobal.getProperty( i + ".rule." + gameManager.mode.getGameStyle(), ""); } } if ((rulename != null) && (rulename.length() > 0)) { log.debug("Load rule options from " + rulename); ruleopt = GeneralUtil.loadRule(rulename); } else { log.debug("Load rule options from setting file"); ruleopt = new RuleOptions(); ruleopt.readProperty(NullpoMinoSDL.propGlobal, i); } gameManager.engine[i].ruleopt = ruleopt; // NEXT順生成アルゴリズム if ((ruleopt.strRandomizer != null) && (ruleopt.strRandomizer.length() > 0)) { Randomizer randomizerObject = GeneralUtil.loadRandomizer(ruleopt.strRandomizer); gameManager.engine[i].randomizer = randomizerObject; } // Wallkick if ((ruleopt.strWallkick != null) && (ruleopt.strWallkick.length() > 0)) { Wallkick wallkickObject = GeneralUtil.loadWallkick(ruleopt.strWallkick); gameManager.engine[i].wallkick = wallkickObject; } // AI String aiName = NullpoMinoSDL.propGlobal.getProperty(i + ".ai", ""); if (aiName.length() > 0) { DummyAI aiObj = GeneralUtil.loadAIPlayer(aiName); gameManager.engine[i].ai = aiObj; gameManager.engine[i].aiMoveDelay = NullpoMinoSDL.propGlobal.getProperty(i + ".aiMoveDelay", 0); gameManager.engine[i].aiThinkDelay = NullpoMinoSDL.propGlobal.getProperty(i + ".aiThinkDelay", 0); gameManager.engine[i].aiUseThread = NullpoMinoSDL.propGlobal.getProperty(i + ".aiUseThread", true); gameManager.engine[i].aiShowHint = NullpoMinoSDL.propGlobal.getProperty(i + ".aiShowHint", false); gameManager.engine[i].aiPrethink = NullpoMinoSDL.propGlobal.getProperty(i + ".aiPrethink", false); gameManager.engine[i].aiShowState = NullpoMinoSDL.propGlobal.getProperty(i + ".aiShowState", false); } gameManager.showInput = NullpoMinoSDL.propConfig.getProperty("option.showInput", false); // Called at initialization gameManager.engine[i].init(); } updateTitleBarCaption(); }