⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 controller.java

📁 《神州》RPG游戏引擎
💻 JAVA
📖 第 1 页 / 共 3 页
字号:
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 + -