nextlevelaction.java

来自「mywork是rcp开发的很好的例子」· Java 代码 · 共 59 行

JAVA
59
字号
package es.org.chemi.games.sokoban.actions;

import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.Status;
import org.eclipse.jface.action.Action;

import es.org.chemi.games.sokoban.SokobanMessages;
import es.org.chemi.games.sokoban.SokobanPlugin;
import es.org.chemi.games.sokoban.ui.TileMap;
import es.org.chemi.games.sokoban.util.Constants;
import es.org.chemi.games.util.Timer;
/**
 * 上一关,下一关的action
 * @author levin
 */
public class NextLevelAction extends Action 
{
	private TileMap map = null;
	private int delta =0;	//1下一关 0本关 -1上一关
	public NextLevelAction(int delta, TileMap map) 
	{
		super("");
		this.map = map;
		this.delta =delta;
	}

	public void run() 
	{
		SokobanPlugin.trace(this.getClass().getName(),"New game enter next level."); //$NON-NLS-1$
		//设置下一关
		map.getPreferences().setLevel(getNextLevel(),map.getPreferences().getMode());
		
		try{
			((Timer)map.getCounters().get(Constants.COUNTER_TIME)).resetStopped();
			map.setIsNewLevel(true);
			map.loadMap();
			map.redraw();
			map.getUndoAction().setEnabled(false);
			map.setFocus();
			// Play sound.
			if(map.getPreferences().isSoundEnabled())
				SokobanPlugin.getResourceManager().getSound(Constants.SOUND_START).play();
		}catch (Exception ex){
			SokobanPlugin.getDefault().getLog().log(new Status(IStatus.ERROR,SokobanPlugin.getDefault().getBundle().getSymbolicName(),IStatus.ERROR,ex.toString(),null));
		}
		}
	
	private int getNextLevel() {
		int mode=map.getPreferences().getMode();
		//定义一下最大关卡的对应关系
		int maxLevel=SokobanMessages.getInt("MainView.levelset."+mode+".maxlevel");
		int nextLevel=map.getPreferences().getLevel(mode)+delta;
		if(nextLevel > maxLevel)
			nextLevel=maxLevel;
		if(nextLevel < 1)
			nextLevel = 1;
		return nextLevel;
	}
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?