?? hall.java
字號:
if (BUTTON_SELECTED > 23
|| (BUTTON_SELECTED % 4 == 1 && BUTTON_SELECTED > 9))
menu_y -= imgmenu[0].getHeight();
break;
}
case 5: {
if (BUTTON_SELECTED > 19
|| ((BUTTON_SELECTED % 5 < 4 ) && BUTTON_SELECTED > 8))
menu_y -= imgmenu[0].getHeight();
break;
}
case 6: {
if (BUTTON_SELECTED > 23
|| ((BUTTON_SELECTED % 6 < 4 ) && BUTTON_SELECTED > 9))
menu_y -= imgmenu[0].getHeight();
break;
}
}
}
// 菜單按鈕編號
final byte detail = 0;// 詳細(xì)信息
final byte makefriend = 1;// 加為好友
final byte vip_kick = 2;// 踢人
final byte invite = 3;// 邀請
final byte close = 4;// 關(guān)閉
final byte lookon = 5;// 旁觀
void drawMenu(Graphics s_g)// 畫菜單
{
Tool.drawImage(s_g, imgmenu[0], menu_x, menu_y);
if (Def.FONTMIDDLE
.stringWidth(Gplayer[(tableChairs[BUTTON_SELECTED] & 0x3f)].Nick) >= 90)
drawNick(s_g, Gplayer[(tableChairs[BUTTON_SELECTED] & 0x3f)].Nick,
Def.COLOR_WHITE, Def.FONTMIDDLE, menu_x + 101 - 40,
menu_y + 2, 90);
else
drawNick(s_g,Gplayer[(tableChairs[BUTTON_SELECTED] & 0x3f)].Nick,Def.COLOR_WHITE,Def.FONTMIDDLE,
menu_x+ 101- Def.FONTMIDDLE.stringWidth(Gplayer[(tableChairs[BUTTON_SELECTED] & 0x3f)].Nick)
/ 2, menu_y + 2, 90);
Tool.drawString(s_g,Game.getRating(Gplayer[(tableChairs[BUTTON_SELECTED] & 0x3f)].Score),
Def.COLOR_WHITE,Def.FONTMIDDLE,menu_x+ 101- Def.FONTMIDDLE.stringWidth(Game
.getRating(Gplayer[(tableChairs[BUTTON_SELECTED] & 0x3f)].Score))/ 2, menu_y + 27);
Tool.drawString(s_g,""+ Gplayer[(tableChairs[BUTTON_SELECTED] & 0x3f)].Gold,Def.COLOR_WHITE,Def.FONTMIDDLE,
menu_x+ 109- Def.FONTMIDDLE.stringWidth(""+ Gplayer[(tableChairs[BUTTON_SELECTED] & 0x3f)]
.Gold)/ 2, menu_y + 52);
Tool.drawString(s_g,""+ Gplayer[(tableChairs[BUTTON_SELECTED] & 0x3f)].Score,
Def.COLOR_WHITE,
Def.FONTMIDDLE,
menu_x+ 101- Def.FONTMIDDLE.stringWidth(""+ Gplayer[(tableChairs[BUTTON_SELECTED] & 0x3f)].Score)
/ 2, menu_y + 77);
Tool.drawString(s_g,""+ Gplayer[(tableChairs[BUTTON_SELECTED] & 0x3f)].Charm,
Def.COLOR_WHITE,
Def.FONTMIDDLE,
menu_x+ 101- Def.FONTMIDDLE.stringWidth(""+ Gplayer[(tableChairs[BUTTON_SELECTED] & 0x3f)].Charm)
/ 2, menu_y + 102);
if (true)
Tool.drawImage(s_g, imgmenu[7], 53 + menu_x, 124 + menu_y); // 目前沒加為好友功能
if (!(isMember() /*&& Gplayer[(tableChairs[BUTTON_SELECTED] & 0x3f)].Property == 0*/))
Tool.drawImage(s_g, imgmenu[7], 53 + menu_x, 151 + menu_y); // 踢人不成立
if (!s_player.playerIsSeat()||s_player.Table_idx==Gplayer[(tableChairs[BUTTON_SELECTED] & 0x3f)].Table_idx)
Tool.drawImage(s_g, imgmenu[8], 1 + menu_x, 179 + menu_y); // 邀請不成立
if (true)
Tool.drawImage(s_g, imgmenu[8], 105 + menu_x, 179 + menu_y); // 目前不允許旁觀
}
short Message_X = 142; short Message_Y = 151;//彈出信息框的位置
final short Button_Kind1_X = 48; final short Button_Kind1_Y = 75;//單個按鈕
final short Button_Kind2_X1 = 0; final short Button_Kind2_Y1 = 75;//兩個按鈕
final short Button_Kind2_X2 = 96; final short Button_Kind2_Y2 = 75;
final short Time_X = 66; final short Time_Y = 80;//時間坐標(biāo)
final short Time_WIDTH = 30; final short Time_HEIGHT = 17;//時間背景框坐標(biāo)
Image MessageBuffer = Image.createImage(162, 102);
Graphics Message_g = MessageBuffer.getGraphics();
void drawMessage()//畫彈出框
{
needupdata_message = true;
messageString.delete(0, messageString.length());
popMessage = true;
Tool.drawRegion(Message_g, imgBg, Message_X, Message_Y, MessageBuffer.getWidth(),
MessageBuffer.getHeight(), 0, 0, 0);
Message_g.drawImage(imgHallres2[0], 0, 0, Def.TOPLEFT);
if((messagetype & 0x01) != 0){//畫確定
Message_g.drawImage(imgHallres[8], Button_Kind1_X, Button_Kind1_Y, Def.TOPLEFT);
}else if((messagetype & 0x02) != 0){//畫同意or不同意
Message_g.drawImage(imgHallres2[1], Button_Kind2_X1, Button_Kind2_Y1, Def.TOPLEFT);
Message_g.drawImage(imgHallres2[3], Button_Kind2_X2, Button_Kind2_Y2, Def.TOPLEFT);
}else if((messagetype & 0x04) != 0){//畫是or不是
Message_g.drawImage(imgHallres2[5], Button_Kind2_X1, Button_Kind2_Y1, Def.TOPLEFT);
Message_g.drawImage(imgHallres2[7], Button_Kind2_X2, Button_Kind2_Y2, Def.TOPLEFT);
}
if((messagetype & 0x10) == 0){//計時
nowtime = 0 ;
now_usertime = 10;
}
}
void drawMessageString(){//畫對話框字符串
if(Def.FONTMIDDLE.stringWidth(messageString.toString()) > 150)
{
short tmplength = (short) messageString.toString().length();
if(tmplength>20){
Tool.drawString(Message_g, messageString.toString().substring(0, tmplength/3), Def.COLOR_WHITE,Def.FONTMIDDLE,
(MessageBuffer.getWidth()>>1)-(Def.FONTMIDDLE.stringWidth(messageString.toString().substring(0, tmplength/3))>>1), 2);
Tool.drawString(Message_g, messageString.toString().substring(tmplength/3, (tmplength/3)<<1), Def.COLOR_WHITE,Def.FONTMIDDLE,
(MessageBuffer.getWidth()>>1)-(Def.FONTMIDDLE.stringWidth(messageString.toString().substring(tmplength/3, (tmplength/3)<<1))>>1), 25);
Tool.drawString(Message_g, messageString.toString().substring((tmplength/3)<<1, tmplength), Def.COLOR_WHITE,Def.FONTMIDDLE,
(MessageBuffer.getWidth()>>1)-(Def.FONTMIDDLE.stringWidth(messageString.toString().substring((tmplength/3)<<1, tmplength))>>1), 48);
}else{
Tool.drawString(Message_g, messageString.toString().substring(0, tmplength>>1), Def.COLOR_WHITE,Def.FONTMIDDLE,
(MessageBuffer.getWidth()>>1)-(Def.FONTMIDDLE.stringWidth(messageString.toString().substring(0, tmplength>>1))>>1), 12);
Tool.drawString(Message_g, messageString.toString().substring(tmplength>>1, tmplength), Def.COLOR_WHITE,Def.FONTMIDDLE,
(MessageBuffer.getWidth()>>1)-(Def.FONTMIDDLE.stringWidth(messageString.toString().substring(tmplength>>1, tmplength))>>1), 42);
}
}else{
Tool.drawString(Message_g, messageString.toString(), Def.COLOR_WHITE,Def.FONTMIDDLE,
(MessageBuffer.getWidth()>>1)-(Def.FONTMIDDLE.stringWidth(messageString.toString())>>1), 37);
}
}
void dealMessageaction(){//處理對話框
if(needupdata_message){
needupdata_message = false;
drawMessageString();
Tool.drawImage(s_g, MessageBuffer, Message_X, Message_Y);
}
if ((messagetype & 0x10) == 0) {// 有計時
if (nowtime == 0) {
nowtime = System.currentTimeMillis();
}
cur_time = (int) (System.currentTimeMillis() - nowtime) / 1000;
Tool.drawRegion(Message_g, imgHallres2[0], Time_X,
Time_Y, Time_WIDTH, Time_HEIGHT, Time_X, Time_Y, 0);
drawNumber(Message_g, Time_X, Time_Y, now_usertime
- cur_time);
Tool.drawRegion(s_g, MessageBuffer, Time_X,
Time_Y, Time_WIDTH, Time_HEIGHT, Message_X+Time_X, Message_Y+Time_Y, 0);
if(now_usertime - cur_time <=0 ){
//目前只有邀請有計時,所以不判斷
// refuseReason = 1;//超時
// _commu.formatSendPack(RESPONSE_PLAYER_RES);
needupdata = true;
popMessage = false;
}
}
}
void dealMessageactionAction(){//處理對話框動作
if((messagetype&0x02)!=0){//同意or不同意
if(messageselect == 0){//同意
if(getFreeSeat()!=-1){
_commu.formatSendPack(GR_USER,USER_SIT_REQ);
// return;
}else{
messagetype &= 0x00;
messagetype |= 0x11;// 不計時確定
drawMessage();
messageString.append("該桌座位已滿");
// return;
}
}else{//不同意
// refuseReason = 0;
// _commu.formatSendPack(RESPONSE_PLAYER_RES);
}
}
if((messagetype&0x04)!=0){//是or不是
if(messageselect == 0){//是
switch (infoactiontype) {
case 1:
if(s_player.Charm > Gplayer[tableChairs[BUTTON_SELECTED] & 0x3f].Charm)
_commu.formatSendPack(GR_MEMBER_ORDER,MEMBER_KICKUSER_REQ);//發(fā)送踢人包
else {
messagetype &= 0x00;
messagetype |= 0x11;// 不計時確認(rèn)按鈕
drawMessage();
messageString.append("魅力必須大于對方才能使對方離開");
}
break;
default:
s_midlet.goToReturnURL();
// s_midlet.destroyApp(true);
break;
}
}
}
if((messagetype&0x01)!=0){//確定
if(infotype == 4103)
s_bRunning = false;
}
popMessage = false;
needupdata = true;
}
void dealHallAction(){//處理大廳確定動作
if ((tableChairs[BUTTON_SELECTED] & 0x40) == 0)// 沒人
{
_commu.formatSendPack(GR_USER,USER_SIT_REQ);
} else {
if ((tableChairs[BUTTON_SELECTED] & 0x3f) == 37)// 自己
{
_commu.formatSendPack(GR_USER,USER_STANDUP_REQ);
} else // 別人
{
OpenMenu = true;
setMenuPos();
MENU_SELECTED = 0;// 默認(rèn)位置在"詳細(xì)信息"上
short pos_x = (short) (START_CHAIR_X
+ (BUTTON_SELECTED / chairsPerTable % tablePerLine)
* DISTANCE_X + chairsBounds[BUTTON_SELECTED
% chairsPerTable][0]);
short pos_y = (short) (START_CHAIR_Y
+ DISTANCE_Y
* (BUTTON_SELECTED / (chairsPerTable * tablePerLine)) + chairsBounds[BUTTON_SELECTED
% chairsPerTable][1]);
Tool.drawRect(s_g, Def.COLOR_BUTTON_SELECTED1,
pos_x - 1, pos_y - 1, 32 + 2, 32 + 2);
Tool.drawRect(s_g, Def.COLOR_BUTTON_SELECTED1,
pos_x, pos_y, 32, 32);
drawMenu(s_g);
}
}
}
//是否達(dá)到踢人條件
boolean isMember(){
if(s_player.Table_idx == Gplayer[tableChairs[BUTTON_SELECTED] & 0x3f].Table_idx && s_player.MemberLevel == 1)
return true;
return false;
}
void dealMenuAction(){//處理菜單相應(yīng)動作
switch (MENU_SELECTED) {
case detail: {
needupdata_info = true;
info_player = Gplayer[(tableChairs[BUTTON_SELECTED] & 0x3f)];
switchHallStatus(HALL_STATUS_SHOWINFO);
break;
}
case makefriend: {
break;
}
case vip_kick: {
if (isMember()
/*&& Gplayer[(tableChairs[BUTTON_SELECTED] & 0x3f)].Property == 0*/){ // 自己是會員
// _commu.formatSendPack(GR_MEMBER_ORDER,MEMBER_KICKUSER_REQ);
messagetype &= 0x00;
messagetype |= 0x14;// 不計時是否按鈕
infoactiontype = 1;
drawMessage();
messageString.append("踢人需要扣除10點魅力,是否執(zhí)行?");
}
break;
}
case invite: {
if (s_player.playerIsSeat())// 玩家自己坐著
_commu.formatSendPack(GR_USER,USER_INVITE_REQ);
break;
}
case close: {
OpenMenu = false;
needupdata = true;
break;
}
case lookon: {
break;
}
}
}
//畫自己的人物信息
void drawSelfPlayerInfo(){
Tool.drawImage(bg, imgPortrait[0], 484,131 );
Tool.drawImage(bg, imgPortrait[s_player.Portrait+1], 484,131 );
Tool.drawString(bg, "昵稱", Def.COLOR_WHITE, Def.FONTMIDDLE, 455, 167);
Tool.drawString(bg, "等級", Def.COLOR_WHITE, Def.FONTMIDDLE, 455, 167+23);
Tool.drawString(bg, "游戲幣", Def.COLOR_WHITE, Def.FONTMIDDLE, 455, 167+23*2);
Tool.drawString(bg, "分?jǐn)?shù)", Def.COLOR_WHITE, Def.FONTMIDDLE, 455, 167+23*4);
drawNick(bg, s_player.Nick, Def.COLOR_YELLOW, Def.FONTMIDDLE, 488, 167, 70);
Tool.drawString(bg, Game.getRating(s_player.Score), Def.COLOR_YELLOW, Def.FONTMIDDLE, 488, 167+23);
Tool.drawString(bg, ""+s_player.Gold, Def.COLOR_YELLOW,
Def.FONTMIDDLE, 506 - Def.FONTMIDDLE.stringWidth(""+s_player.Gold)/2, 167+23*3);
Tool.drawString(bg, ""+s_player.Score, Def.COLOR_YELLOW,
Def.FONTMIDDLE, 506 - Def.FONTMIDDLE.stringWidth(""+s_player.Score)/2, 167+23*5);
}
//畫人物詳細(xì)信息
void drawDetailPlayerInfo(){
Tool.drawImage(bg, imghallbg, 0, 0, 443, 420);
Tool.drawLine(bg, Def.COLOR_WHITE, Def.VL_INFO_POS_X + 15,
Def.VL_INFO_POS_Y + Def.VL_INFO_HEIGHT / 2 - 20,
Def.VL_INFO_POS_X + Def.VL_INFO_WIDTH - 15,
Def.VL_INFO_POS_Y + Def.VL_INFO_HEIGHT / 2 - 20);
Tool.fillRect(bg, Def.COLOR_GRAY, Def.VL_INFO_PORTAIT_POS_X,
Def.VL_INFO_PORTAIT_POS_Y, 50, 50);
Tool.drawImage(bg, imgPortrait[info_player.Portrait+1],
Def.VL_INFO_PORTAIT_POS_X + 10,
Def.VL_INFO_PORTAIT_POS_Y + 10);
Tool.drawString(bg,
Tool.stringAdd("昵稱:", info_player.Nick),
Def.COLOR_WHITE, Def.FONTMIDDLE, Def.VL_INFO_UP_POS_X,
Def.VL_INFO_NICK_POS_Y);
Tool.drawString(bg, Tool.stringAdd("性別:",
info_player.Sex == 0 ? "女" : "男"),
Def.COLOR_WHITE, Def.FONTMIDDLE, Def.VL_INFO_UP_POS_X,
Def.VL_INFO_SEX_POS_Y);
Tool.drawString(bg, Tool.stringAdd("等級:", Game
.getRating(info_player.Score)), Def.COLOR_WHITE,
Def.FONTMIDDLE, Def.VL_INFO_UP_POS_X,
Def.VL_INFO_RATING_POS_Y);
Tool.drawString(bg, Tool.stringAdd("勝利盤數(shù):", Integer
.toString(info_player.Win)), Def.COLOR_YELLOW,
Def.FONTMIDDLE, Def.VL_INFO_DOWN1_POS_X,
Def.VL_INFO_EFFORT_POS_Y);
Tool.drawString(bg, Tool.stringAdd("失敗盤數(shù):", Integer
.toString(info_player.Lost)), Def.COLOR_YELLOW,
Def.FONTMIDDLE, Def.VL_INFO_DOWN1_POS_X,
Def.VL_INFO_CHARM_POS_Y);
Tool.drawString(bg, Tool.stringAdd("和局盤數(shù):", Integer
.toString(info_player.Deuce)), Def.COLOR_YELLOW,
Def.FONTMIDDLE, Def.VL_INFO_DOWN1_POS_X,
Def.VL_INFO_FORTUNE_POS_Y);
Tool.drawString(bg, Tool.stringAdd("斷線盤數(shù):", Integer
.toString(info_player.OffLine)), Def.COLOR_YELLOW,
Def.FONTMIDDLE, Def.VL_INFO_DOWN1_POS_X,
Def.VL_INFO_MORAL_POS_Y);
Tool.drawString(bg, Tool.stringAdd("積分:", Integer
.toString(info_player.Score)), Def.COLOR_YELLOW,
Def.FONTMIDDLE, Def.VL_INFO_DOWN2_POS_X,
Def.VL_INFO_SCORE_POS_Y);
Tool.drawString(bg, Tool.stringAdd("游戲幣:", Integer
.toString(info_player.Gold)), Def.COLOR_YELLOW,
Def.FONTMIDDLE, Def.VL_INFO_DOWN2_POS_X,
Def.VL_INFO_GOLD_POS_Y);
Tool.drawString(bg, Tool.stringAdd("魅力:", Integer
.toString(info_player.Charm)),
Def.COLOR_YELLOW, Def.FONTMIDDLE,
Def.VL_INFO_DOWN2_POS_X, Def.VL_INFO_WIN_POS_Y);
Tool.drawString(bg, Tool.stringAdd("勝率:",
formatRatio(info_player.Ratio)), Def.COLOR_YELLOW,
Def.FONTMIDDLE, Def.VL_INFO_DOWN2_POS_X,
Def.VL_INFO_RATIO_POS_Y);
updateBg(true);
}
/** 繪制玩家的昵稱,當(dāng)玩家的昵稱過長時到一定的位置后以"..."替代 */
static void drawNick(Graphics g, String name, int RGB, Font f, int pos_X,
int pos_Y, int maxLength) {
if (name == null)
return;
int strLenth = f.stringWidth(name);
if (strLenth > maxLength) {
String subStr = null;
char[] chars = name.toCharArray();
int length = 0;
for (int i = 0; i < chars.length; i++) {
int len = f.charWidth(chars[i]);
if (length > maxLength - 20) {
subStr = name.substring(0, i);
break;
}
length += len;
}
Tool.drawString(g, subStr + "...", RGB, f, pos_X, pos_Y);
} else {
Tool.drawString(g, name, RGB, f, pos_X, pos_Y);
}
}
void switchHallStatus(byte hallStatus) {
needupdata = true;
clearkey();
s_hallState = hallStatus;
}
static short m_LoadingProgress;
static int m_loadingDrawState;
Image[] imgLoad;
// 六人專用 長按鈕資源條 不是六人時丟棄
final byte LONGBUTTON_WIDTH = 89;
final byte LONGBUTTON_HEIGHT = 36;
Image longbutton_normal = Image.createImage(LONGBUTTON_WIDTH,
LONGBUTTON_HEIGHT);
Graphics longbutton_normal_g = longbutton_normal.getGraphics();
Image longbutton_ingame = Image.createImage(LONGBUTTON_WIDTH,
LONGBUTTON_HEIGHT);
Graphics longbutton_ingame_g = longbutton_ingame.getGraphics();
// 讀取資源狀態(tài)分化
static byte m_LoadingState;
final byte k_LoadingInit = 0;
final byte k_LoadingHallPortrait = k_LoadingInit + 1;
final byte k_LoadingHallBg = k_LoadingHallPortrait + 1;
final byte k_LoadingHallres1 = k_LoadingHallBg + 1;
final byte k_LoadingHallres2 = k_LoadingHallres1 + 1;
final byte k_LoadingHallmenu = k_LoadingHallres2 + 1;
final byte k_LoadingConnectNet = k_LoadingHallmenu + 1;
final byte k_LoadingCheckServer = k_LoadingConnectNet + 1;
final byte k_LoadingLogin = k_LoadingCheckServer + 1;
final byte k_LoadingDataComplete = k_LoadingLogin + 1;
final byte k_LoadingDataComplete_2 = k_LoadingDataComplete + 1;
final byte k_LoadingDrawHallbg = k_LoadingDataComplete_2 + 1;
final byte k_LoadingDataChairs = k_LoadingDrawHallbg + 1;
final byte k_LoadingEnd = k_LoadingDataChairs + 1;
/**
* 讀取大廳資源
*/
boolean loadResource() {
switch (m_LoadingState) {
case k_LoadingInit: {
Tool.setDis(new DataInputStream(s_midlet.getClass()
.getResourceAsStream("/loading.png")));
imgLoad = Tool.loadImages();
m_LoadingState = k_LoadingHallPortrait;
m_LoadingProgress += 5;
return false;
}
case k_LoadingHallPortrait: {
Tool.setDis(new DataInputStream(s_midlet.getClass()
.getResourceAsStream("/chairs.png")));
imgPortrait = Tool.loadImages();
m_LoadingState = k_LoadingHallBg;
m_LoadingProgress += 5;
break;
}
case k_LoadingHallBg: {
Tool.setDis(new DataInputStream(s_midlet.getClass()
.getResourceAsStream("/hallbg.png")));
imgbgpic = Tool.loadImages();
imghallbg = Image.createImage(Def.CANVAS_WIDTH, Def.CANVAS_HEIGHT);
hallbg = imghallbg.getGraphics();
Tool.drawImage(hallbg, imgbgpic[0], 0, 0);
Tool.drawImage(hallbg, imgbgpic[1], imgbgpic[0].getWidth(), 0);
Tool.drawImage(hallbg, imgbgpic[2], 0, imgbgpic[0].getHeight());
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -