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 + -
显示快捷键?