]> granicus.if.org Git - nethack/commitdiff
smartphone keypad input tweaks (from <Someone>)
authornethack.allison <nethack.allison>
Tue, 29 Mar 2005 03:58:23 +0000 (03:58 +0000)
committernethack.allison <nethack.allison>
Tue, 29 Mar 2005 03:58:23 +0000 (03:58 +0000)
<Someone> 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<number><item> 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
sys/wince/mhmain.c
sys/wince/resource.h
sys/wince/winhcksp.rc

index 0ff3b762228b0b5dcc2a4d50f23f1a927be7aa4f..b83ec6b90b30b991c3be562904af3bf5c8c11a76 100644 (file)
@@ -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 },
index 138cd16d74012f9166248b17151412915bf651f1..5f6f3d93283f4e1ff296e98a8f6d2dee2f5bad50 100644 (file)
@@ -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);
+       }
+}
index 63b8d458ca01e6d6fd9f12c60c8872e87ec81cc9..b68489aee6a5c4eb1acdd2b0477fef4ed47b7c77 100644 (file)
@@ -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
 #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
index 09a79b4beda313d19be2cbc1e3efdb6616be1b6e..15d67f34eb364e3a485fb51d4805f6652389df52 100644 (file)
@@ -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"