📄 gamemenu.java
字号:
import java.util.*;
import javax.microedition.lcdui.*;
import javax.microedition.lcdui.game.*;
/*
* Created on 2005-7-28
*
* TODO To change the template for this generated file go to
* Window - Preferences - Java - Code Style - Code Templates
*/
/**
* @author Administrator
*
* TODO To change the template for this generated type comment go to
* Window - Preferences - Java - Code Style - Code Templates
*/
public class GameMenu {
public int menuIndex;
public static String[] menuName=new String[]{"状态","道具","装备","技能","系统"};
Canvas1 canvas;
Graphics g;
int width,height;
public GameMenu(Canvas1 canvas)
{
this.canvas=canvas;
this.g=canvas.g;
this.width=canvas.width;
this.height=canvas.height;
}
public void showMenu()
{
int LMargin=width-90-5;
int TMargin=height-18-5;
Image menuImg=Tools.getImage("/pic/menu.png");
g.drawImage(menuImg,LMargin,TMargin,Style.LT);
g.setColor(0xFFFFFF);
g.drawRect(LMargin+18*menuIndex,TMargin,17,17);
g.setFont(Style.font);
g.setColor(0x000000);
g.drawString(menuName[menuIndex],LMargin+18*menuIndex+10,TMargin-Style.font.getHeight()-1,Style.CT);
g.setColor(0xFFFFFF);
g.drawString(menuName[menuIndex],LMargin+18*menuIndex+9,TMargin-Style.font.getHeight()-2,Style.CT);
}
//控制显示位置
int statusLOffset;
int statusTOffset;
public void showStatus()
{
//主角头像
Sprite mr=new Sprite(GameMIDlet.mainRole);
mr.setFrameSequence(new int[3]);
mr.setFrame(0);
int w=125;
int h=7*4+Style.font.getHeight()*4+7+mr.getHeight()+4;
int L=width/2-w/2;
int T=height/2-h/2;
int LMargin=L+statusLOffset;
int TMargin=T+statusTOffset;
mr.setPosition(LMargin+4,TMargin+5);
int lv=GameMIDlet.mainRole.getLv();
int maxLife=GameMIDlet.mainRole.getMaxLife();
int life=GameMIDlet.mainRole.getLife();
int maxMagic=GameMIDlet.mainRole.getTotalMagic();
int magic=GameMIDlet.mainRole.getMagic();
if(magic>maxMagic)
{
magic=maxMagic;
GameMIDlet.mainRole.setMagic(magic);
}
int nextExp=GameMIDlet.mainRole.getNextExp();
int exp=GameMIDlet.mainRole.getExp();
int power=GameMIDlet.mainRole.getTotalPower();
int defence=GameMIDlet.mainRole.getTotalDefence();
int actSpeed=GameMIDlet.mainRole.getTotalActSpeed();
g.setColor(0xDAE6D1);
g.fillRect(LMargin,TMargin,w,h); //对话框背景色
g.setColor(0x618E3F);
g.drawRect(LMargin,TMargin,w,h); //外框
mr.paint(g);
g.setFont(Style.font);
g.setColor(0x000000);
g.drawString("当前状态",LMargin+30,TMargin+5,Style.LT);
g.drawString("级别",LMargin+30,mr.getY()+mr.getHeight()+3,Style.LB);
g.drawString("气血",LMargin+5,TMargin+42,Style.LT);
g.drawString("精神",LMargin+5,TMargin+42+Style.font.getHeight()+7,Style.LT);
g.drawString("经验",LMargin+5,TMargin+42+Style.font.getHeight()*2+14,Style.LT);
int numBlank=(w-Style.font.stringWidth("攻防速"))/3;
g.drawString("攻",LMargin+5,TMargin+42+Style.font.getHeight()*3+21,Style.LT);
g.drawString("防",LMargin+5+Style.font.stringWidth("攻")+numBlank,TMargin+42+Style.font.getHeight()*3+21,Style.LT);
g.drawString("速",LMargin+5+Style.font.stringWidth("攻防")+numBlank*2,TMargin+42+Style.font.getHeight()*3+21,Style.LT);
g.setColor(0xFF0000);
g.drawString(String.valueOf(lv),LMargin+30+Style.font.stringWidth("级别")+5,mr.getY()+mr.getHeight()+3,Style.LB);
g.drawString(String.valueOf(power),LMargin+5+Style.font.stringWidth("攻")+2,TMargin+42+Style.font.getHeight()*3+21,Style.LT);
g.drawString(String.valueOf(defence),LMargin+5+Style.font.stringWidth("攻防")+numBlank+2,TMargin+42+Style.font.getHeight()*3+21,Style.LT);
g.drawString(String.valueOf(actSpeed),LMargin+5+Style.font.stringWidth("攻防速")+numBlank*2+2,TMargin+42+Style.font.getHeight()*3+21,Style.LT);
g.setColor(0x000000);
int barStart=10+Style.font.stringWidth("气血");
int barEnd=w-5;
int barCenter=(barStart+barEnd)/2;
int barLength=barEnd-barStart;
//+(w-(5*2+fontwidth*2+5))/2
g.drawString(life+"/"+maxLife,LMargin+barCenter,TMargin+39,Style.CT);
g.drawString(magic+"/"+maxMagic,LMargin+barCenter,TMargin+42+Style.font.getHeight()+4,Style.CT);
g.drawString(exp+"/"+nextExp,LMargin+barCenter,TMargin+42+Style.font.getHeight()*2+11,Style.CT);
//HP
g.setColor(0xFFFFFF);
g.fillRect(LMargin+barStart,TMargin+42+Style.font.getHeight()-3,barLength,4);
int lifeLength=0;
if(life>0)
{
lifeLength=barLength*100/(maxLife*100/life);
}
g.setColor(0xFF0000);
g.fillRect(LMargin+barStart,TMargin+42+Style.font.getHeight()-3,lifeLength,4);
g.setColor(0xA21515);
g.drawRect(LMargin+barStart,TMargin+42+Style.font.getHeight()-3,barLength,4);
//MP
g.setColor(0xFFFFFF);
g.fillRect(LMargin+barStart,TMargin+42+Style.font.getHeight()*2+7-3,barLength,4);
int magicLength=0;
if(magic>0)
{
magicLength=barLength*100/(maxMagic*100/magic);
}
g.setColor(0x0000FF);
g.fillRect(LMargin+barStart,TMargin+42+Style.font.getHeight()*2+7-3,magicLength,4);
g.setColor(0x12129C);
g.drawRect(LMargin+barStart,TMargin+42+Style.font.getHeight()*2+7-3,barLength,4);
//EXP
g.setColor(0xFFFFFF);
g.fillRect(LMargin+barStart,TMargin+42+Style.font.getHeight()*3+14-3,barLength,4);
int expLength=0;
if(exp>0)
{
expLength=barLength*100/(nextExp*100/exp);
}
g.setColor(0xFFFF00);
g.fillRect(LMargin+barStart,TMargin+42+Style.font.getHeight()*3+14-3,expLength,4);
g.setColor(0x94741B);
g.drawRect(LMargin+barStart,TMargin+42+Style.font.getHeight()*3+14-3,barLength,4);
}
MatTab matTab;
int tabIndex=0;
public void prevMat()
{
tabIndex--;
if(tabIndex<0)
{
tabIndex=0;
}
matTab=null;
}
public void nextMat()
{
tabIndex++;
if(tabIndex>1)
{
tabIndex=1;
}
matTab=null;
}
public void reAddMatTab()
{
matTab.removeAll();
int matType=0;
if(tabIndex==0)
{
matType=Mat.TYPE_USED;
}else
if(tabIndex==1)
{
matType=Mat.TYPE_EQUIP;
}
Vector matVC = GameMIDlet.mainRole.getBagMatVC(matType);
for(int i=0; matVC!=null && i<matVC.size(); i++)
{
matTab.addElement((Mat)matVC.elementAt(i));
}
matTab.sort();
matTab.refreshVC();
}
//显示道具
public void showItem()
{
int w = width-10;
int h = height-10;
int x=width/2-w/2;
int y=height/2-h/2;
g.setColor(Style.bgColor);
g.fillRect(x,y,w,h); //对话框背景色
g.setColor(Style.boardColor);
g.drawRect(x,y,w,h); //外框
int tabX=5;
int tabY=5;
int tabW=w-10;
int tabH=h-(Style.font.getHeight()+15);
g.setColor(0x000000);
g.drawString("金钱",x+5,y+h-5-Style.font.getHeight(),Style.LT);
g.setColor(0xFF0000);
g.drawString(String.valueOf(GameMIDlet.mainRole.getMoney()),x+10+Style.font.stringWidth("金钱"),y+h-5-Style.font.getHeight(),Style.LT);
if(matTab==null)
{
matTab=new MatTab();
matTab.setTabName(new String[]{"药品类","装备类"});
matTab.setTabIndex(tabIndex);
matTab.setBgColor(Style.bgColor2);
matTab.setHighLightColor(Style.highLight);
matTab.setPosition(x+tabX,y+tabY);
matTab.setW(tabW);
matTab.setH(tabH);
int matType=0;
if(tabIndex==0)
{
matType=Mat.TYPE_USED;
}else
if(tabIndex==1)
{
matType=Mat.TYPE_EQUIP;
}
Vector matVC = GameMIDlet.mainRole.getBagMatVC(matType);
for(int i=0; matVC!=null && i<matVC.size(); i++)
{
matTab.addElement((Mat)matVC.elementAt(i));
}
matTab.sort();
//System.out.println("数据加完");
}
matTab.paint(g);
/*
g.setColor(0x618E3F);
for(int i=0;i<=1;i++)
{
for(int j=0;j<=2;j++)
{
g.drawRect(LMargin+5+(32+5)*j,TMargin+10+Style.font.getHeight()+(32+5)*i,32,32);
}
}
*/
}
/*
* //布帽 43,7
//饰物 78,27
//右手 3,33
//衣服 43,52
//左手 83,71
//鞋 43,96
* */
public static Point[] partLoc=new Point[]{
new Point(43,7),
new Point(78,27),
new Point(3,33),
new Point(43,52),
new Point(83,71),
new Point(43,96)
};
public static String[] partName=new String[]{
"头部",
"饰物",
"右手",
"身体",
"左手",
"脚"
};
public int equipIndex=0;
public void nextEquip()
{
equipIndex++;
if(equipIndex>partLoc.length-1)
{
equipIndex=0;
}
}
public void prevEquip()
{
equipIndex--;
if(equipIndex<0)
{
equipIndex=partLoc.length-1;
}
}
public Mat getChoosedEquip()
{
return GameMIDlet.mainRole.getEquipByPart(equipIndex);
}
public void showEquip()
{
int w=125;
int h=125;
int LMargin=width/2-w/2;
int TMargin=height/2-h/2;
g.setColor(0xDAE6D1);
g.fillRect(LMargin,TMargin,w,h); //对话框背景色
g.setColor(0x618E3F);
g.drawRect(LMargin,TMargin,w,h); //外框
Image shadow=Tools.getImage("/pic/roleshadow.png");
g.drawImage(shadow,LMargin+33,TMargin+5,Style.LT);
g.setColor(0x000000);
g.drawString("装备",LMargin+5,TMargin+5,Style.LT);
Mat[] equip=new Mat[6];
g.setFont(Style.font);
for(int i=0;i<equip.length;i++)
{
equip[i]=GameMIDlet.mainRole.getEquipByPart(i);
if(equip[i]!=null)
{
if(equipIndex==i)
{
g.setColor(0xFFFFFF);
}else
{
g.setColor(Style.bgColor);
}
g.fillRect(LMargin+partLoc[i].x,TMargin+partLoc[i].y,Style.font.stringWidth(equip[i].getName())+8,Style.font.getHeight()+4); //底色
g.setColor(0x618E3F);
g.drawRect(LMargin+partLoc[i].x,TMargin+partLoc[i].y,Style.font.stringWidth(equip[i].getName())+8,Style.font.getHeight()+4); //外框
g.setColor(0x000000);
g.drawString(equip[i].getName(),LMargin+partLoc[i].x+4,TMargin+partLoc[i].y+2,Style.LT);
}
else
{
if(equipIndex==i)
{
g.setColor(0xFFFFFF);
}else
{
g.setColor(Style.bgColor);
}
g.fillRect(LMargin+partLoc[i].x,TMargin+partLoc[i].y,34,18); //底色
g.setColor(0x618E3F);
g.drawRect(LMargin+partLoc[i].x,TMargin+partLoc[i].y,34,18); //外框
g.setColor(0x000000);
g.drawString(partName[i],LMargin+partLoc[i].x+17,TMargin+partLoc[i].y,Style.CT);
}
}
}
SkillTab skillTab;
public void showSkill()
{
int w = width-10;
int h = height-10;
int x=width/2-w/2;
int y=height/2-h/2;
g.setColor(Style.bgColor);
g.fillRect(x,y,w,h); //对话框背景色
g.setColor(Style.boardColor);
g.drawRect(x,y,w,h); //外框
int tabX=5;
int tabY=5;
int tabW=w-10;
int tabH=h-10;
if(skillTab==null)
{
skillTab=new SkillTab();
skillTab.setTabName(new String[]{"技能"});
skillTab.setTabIndex(0);
skillTab.setBgColor(Style.bgColor2);
skillTab.setHighLightColor(Style.highLight);
skillTab.setPosition(x+tabX,y+tabY);
skillTab.setW(tabW);
skillTab.setH(tabH);
Vector skillVC = GameMIDlet.mainRole.getSkillVC();
for(int i=0; skillVC!=null && i<skillVC.size(); i++)
{
skillTab.addElement((Skill)skillVC.elementAt(i));
}
}
skillTab.paint(g);
/*
g.setColor(0x618E3F);
for(int i=0;i<=1;i++)
{
for(int j=0;j<=2;j++)
{
g.drawRect(LMargin+5+(32+5)*j,TMargin+10+Style.font.getHeight()+(32+5)*i,32,32);
}
}
*/
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -