📄 menuwindow.java
字号:
private static final int STRING_RATE_GAME = 130;
private static final int STRING_LEADERBOARD = 131;
private static final int STRING_REGISTER_ON = 132;
private static final int STRING_GAME_LOBBY_Q = 133;
private static final int STRING_TO_GAME_LOBBY = 134;
private static final int STRING_WELCOME = 135;
private static final int RESFILE_COMMON = 136;
private static final int RESFILE_COUNTRY = 137;
private static final int RESFILE_GFX = 138;
private static final int RESFILE_AUDIO = 139;
// defines from GameData
// we never have more than a few gates on the screen at once
// we're only going to store animation data for a few gates
// we'll pad it a bit to take into account the fact that the
// skier still moves while the gates animate.
//#ifdef _HIRES_GRAPHICS
////#define HURDLE_XOFF 12
////#define HURDLE_HEIGHT 31 // in pixels
////#define SHOOTINGREF_HEIGHT 54
////#define PIXEL_PER_M 24
////#define M_PER_PIXEL 2731
//#else
//#endif
//#define MAX_PLAYERS 4
//#ifndef _MAX_HUMAN_PLAYERS
//#endif
// Virtual key codes
// COLORS (RGB)
//#ifdef _LOW_DETAIL
//#else
////#define COLOR_SKY 0xc1ccf5
//#endif
//#ifdef _MULTI_LANG
////#define LANG_COUNT 5
//#else
//#endif
//#ifndef _LIMITED_EVENTS
//
////#define EVENT_SKI_JUMP 1
////#define EVENT_BIATHLON 2
////#define EVENT_SKIING 3
////#define EVENT_COUNT 4
////#define EVENT_COMPETITION 4
//
//#else
//#endif
//#ifdef _IS_NokiaS40
//// #define SOUND_COUNT 5
//#elif defined(_IS_NokiaS60) && !defined(_MMAPI)
//// #define SOUND_CROWD 5
//// #define SOUND_CRASH 6
//// #define SOUND_COUNT 7
//#elif defined(_LIMITED_SOUNDS)
//// #define SOUND_CRASH 5
//// #define SOUND_COUNT 6
//#else
//#endif
//#endif
//#ifdef _DEBUG
////#define DUMP_EXCEPTION(e) { //System.out.println( e.getMessage()); e.printStackTrace(); }
////#define DUMP_EXCEPTION_MSG(e,msg) { //System.out.println( msg + "\n" + e.getMessage()); e.printStackTrace(); }
////#define DEBUG_MSG(msg) //System.out.println(msg)
//#else
//#endif
//#ifdef _PROFILE
////#define START_TIMER(a) a = System.currentTimeMillis();
////#define STOP_TIMER(a) a = System.currentTimeMillis() - a;
//#else
//#endif
private final static int LABEL_TITLE = 0;
private final static int LABEL_NORMAL = 1;
private final static int LABEL_HIGHLIGHT = 2;
public final static int MENU_NONE = -1;
public final static int MENU_MAIN = 0;
public final static int MENU_SELECTPLAYERS = 1;
public final static int MENU_SELECTCOUNTRY = 2;
public final static int MENU_SELECTEVENT = 3;
public final static int MENU_EVENTRESULTS = 4;
public final static int MENU_STANDINGS = 5;
public final static int MENU_ENTERNAME = 6;
public final static int MENU_INSTRUCTIONS = 7;
public final static int MENU_ABOUT = 8;
public final static int MENU_SETTINGS = 9;
public final static int MENU_RESUMEGAME = 10;
public final static int MENU_LOCALRECORDS = 11;
public final static int MENU_EVENTMENU = 12;
public final static int MENU_ONLINE = 13;
public final static int MENU_RECORDS = 14;
public final static int MENU_ONLINERECORDS = 15;
public final static int MENU_SELECTLANGUAGE = 16;
public final static int MENU_SPLASH = 17;
public final static int MENU_GAMELOBBYPROMPT = 18;
public final static int MENU_PLAY = 19;
//#ifndef _IS_SPRINT
//#ifndef _NO_ONLINE
//#ifndef _NO_GHOST
// public final static int MENU_CHALLENGE = 20;
//#endif
//#endif
//#endif
public final static int MENU_COUNT = 21;
private final static int ITEM_MAIN_PLAY = 0;
private final static int ITEM_MAIN_SETTINGS = 1;
private final static int ITEM_MAIN_HELP = 2;
private final static int ITEM_MAIN_RECORDS = 3;
private final static int ITEM_MAIN_ABOUT = 4;
private final static int ITEM_MAIN_EXIT = 5;
private final static int ITEM_PLAY_COMPETITION = 0;
private final static int ITEM_PLAY_PRACTICE = 1;
//#ifndef _NO_GHOST
// private final static int ITEM_PLAY_CHALLENGE = 2;
//#endif
//#ifndef _IS_SPRINT
//#ifndef _NO_ONLINE
//#ifndef _NO_GHOST
// private final static int ITEM_CHALLENGE_LOCAL_TEN = 0;
// private final static int ITEM_CHALLENGE_ONLINE_TEN = 1;
// private final static int ITEM_CHALLENGE_NAME_SEARCH = 2;
//#endif
//#endif
//#endif
private final static int ITEM_EVENT_PLAY = 0;
private final static int ITEM_EVENT_HELP = 1;
private final static int ITEM_EVENT_SETTINGS_MC = 1;
private final static int ITEM_EVENT_SETTINGS = 2;
private final static int ITEM_EVENT_EXIT_MC = 2;
private final static int ITEM_EVENT_EXIT = 3;
private final static int ITEM_NEW_TIME = 4;
private final static int ITEM_ONLINE_LOCAL = 0;
private final static int ITEM_ONLINE_ONLINE = 1;
private final static int ITEM_RECORDS_LOCAL = 0;
//#ifdef _IS_SPRINT
// private final static int ITEM_RECORDS_GAMELOBBY = 1;
// private final static int ITEM_RECORDS_RATEGAME = 2;
// private final static int ITEM_RECORDS_LEADERBOARD = 3;
//#else
private final static int ITEM_RECORDS_ONLINE = 1;
//#endif
private final static int ITEM_RESUME_RESUME = 0;
private final static int ITEM_RESUME_QUIT = 1;
private final static int ITEM_SETTINGS_DIFFICULTY = 0;
//#ifdef _NO_SOUND
// private final static int ITEM_SETTINGS_TIPS = 1;
//#ifdef _MULTI_LANG
// private final static int ITEM_SETTINGS_SELECTLANG = 2;
// private final static int ITEM_SETTINGS_RESETRECORDS = 3;
//#ifdef _SPRINT_MRC
// private final static int ITEM_SETTING_CANCEL_MRC = 4;
// private final static int ITEM_SETTINGS_NAME = 5;
// private final static int ITEM_SETTINGS_COUNT = 6;
//#else
// private final static int ITEM_SETTINGS_NAME = 4;
// private final static int ITEM_SETTINGS_COUNT = 5;
//#endif
//
//#else
//#ifdef _SPRINT_MRC
// private final static int ITEM_SETTINGS_RESETRECORDS = 2;
// private final static int ITEM_SETTING_CANCEL_MRC = 3;
// private final static int ITEM_SETTINGS_NAME = 4;
// private final static int ITEM_SETTINGS_COUNT = 5;
//#else
// private final static int ITEM_SETTINGS_RESETRECORDS = 2;
// private final static int ITEM_SETTINGS_NAME = 3;
// private final static int ITEM_SETTINGS_COUNT = 4;
//#endif
//#endif
//// private final static int MAX_MENU_ITEMS = 5;
//#else // _NO_SOUND
private final static int ITEM_SETTINGS_SOUND = 1;
private final static int ITEM_SETTINGS_TIPS = 2;
//#ifdef _MULTI_LANG
//
//#ifdef _SPRINT_MRC
// private final static int ITEM_SETTINGS_SELECTLANG = 3;
// private final static int ITEM_SETTINGS_RESETRECORDS = 4;
// private final static int ITEM_SETTING_CANCEL_MRC = 5;
// private final static int ITEM_SETTINGS_NAME = 6;
// private final static int ITEM_SETTINGS_COUNT = 7;
//#else
// private final static int ITEM_SETTINGS_SELECTLANG = 3;
// private final static int ITEM_SETTINGS_RESETRECORDS = 4;
// private final static int ITEM_SETTINGS_NAME = 5;
// private final static int ITEM_SETTINGS_COUNT = 6;
//#endif
//
//#else
//#ifdef _SPRINT_MRC
// private final static int ITEM_SETTINGS_RESETRECORDS = 3;
// private final static int ITEM_SETTING_CANCEL_MRC = 4;
// private final static int ITEM_SETTINGS_NAME = 5;
// private final static int ITEM_SETTINGS_COUNT = 6;
//#else
private final static int ITEM_SETTINGS_RESETRECORDS = 3;
private final static int ITEM_SETTINGS_NAME = 4;
private final static int ITEM_SETTINGS_COUNT = 5;
//#endif
//#endif
// private final static int MAX_MENU_ITEMS = 6;
//#endif
private final static int MAX_MENU_ITEMS = 6;
// map menu ids to title strings
private final static int s_aiMenuTitles[] =
{
STRING_MAIN_MENU,
//#ifndef _IS_SPRINT
STRING_SELECT_PLAYERS,
//#else
// 0,
//#endif
STRING_SELECT_COUNTRY,
STRING_SELECT_EVENT,
STRING_EVENT_RESULTS,
STRING_STANDINGS,
//#ifndef _IS_SPRINT
STRING_ENTER_NAME,
//#else
// 0,
//#endif
STRING_INSTRUCTIONS,
STRING_ABOUT,
STRING_SETTINGS,
STRING_GAME_IN_PROGRESS,
0, // local records
0, // event menu
//#if !defined(_NO_ONLINE) && !defined(_IS_SPRINT)
// STRING_GAME_TYPE,
//#else
0,
//#endif
STRING_RECORDS,
//#if !defined(_NO_ONLINE) && !defined(_IS_SPRINT)
// STRING_ONLINE_TOP_TEN,
//#else
0,
//#endif
//#ifdef _MULTI_LANG
// STRING_SELECT_LANGUAGE,
//#else
0,
//#endif
0, // splash
0,
STRING_GAME_TYPE
//#ifndef _NO_GHOST
// ,
// STRING_CHALLENGE
//#endif
};
private GameData m_data;
public int m_iMenuID = MENU_NONE;
private int m_iSelection = 0;
private int m_iNextEvent;
private int m_iFillHeight;
private int m_iFillY;
private int m_iTextY;
private int m_iDispNumScores;
private int m_iCurrentScoreNum;
private int m_iTotalRecords;
private int m_iCurrentGhostRecord;
private TextControl m_textControl;
private Window m_menuContainer;
private Label m_title;
private Label m_aMenuItems[];
private int m_iMenuItemCount;
private Label m_countryLabel;
private Label m_keyPrompt;
private Label m_noLocalRecords;
private Sprite m_arrowUp;
private Sprite m_arrowDown;
//#ifdef _IS_SPRINT
// private Label m_welcomePrompt;
//#endif
private Sprite m_flagSprite;
//#ifdef _IS_SPRINT
// private boolean m_bLoggingIn;
//#endif
//#ifdef _KEEP_SMALL_FLAGS_LOADED
//#ifdef _IS_NokiaS60
// private static short[] m_smallFlagsImage;
//#else
// private static Image m_smallFlagsImage;
//#endif
//#endif
//#ifndef _NO_ONLINE
// private final static int STATE_IDLE = 0;
// private final static int STATE_ENTERNAME_GETNAME = 1;
// private final static int STATE_ENTERNAME_SETNAME = 2;
// private final static int STATE_SENDINGSCORE = 3;
// private final static int STATE_GETTINGRANK = 4;
// private final static int STATE_GETTINGSCORES = 5;
// private final static int STATE_WAITING = 6;
//#endif
private Label m_eventLabel;
private Label m_aNames[];
private Label m_aScores[];
private Window m_scoreList;
private String m_asHighScoreNames[];
private int m_aiHighScores[];
private String m_sName;
private Label m_nameLabel;
//#ifndef _NO_ONLINE
// private Label m_scoreLabel;
//#endif
private int m_iFlashTime;
private int m_iLastKeyTime;
private int m_iLastTextKeyPressed;
private int m_iCursorOffset;
private int m_iCursorIndex;
private int m_iKeyCount;
private boolean m_bCursorFlash = false;
private Label m_statusLabel;
//#ifdef _IS_SPRINT
// private Label m_statusLabel2;
//#endif
private Window m_eventStack;
//#ifndef _NO_ONLINE
// private int m_iState = STATE_IDLE;
// private boolean m_bOnlineWait = false;
// private boolean m_bOnlineError = false;
// private Thread m_jciThread;
//#endif
public MenuWindow( TorinoCanvas canvas ) throws IOException
{
super( canvas );
setDimensions( m_canvas.m_iScreenWidth, m_canvas.getCanvasHeight() );
m_data = m_canvas.m_gameData;
//#ifndef _NO_MENU_GRAPHICS
// // create top and bottom sprites
//#ifdef _IS_NokiaS60
// short[] src = TorinoCanvas.loadPackedPalPixels( RESFILE_MENU, RES_MENUBOTTOM,
// RESFILE_MENU, RES_MENUBOTTOM+1 );
//#else
// Image src = TorinoCanvas.loadPackedImage( RESFILE_COMMON, RES_MENUBOTTOM );
//#endif
// Sprite bottom = new Sprite( src );
// addToFront( bottom );
//
//#ifdef _IS_NokiaS60
// src = TorinoCanvas.loadPackedPalPixels( RESFILE_MENU, RES_MENUTOP,
// RESFILE_MENU, RES_MENUTOP+1 );
//#else
// src = TorinoCanvas.loadPackedImage( RESFILE_COMMON, RES_MENUTOP );
//#endif
// Sprite top = new Sprite( src );
// addToFront( top );
//
// // determine layout based on display size
// m_iFillHeight = m_iHeight - bottom.m_iHeight - top.m_iHeight;
// if (m_iFillHeight < 110/*@MIN_FILL_HEIGHT*/)
// m_iFillHeight = 110/*@MIN_FILL_HEIGHT*/;
// if (m_iFillHeight > m_iHeight - 1/*@MIN_TOP_HEIGHT*/ - 1/*@MIN_BOTTOM_HEIGHT*/)
// m_iFillHeight = m_iHeight - 1/*@MIN_TOP_HEIGHT*/ - 1/*@MIN_BOTTOM_HEIGHT*/;
//
// int iBottom = m_iFillHeight + 1/*@MIN_TOP_HEIGHT*/;
// if (iBottom + bottom.m_iHeight < m_iHeight)
// iBottom = m_iHeight - bottom.m_iHeight;
//
// int iTop = iBottom - m_iFillHeight - top.m_iHeight;
// m_iFillY = iTop + top.m_iHeight;
//
// top.setPosition( 0, iTop );
// bottom.setPosition( 0, iBottom );
// top.setAlignment( Drawable.ALIGNH_CENTER );
// bottom.setAlignment( Drawable.ALIGNH_CENTER );
//#else
m_iFillHeight = m_iHeight;
m_iFillY = 0;
//#endif
m_iTextY = m_iFillY + 3/*@TEXT_OFFSET*/;
m_title = createMenuLabel( LABEL_TITLE );
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -