From e45611b90966bdc1b5624e7cf7f14c5b564eb540 Mon Sep 17 00:00:00 2001 From: "nethack.allison" Date: Tue, 29 Mar 2005 03:58:23 +0000 Subject: [PATCH] smartphone keypad input tweaks (from ) wrote: > Some keypad input tweaks for Smartphone port: > - added "Type Cmd" command that allows to type arbitrary commands using > phone keypad > - added Q(quiver) command to "Attack" layout > - fixed F command to prompt for direction > > >>2) I can't find a way to do the equivalent of d and the >>same for picking up (for example when multiple rations are on top of each >>other and you can only afford 1) >> >>3) I can't find a way to change the quiver (the Q command) --- sys/wince/mhcmd.c | 4 ++-- sys/wince/mhmain.c | 42 +++++++++++++++++++++++++++++++++--------- sys/wince/resource.h | 5 +++-- sys/wince/winhcksp.rc | 12 +++++++----- 4 files changed, 45 insertions(+), 18 deletions(-) diff --git a/sys/wince/mhcmd.c b/sys/wince/mhcmd.c index 0ff3b7622..b83ec6b90 100644 --- a/sys/wince/mhcmd.c +++ b/sys/wince/mhcmd.c @@ -203,7 +203,7 @@ NHCmdPadCell cells_layout_attack[NH_CMDPAD_CELLNUM] = { -1, "a", "a", -NH_CMDPAD_FONT_NORMAL, NH_CELL_REG, 1, (void*)-1 }, { -1, "q", "q", -NH_CMDPAD_FONT_NORMAL, NH_CELL_REG, 1, (void*)-1 }, { -1, "\x04", "^D", -NH_CMDPAD_FONT_NORMAL, NH_CELL_REG, 1, (void*)-1 }, - { -1, "F", "F", -NH_CMDPAD_FONT_NORMAL, NH_CELL_REG, 1, (void*)-1 }, + { -1, "F", "F", -NH_CMDPAD_FONT_NORMAL, NH_CELL_REG, 1, (void*)NH_LAYOUT_MOVEMENT }, { -1, "X", "X", 13, NH_CELL_LAYOUT_MENU, 1 , 0 } }; @@ -216,7 +216,7 @@ NHCmdPadCell cells_layout_item_handling[NH_CMDPAD_CELLNUM] = { -1, "T", "T", -NH_CMDPAD_FONT_NORMAL, NH_CELL_REG, 1, (void*)-1 }, { -1, "R", "R", -NH_CMDPAD_FONT_NORMAL, NH_CELL_REG, 1, (void*)-1 }, { -1, "D", "D", -NH_CMDPAD_FONT_NORMAL, NH_CELL_REG, 1, (void*)-1 }, - { -1, "=", "=", -NH_CMDPAD_FONT_NORMAL, NH_CELL_REG, 1, (void*)-1 }, + { -1, "Q", "Q", -NH_CMDPAD_FONT_NORMAL, NH_CELL_REG, 1, (void*)-1 }, { -1, "i", "i", -NH_CMDPAD_FONT_NORMAL, NH_CELL_REG, 1, (void*)-1 }, { -1, "[", "[", -NH_CMDPAD_FONT_NORMAL, NH_CELL_REG, 1, (void*)-1 }, { -1, "A", "A", -NH_CMDPAD_FONT_NORMAL, NH_CELL_REG, 1, (void*)-1 }, diff --git a/sys/wince/mhmain.c b/sys/wince/mhmain.c index 138cd16d7..5f6f3d932 100644 --- a/sys/wince/mhmain.c +++ b/sys/wince/mhmain.c @@ -31,6 +31,7 @@ static void select_map_mode(int map_mode); static int menuid2mapmode(int menuid); static int mapmode2menuid(int map_mode); static HMENU _get_main_menu(UINT menu_id); +static void mswin_direct_command(); HWND mswin_init_main_window () { static int run_once = 0; @@ -915,6 +916,10 @@ LRESULT onWMCommand(HWND hWnd, WPARAM wParam, LPARAM lParam) doset(); break; + case IDM_DIRECT_COMMAND: /* SmartPhone: display dialog to type in arbitary command text */ + mswin_direct_command(); + break; + case IDM_HELP_LONG: display_file(HELP, TRUE); break; @@ -1058,7 +1063,7 @@ void mswin_select_map_mode(int mode) /* update "Fit To Screen" item text */ { TCHAR wbuf[BUFSZ]; - TBBUTTONINFO tbbi; + MENUITEMINFO mi; ZeroMemory( wbuf, sizeof(wbuf) ); if( !LoadString( @@ -1069,15 +1074,17 @@ void mswin_select_map_mode(int mode) panic("cannot load main menu strings"); } - ZeroMemory( &tbbi, sizeof(tbbi) ); - tbbi.cbSize = sizeof(tbbi); - tbbi.dwMask = TBIF_TEXT; - tbbi.pszText = wbuf; - if( !SendMessage( - GetNHApp()->hMenuBar, - TB_SETBUTTONINFO, + ZeroMemory( &mi, sizeof(mi) ); + mi.cbSize = sizeof(mi); + mi.fType = MFT_STRING; + mi.fMask = MIIM_TYPE; + mi.dwTypeData = wbuf; + mi.cch = wcslen(wbuf); + if( !SetMenuItemInfo( + hmenuMap, IDM_MAP_FIT_TO_SCREEN, - (LPARAM)&tbbi) ) { + FALSE, + &mi) ) { error( "Cannot update IDM_MAP_FIT_TO_SCREEN menu item." ); } } @@ -1160,3 +1167,20 @@ HMENU _get_main_menu(UINT menu_id) return hmenuMap; } +/* SmartPhone: display dialog to type arbitrary command text */ +void mswin_direct_command() +{ + char cmd[BUFSZ]; + ZeroMemory(cmd, sizeof(cmd)); + mswin_getlin("Type cmd text", cmd); + if( cmd[0] ) { + /* feed command to nethack */ + char *p = cmd; + cmd[32] = '\x0'; /* truncate at 32 chars */ + while(*p) { + NHEVENT_KBD(*p); + p++; + } + if( cmd[0]!='\033' ) mswin_putstr(WIN_MESSAGE, ATR_NONE, cmd); + } +} diff --git a/sys/wince/resource.h b/sys/wince/resource.h index 63b8d458c..b68489aee 100644 --- a/sys/wince/resource.h +++ b/sys/wince/resource.h @@ -1,6 +1,6 @@ //{{NO_DEPENDENCIES}} // Microsoft Developer Studio generated include file. -// Used by winhack.rc +// Used by winhcksp.rc // #define IDC_MYICON 2 #define IDD_WINHACK_DIALOG 102 @@ -146,13 +146,14 @@ #define IDS_CAP_NORMALMAP 32827 #define IDM_HELP_MENU 32828 #define IDM_VIEW_OPTIONS 32829 +#define IDM_DIRECT_COMMAND 32830 // Next default values for new objects // #ifdef APSTUDIO_INVOKED #ifndef APSTUDIO_READONLY_SYMBOLS #define _APS_NEXT_RESOURCE_VALUE 155 -#define _APS_NEXT_COMMAND_VALUE 32830 +#define _APS_NEXT_COMMAND_VALUE 32831 #define _APS_NEXT_CONTROL_VALUE 1334 #define _APS_NEXT_SYMED_VALUE 110 #endif diff --git a/sys/wince/winhcksp.rc b/sys/wince/winhcksp.rc index 09a79b4be..15d67f34e 100644 --- a/sys/wince/winhcksp.rc +++ b/sys/wince/winhcksp.rc @@ -37,12 +37,13 @@ IDI_WINHACK ICON DISCARDABLE "..\\..\\wince\\NETHACK.ICO" IDC_WINHACK MENU DISCARDABLE BEGIN - MENUITEM "Entire Map", IDM_MAP_FIT_TO_SCREEN + MENUITEM "Type Cmd", IDM_DIRECT_COMMAND POPUP "Menu" BEGIN MENUITEM "Options", IDM_VIEW_OPTIONS MENUITEM "Keypad", IDM_VIEW_KEYPAD MENUITEM SEPARATOR + MENUITEM "Entire Map", IDM_MAP_FIT_TO_SCREEN MENUITEM "ASCII", IDM_MAP_ASCII8X8 MENUITEM "Use Tiles", IDM_MAP_TILES MENUITEM SEPARATOR @@ -232,7 +233,7 @@ END IDC_WINHACK SHMENUBAR DISCARDABLE BEGIN IDC_WINHACK, 2, - I_IMAGENONE, IDM_MAP_FIT_TO_SCREEN, TBSTATE_ENABLED, TBSTYLE_AUTOSIZE, IDM_MAP_FIT_TO_SCREEN, 0, NOMENU, + I_IMAGENONE, IDM_DIRECT_COMMAND, TBSTATE_ENABLED, TBSTYLE_AUTOSIZE, IDM_DIRECT_COMMAND, 0, NOMENU, I_IMAGENONE, ID_VIEW, TBSTATE_ENABLED, TBSTYLE_DROPDOWN | TBSTYLE_AUTOSIZE, IDS_CAP_VIEW, 0, 1, END @@ -252,8 +253,8 @@ END // VS_VERSION_INFO VERSIONINFO - FILEVERSION 3,4,1,0 - PRODUCTVERSION 3,4,1,0 + FILEVERSION 3,5,0,0 + PRODUCTVERSION 3,5,0,0 FILEFLAGSMASK 0x3fL #ifdef _DEBUG FILEFLAGS 0x9L @@ -276,7 +277,7 @@ BEGIN VALUE "LegalCopyright", "Copyright © 2005\0" VALUE "LegalTrademarks", "\0" VALUE "OriginalFilename", "nethackm.exe\0" - VALUE "PrivateBuild", "050102\0" + VALUE "PrivateBuild", "050309\0" VALUE "ProductName", "NetHack For Smartphone\0" VALUE "ProductVersion", "3, 5, 0, 0\0" VALUE "SpecialBuild", "\0" @@ -305,6 +306,7 @@ END STRINGTABLE DISCARDABLE BEGIN IDM_MAP_FIT_TO_SCREEN "Entire Map" + IDM_DIRECT_COMMAND "Type Cmd" IDS_CAP_FILE "File" IDS_CAP_HELP "Help" IDS_CAP_MAP "Map"