From: Hendrik B. <nh...@us...> - 2013-09-27 07:18:28
|
Update of /cvsroot/arianne/stendhal/src/games/stendhal/server/maps/quests/revivalweeks In directory sfp-cvs-1.v30.ch3.sourceforge.com:/tmp/cvs-serv22695/src/games/stendhal/server/maps/quests/revivalweeks Modified Files: SokobanGame.java Log Message: designed quest slot and use it for reading the last successful level on game start Index: SokobanGame.java =================================================================== RCS file: /cvsroot/arianne/stendhal/src/games/stendhal/server/maps/quests/revivalweeks/SokobanGame.java,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** SokobanGame.java 27 Sep 2013 07:15:22 -0000 1.3 --- SokobanGame.java 27 Sep 2013 07:18:24 -0000 1.4 *************** *** 22,30 **** import games.stendhal.server.entity.npc.ConversationStates; import games.stendhal.server.entity.npc.EventRaiser; - import games.stendhal.server.entity.npc.NPCList; import games.stendhal.server.entity.npc.SpeakerNPC; import games.stendhal.server.entity.player.Player; import java.util.Arrays; /** --- 22,35 ---- import games.stendhal.server.entity.npc.ConversationStates; import games.stendhal.server.entity.npc.EventRaiser; import games.stendhal.server.entity.npc.SpeakerNPC; + import games.stendhal.server.entity.npc.action.MultipleActions; + import games.stendhal.server.entity.npc.action.SetQuestAction; + import games.stendhal.server.entity.npc.action.SetQuestToTimeStampAction; + import games.stendhal.server.entity.npc.condition.QuestSmallerThanCondition; import games.stendhal.server.entity.player.Player; import java.util.Arrays; + import java.util.LinkedList; + import java.util.List; /** *************** *** 34,37 **** --- 39,52 ---- */ public class SokobanGame implements LoadableContent { + // 0: start, done + // 1: level + // 2: sum of times for past levels + // 3: start time of current level + private static final String QUEST_SLOT = "sokoban"; + private static final int QUEST_IDX_STATUS = 0; + private static final int QUEST_IDX_LAST_SUCCESSFUL_LEVEL = 1; + private static final int QUEST_IDX_SUM_OF_TIMES_FOR_PAST_LEVELS = 2; + private static final int QUEST_IDX_START_TIME_OF_CURRENT_LEVEL = 3; + private StendhalRPZone zone = null; private SokobanBoard board; *************** *** 60,68 **** @Override protected void createDialog() { ! add(ConversationStates.IDLE, ! Arrays.asList("level"), ConversationStates.IDLE, ! null, ! new PlayAction(board)); } }; --- 75,91 ---- @Override protected void createDialog() { ! ! List<ChatAction> playActions = new LinkedList<ChatAction>(); ! playActions.add(new SetQuestAction(QUEST_SLOT, QUEST_IDX_STATUS, "start")); ! playActions.add(new SetQuestToTimeStampAction(QUEST_SLOT, QUEST_IDX_START_TIME_OF_CURRENT_LEVEL)); ! playActions.add(new PlayAction(board)); ! ! add(ConversationStates.ATTENDING, ! Arrays.asList("play"), ! new QuestSmallerThanCondition( ! QUEST_SLOT, QUEST_IDX_LAST_SUCCESSFUL_LEVEL, board.getLevelCount()), ConversationStates.IDLE, ! "Good luck.", ! new MultipleActions(playActions)); } }; *************** *** 83,87 **** public void fire(Player player, Sentence sentence, EventRaiser npc) { board.setPlayer(player); ! board.loadLevel(MathHelper.parseIntDefault(sentence.getNormalized().substring("level ".length()), 1)); } } --- 106,111 ---- public void fire(Player player, Sentence sentence, EventRaiser npc) { board.setPlayer(player); ! int level = MathHelper.parseIntDefault(player.getQuest(QUEST_SLOT, QUEST_IDX_LAST_SUCCESSFUL_LEVEL), 0); ! board.loadLevel(level + 1); } } *************** *** 102,106 **** @Override public boolean removeFromWorld() { - NPCList.get().remove("TODO"); zone.remove(npc); board.clear(); --- 126,129 ---- *************** *** 108,112 **** return true; } ! /* --- 131,135 ---- return true; } ! } /* *************** *** 128,131 **** - minimap highlight */ - - } --- 151,152 ---- |