📄 controller.java
字号:
import java.util.*;
import javax.microedition.lcdui.*;
import javax.microedition.midlet.MIDletStateChangeException;
public class Controller
{
Canvas1 canvas;
Graphics g;
public Controller(Canvas1 canvas)
{
this.canvas = canvas;
this.g = canvas.g;
}
public void keyPressed(int keyCode)
{
int gameAction = KeyMapping.getGameKey(keyCode);
if(gameAction == Canvas.KEY_STAR)
{
GameMIDlet.showFPS=!GameMIDlet.showFPS;
}
if(gameAction == Canvas.GAME_D)
{
GameMIDlet.showMem=!GameMIDlet.showMem;
}
//在行走状态时
if(canvas.runStatus==Canvas1.STATUS_WALK)
{
if(gameAction == Canvas.FIRE)
{
if(canvas.inChatArea)
{
System.out.println("开始对话");
//检查NPC是否有任务发布
Vector missionVC=canvas.chatSprite.getMissionVC();
//对话VC
Vector msgVC = null;
Vector mainRoleMissionVC=GameMIDlet.mainRole.getMissionVC();
//遍历NPC的任务,一般只有一个任务
for(int i=0;missionVC!=null && i<missionVC.size();i++)
{
Mission m = (Mission)missionVC.elementAt(i);
//找主角身上是否有同样的任务,有的话设置NPC的任务状态为主角任务状态
Mission mainRoleMission=null;
for(int j=0;mainRoleMissionVC!=null && j<mainRoleMissionVC.size();j++)
{
if(((Mission)mainRoleMissionVC.elementAt(j)).getName().equals(m.getName()))
{
mainRoleMission=(Mission)mainRoleMissionVC.elementAt(j);
m.setStatus(mainRoleMission.getStatus());
}
}
//任务待分配
if(m.getStatus()==Mission.STATUS_MISSION_WAIT)
{
//判断是否满足任务条件
if(m.getMinLv()<=GameMIDlet.mainRole.getLv() && m.getMaxLv()>=GameMIDlet.mainRole.getLv())
{
if(canvas.msgBoard==null)
{
msgVC = m.getMStartChat();
}
m.setStatus(Mission.STATUS_MISSION_DOING);
//替换主角load的不同对象任务
if(mainRoleMission!=null)
{
GameMIDlet.mainRole.removeMission(mainRoleMission);
}
GameMIDlet.mainRole.addMission(m);
}
}else
//任务进行中
if(m.getStatus()==Mission.STATUS_MISSION_DOING)
{
//检查任务进行状况
if(m.getMType()==Mission.MTYPE_EXERCISE) //练级任务
{
if(GameMIDlet.mainRole.getLv()>=m.getTargetLv())
{
m.setStatus(Mission.STATUS_MISSION_END);
msgVC = m.getMCompleteChat();
//替换主角load的不同对象任务
if(mainRoleMission!=null)
{
GameMIDlet.mainRole.removeMission(mainRoleMission);
}
GameMIDlet.mainRole.addMission(m);
//奖励动作
Vector awardVC=m.getAwardVC();
for(int j=0;awardVC!=null && j<awardVC.size();j++)
{
Award award=(Award)awardVC.elementAt(j);
if(award.getType()==Award.TYPE_MONEY)
{
GameMIDlet.mainRole.addMoney(award.getMoney());
}else
if(award.getType()==Award.TYPE_MAT)
{
GameMIDlet.mainRole.addMat(award.getMat());
}else
if(award.getType()==Award.TYPE_SKILL)
{
GameMIDlet.mainRole.addSkill(award.getSkill());
}
}
}else
{
msgVC = m.getMDoingChat();
}
}else
if(m.getMType()==Mission.MTYPE_FINDMAT) //找物品任务
{
Vector vc=GameMIDlet.mainRole.getUsedMatVC();
boolean haveFind=false;
for(int j=0;vc!=null && j<vc.size();j++)
{
Mat mat=(Mat)vc.elementAt(j);
if(mat.getName().equals(m.getTargetMat().getName()))
{
haveFind=true;
mat.setAmount(mat.getAmount()-1);
//GameMIDlet.mainRole.removeMission(m);
//奖励动作
Vector awardVC=m.getAwardVC();
for(int k=0;awardVC!=null && k<awardVC.size();k++)
{
Award award=(Award)awardVC.elementAt(j);
if(award.getType()==Award.TYPE_MONEY)
{
GameMIDlet.mainRole.addMoney(award.getMoney());
}else
if(award.getType()==Award.TYPE_MAT)
{
GameMIDlet.mainRole.addMat(award.getMat());
}else
if(award.getType()==Award.TYPE_SKILL)
{
GameMIDlet.mainRole.addSkill(award.getSkill());
}
}
}
}
if(haveFind)
{
m.setStatus(Mission.STATUS_MISSION_END);
msgVC = m.getMCompleteChat();
// 替换主角load的不同对象任务
if(mainRoleMission!=null)
{
GameMIDlet.mainRole.removeMission(mainRoleMission);
}
GameMIDlet.mainRole.addMission(m);
}else
{
msgVC = m.getMDoingChat();
}
}
}else
//任务已完成
if(m.getStatus()==Mission.STATUS_MISSION_END)
{
if(canvas.msgBoard==null)
{
msgVC = m.getMEndChat();
}
}
}
//没任务取固定对话
if(missionVC==null)
{
msgVC=canvas.chatSprite.getMsgVC();
}
if(msgVC!=null)
{
canvas.msgBoard = new MsgBoard(canvas,g);
canvas.msgBoard.setMsgVC(msgVC); //设置对话内容集合
canvas.msgBoard.setMsgPoint(0); //设置对话指针
canvas.msgBoard.visible=false; //暂时不显示对话
}
if(canvas.msgBoard!=null)
{
canvas.msgBoard.init(); //初始化对话内容
canvas.msgBoard.visible = true; //允许显示对话
canvas.runStatus=Canvas1.STATUS_CHAT; //进入对话状态
if(canvas.chatSprite!=null)
canvas.chatSprite.stopAutoMove(); //让NPC停下来
}
}
}
else if(gameAction == Canvas.GAME_B || gameAction == Canvas.KEY_POUND)
//"进入STATUS_SHOWSTATUS"
{
if(canvas.enemyFactory!=null)
canvas.enemyFactory.stopAutoMove();
canvas.runStatus=Canvas1.STATUS_SHOWMENU;
}
else if(gameAction == Canvas.GAME_A) //看任务
{
if(canvas.enemyFactory != null)
canvas.enemyFactory.stopAutoMove();
canvas.initMissionTab();
canvas.runStatus = Canvas1.STATUS_SHOWMISSION;
}
/*
else if(gameAction == Canvas.GAME_A) //购买状态
{
if(canvas.enemyFactory != null)
canvas.enemyFactory.stopAutoMove();
canvas.shoping = new Shoping(canvas);
canvas.runStatus = Canvas1.STATUS_SHOPING;
canvas.shopStatus = Canvas1.SHOPSTATUS_NORMAL;
}
*/
else if(gameAction == Canvas.KEY_NUM1)
{
canvas.faceShower.stop();
if (canvas.faceIndex != 0)
canvas.faceIndex = 0;
else
canvas.faceIndex = -1;
}
else if(gameAction==Canvas.KEY_NUM3)
{
canvas.faceShower.stop();
if (canvas.faceIndex != 1)
canvas.faceIndex = 1;
else
canvas.faceIndex = -1;
}
}
//在对话状态时
else if(canvas.runStatus == Canvas1.STATUS_CHAT)
{
switch(gameAction)
{
case Canvas.DOWN:
if(canvas.msgBoard!=null)
{
canvas.msgBoard.scrollDown();
}
break;
case Canvas.UP:
if(canvas.msgBoard!=null)
{
canvas.msgBoard.scrollUp();
}
break;
case Canvas.FIRE:
if(canvas.msgBoard!=null)
{
if(canvas.msgBoard.isEnd()) //当前段对话翻到最后时
{
//msgBoard.close();
//msgBoard=null;
if(canvas.msgBoard.getMsgPoint()>=canvas.msgBoard.getMsgVC().size()-1) //已经是最后一段对话的末尾时
{
//关闭对话框
//System.out.println("关闭对话框");
canvas.msgBoard = null;
if(canvas.chatSprite!=null)
canvas.chatSprite.startAutoMove(); //让NPC继续走
if(canvas.chatSprite.getName()!=null && canvas.chatSprite.getName().equals("商人"))
{
if(canvas.enemyFactory != null)
canvas.enemyFactory.stopAutoMove();
canvas.shoping = new Shoping(canvas);
canvas.runStatus = Canvas1.STATUS_SHOPING;
canvas.shopStatus = Canvas1.SHOPSTATUS_NORMAL;
}
else
{
canvas.runStatus = Canvas1.STATUS_WALK;
}
canvas.chatSprite=null;
canvas.inChatArea=false;
}
else
{
//翻到下一段对话
//canvas.chatSprite.nextMsg();
canvas.msgBoard.nextMsg();
}
}
else
{
canvas.msgBoard.scrollDown();
}
}
}
}
//在打开菜单状态时(game Menu)
else if(canvas.runStatus == Canvas1.STATUS_SHOWMENU)
{
if(gameAction==Canvas.GAME_B || gameAction==Canvas.KEY_POUND)
{
if(canvas.enemyFactory!=null)
canvas.enemyFactory.startAutoMove();
canvas.runStatus=Canvas1.STATUS_WALK;
}
else if(gameAction==Canvas.LEFT)
{
canvas.gameMenu.menuIndex--;
if(canvas.gameMenu.menuIndex<0)
{
canvas.gameMenu.menuIndex = GameMenu.menuName.length-1;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -