Changeset 111
- Timestamp:
- 05/05/07 15:38:08 (1 year ago)
- Files:
-
- trunk/src/birth.c (modified) (4 diffs)
- trunk/src/cmd4.c (modified) (19 diffs)
- trunk/src/files.c (modified) (5 diffs)
- trunk/src/main-sdl.c (modified) (1 diff)
- trunk/src/tables.c (modified) (1 diff)
- trunk/src/ui.c (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/src/birth.c
r66 r111 12 12 13 13 #include "script.h" 14 14 15 15 16 … … 771 772 /* Menu display and selector */ 772 773 774 #define ASEX 0 775 #define ARACE 1 776 #define ACLASS 2 777 778 773 779 static bool choose_character() 774 780 { … … 776 782 777 783 const region *regions[] = { &gender_region, &race_region, &class_region }; 778 byte *values[ ] = { &p_ptr->psex, &p_ptr->prace, &p_ptr->pclass };779 int limits[ ] = { SEX_MALE + 1, z_info->p_max, z_info->c_max };784 byte *values[3]; /* { &p_ptr->psex, &p_ptr->prace, &p_ptr->pclass }; */ 785 int limits[3]; /* { SEX_MALE +1, z_info->p_max, z_info->c_max }; */ 780 786 781 787 menu_type menu; … … 791 797 browse_f browse[] = {NULL, race_aux_hook, class_aux_hook }; 792 798 799 /* Stupid ISO C array initialization. */ 800 values[ASEX] = &p_ptr->psex; 801 values[ARACE] = &p_ptr->prace; 802 values[ACLASS] = &p_ptr->pclass; 803 limits[ASEX] = SEX_MALE + 1; 804 limits[ARACE] = z_info->p_max; 805 limits[ACLASS] = z_info->c_max; 793 806 794 807 WIPE(&menu, menu); trunk/src/cmd4.c
r110 r111 26 26 27 27 28 /* Flag value for missing array entry */ 29 #define MISSING -17 30 31 #define LOAD_PREF 100 32 #define APP_MACRO 101 33 #define ASK_MACRO 103 34 #define DEL_MACRO 104 35 #define NEW_MACRO 105 36 #define APP_KEYMAP 106 37 #define ASK_KEYMAP 107 38 #define DEL_KEYMAP 108 39 #define NEW_KEYMAP 109 40 #define ENTER_ACT 110 41 42 28 43 #define INFO_SCREENS 2 /* Number of screens in character info mode */ 44 45 29 46 30 47 typedef struct { … … 369 386 370 387 region title_area = {0, 0, 0, 4}; 371 region group_region = {0, 6, g_name_len, -2};372 region object_region = { g_name_len+3, 6, 0, -2};388 region group_region = {0, 6, MISSING, -2}; 389 region object_region = {MISSING, 6, 0, -2}; 373 390 374 391 /* display state variables */ … … 1246 1263 const char *cursed [] = {"permanently cursed", "heavily cursed", "cursed"}; 1247 1264 const char *xtra [] = {"sustain", "higher resistance", "ability"}; 1265 int f3, i; 1266 1267 int e_idx = default_join[oid].oid; 1268 ego_item_type *e_ptr = &e_info[e_idx]; 1269 1248 1270 object_type dummy; 1249 1271 WIPE(&dummy, dummy); 1250 1251 int f3, i;1252 int e_idx = default_join[oid].oid;1253 ego_item_type *e_ptr = &e_info[e_idx];1254 1272 1255 1273 /* Save screen */ … … 2836 2854 static event_action macro_actions[] = 2837 2855 { 2838 { 'lupf', "Load a user pref file", 0},2856 {LOAD_PREF, "Load a user pref file", 0}, 2839 2857 #ifdef ALLOW_MACROS 2840 { 'amac', "Append macros to a file", 0},2841 { 'qmac', "Query a macro", 0},2842 { 'cmac', "Create a macro", 0},2843 { 'jmac', "Remove a macro", 0},2844 { 'akm', "Append keymaps to a file", 0},2845 { 'qkm', "Query a keymap", 0},2846 { 'ckm', "Create a keymap", 0},2847 { 'rkm', "Remove a keymap", 0},2848 { 'emac', "Enter a new action", 0}2858 {APP_MACRO, "Append macros to a file", 0}, 2859 {ASK_MACRO, "Query a macro", 0}, 2860 {NEW_MACRO, "Create a macro", 0}, 2861 {DEL_MACRO, "Remove a macro", 0}, 2862 {APP_KEYMAP, "Append keymaps to a file", 0}, 2863 {ASK_KEYMAP, "Query a keymap", 0}, 2864 {NEW_KEYMAP, "Create a keymap", 0}, 2865 {DEL_KEYMAP, "Remove a keymap", 0}, 2866 {ENTER_ACT, "Enter a new action", 0} 2849 2867 #endif /* ALLOW_MACROS */ 2850 2868 }; … … 2863 2881 int cursor = 0; 2864 2882 2883 region loc = {0, 1, 0, 11}; 2884 2865 2885 /* Roguelike */ 2866 2886 if (rogue_like_commands) … … 2882 2902 screen_save(); 2883 2903 2884 region loc = {0, 1, 0, 11};2885 2904 menu_layout(¯o_menu, &loc); 2886 2905 … … 2908 2927 2909 2928 switch(evt) { 2910 case 'lupf':2929 case LOAD_PREF: 2911 2930 do_cmd_pref_file_hack(16); 2912 2931 break; 2913 2932 2914 2933 #ifdef ALLOW_MACROS 2915 case 'amac':2934 case APP_MACRO: 2916 2935 { 2917 2936 /* Dump the macros */ … … 2921 2940 } 2922 2941 2923 case 'qmac':2942 case ASK_MACRO: 2924 2943 { 2925 2944 int k; … … 2962 2981 } 2963 2982 2964 case 'cmac':2983 case NEW_MACRO: 2965 2984 { 2966 2985 /* Prompt */ … … 2996 3015 break; 2997 3016 } 2998 case 'dmac':3017 case DEL_MACRO: 2999 3018 { 3000 3019 /* Prompt */ … … 3014 3033 break; 3015 3034 } 3016 case 'akm':3035 case APP_KEYMAP: 3017 3036 { 3018 3037 /* Dump the keymaps */ … … 3020 3039 break; 3021 3040 } 3022 case 'qkm':3041 case ASK_KEYMAP: 3023 3042 { 3024 3043 cptr act; … … 3060 3079 break; 3061 3080 } 3062 case 'ckm':3081 case NEW_KEYMAP: 3063 3082 { 3064 3083 /* Prompt */ … … 3097 3116 break; 3098 3117 } 3099 case 'dkm':3118 case DEL_KEYMAP: 3100 3119 { 3101 3120 /* Prompt */ … … 3118 3137 break; 3119 3138 } 3120 case 'emac': /* Enter a new action */3139 case ENTER_ACT: /* Enter a new action */ 3121 3140 { 3122 3141 /* Prompt */ … … 3266 3285 const char *empty_symbol3 = "\0"; 3267 3286 3287 byte ca = (byte)*pca; 3288 byte cc = (byte)*pcc; 3289 3290 int linec = (use_trptile ? 22: (use_dbltile ? 21 : 20)); 3291 3268 3292 if (use_trptile && use_bigtile) 3269 3293 { … … 3289 3313 } 3290 3314 else if (use_bigtile) empty_symbol = "<< ?? >>"; 3291 3292 byte ca = (byte)*pca;3293 byte cc = (byte)*pcc;3294 3295 int linec = (use_trptile ? 22: (use_dbltile ? 21 : 20));3296 3315 3297 3316 /* Prompt */ … … 4000 4019 } 4001 4020 4021 /* ISO C wrapper */ 4022 static void do_dump_options(void *not_a_function_pointer, const char *title) 4023 { 4024 dump_pref_file(option_dump, title); 4025 } 4002 4026 4003 4027 /* ========================= MENU DEFINITIONS ========================== */ … … 4019 4043 {{0, 0, 0,}, 0}, /* Special choices */ 4020 4044 {{0, "Load a user pref file", (action_f) do_cmd_pref_file_hack, (void*)20}, 'L'}, 4021 {{0, "Dump options", (action_f) dump_pref_file, option_dump}, 'A'},4045 {{0, "Dump options", do_dump_options, 0}, 'A'}, 4022 4046 {{0, 0, 0,}, 0}, /* Interact with */ 4023 4047 {{0, "Interact with macros (advanced)", (action_f) do_cmd_macros, 0}, 'M'}, trunk/src/files.c
r108 r111 1523 1523 { 1524 1524 { 0, 0, 0, 0 }, 1525 { 1, 2, 30, 8 }, /* Name, Class, ... */1525 { 1, 2, 40, 8 }, /* Name, Class, ... */ 1526 1526 { 1, 10, 18, 8 }, /* Cur Exp, Max Exp, ... */ 1527 1527 { 26, 10, 17, 8 }, /* AC, melee, ... */ … … 1604 1604 } 1605 1605 1606 /* data_panel array element initializer, for ansi compliance */ 1607 #define P_I(col, lab, format, val1, val2) \ 1608 { panel[i].color = col; panel[i].label = lab; panel[i].fmt = format; \ 1609 panel[i].value[0] = val1; panel[i].value[1] = val2; \ 1610 i++; } 1606 1611 1607 1612 int get_panel(int oid, data_panel *panel, size_t size) … … 1612 1617 case 1: 1613 1618 { 1614 data_panel panel1[] = 1615 { 1616 { TERM_L_BLUE, "Name", "%y", { s2u(op_ptr->full_name) , END }}, 1617 { TERM_L_BLUE, "Sex", "%y", { s2u(sp_ptr->title) , END }}, 1618 { TERM_L_BLUE, "Race", "%y", { s2u(p_name + rp_ptr->name), END }}, 1619 { TERM_L_BLUE, "Class", "%y", { s2u(c_name + cp_ptr->name), END }}, 1620 { TERM_L_BLUE, "Title", "%y", { s2u(show_title()), END }}, 1621 { TERM_L_BLUE, "HP", "%y/%y", { i2u(p_ptr->mhp), i2u(p_ptr->chp) }}, 1622 { TERM_L_BLUE, "SP", "%y/%y", { i2u(p_ptr->msp), i2u(p_ptr->csp) }}, 1623 { TERM_L_BLUE, "Level", "%y", { i2u(p_ptr->lev), END }} 1624 }; 1625 assert(N_ELEMENTS(panel1) == boundaries[1].page_rows); 1626 if (ret > N_ELEMENTS(panel1)) ret = N_ELEMENTS(panel1); 1627 C_COPY(panel, &panel1, ret, data_panel); 1619 int i = 0; 1620 assert(size >= boundaries[1].page_rows); 1621 ret = boundaries[1].page_rows; 1622 P_I(TERM_L_BLUE, "Name", "%y", s2u(op_ptr->full_name), END ); 1623 P_I(TERM_L_BLUE, "Sex", "%y", s2u(sp_ptr->title), END ); 1624 P_I(TERM_L_BLUE, "Race", "%y", s2u(p_name + rp_ptr->name), END ); 1625 P_I(TERM_L_BLUE, "Class", "%y", s2u(c_name + cp_ptr->name), END ); 1626 P_I(TERM_L_BLUE, "Title", "%y", s2u(show_title()), END ); 1627 P_I(TERM_L_BLUE, "HP", "%y/%y", i2u(p_ptr->mhp), i2u(p_ptr->chp) ); 1628 P_I(TERM_L_BLUE, "SP", "%y/%y", i2u(p_ptr->msp), i2u(p_ptr->csp) ); 1629 P_I(TERM_L_BLUE, "Level", "%y", i2u(p_ptr->lev), END ); 1630 assert(i == boundaries[1].page_rows); 1628 1631 return ret; 1629 1632 } 1630 1633 case 2: 1631 1634 { 1632 data_panel panel2[] = 1633 { 1634 { max_color(p_ptr->lev, p_ptr->max_lev), "Level", "%y", { i2u(p_ptr->lev), END }}, 1635 { max_color(p_ptr->exp, p_ptr->max_exp), "Cur Exp", "%y", { i2u(p_ptr->exp), END }}, 1636 { TERM_L_GREEN, "Max Exp", "%y", { i2u(p_ptr->max_exp), END }}, 1637 { TERM_L_GREEN, "Adv Exp", "%y", { s2u(show_adv_exp()), END }}, 1638 { TERM_L_GREEN, "MaxDepth", "%y", { s2u(show_depth()), END }}, 1639 { TERM_L_GREEN, "Gold", "%y", { i2u(p_ptr->au), END }}, 1640 { TERM_L_GREEN, "Burden", "%.1y lbs", { f2u(p_ptr->total_weight/10.0), END }}, 1641 { TERM_L_GREEN, "Speed", "%y", { s2u(show_speed()), END }} 1642 }; 1643 assert(N_ELEMENTS(panel2) == boundaries[2].page_rows); 1644 if (ret > N_ELEMENTS(panel2)) ret = N_ELEMENTS(panel2); 1645 C_COPY(panel, &panel2, ret, data_panel); 1635 int i = 0; 1636 assert(ret >= boundaries[2].page_rows); 1637 ret = boundaries[2].page_rows; 1638 P_I(max_color(p_ptr->lev, p_ptr->max_lev), "Level", "%y", i2u(p_ptr->lev), END ); 1639 P_I(max_color(p_ptr->exp, p_ptr->max_exp), "Cur Exp", "%y", i2u(p_ptr->exp), END ); 1640 P_I(TERM_L_GREEN, "Max Exp", "%y", i2u(p_ptr->max_exp), END ); 1641 P_I(TERM_L_GREEN, "Adv Exp", "%y", s2u(show_adv_exp()), END ); 1642 P_I(TERM_L_GREEN, "MaxDepth", "%y", s2u(show_depth()), END ); 1643 P_I(TERM_L_GREEN, "Turns", "%y", i2u(turn), END ); 1644 P_I(TERM_L_GREEN, "Gold", "%y", i2u(p_ptr->au), END ); 1645 P_I(TERM_L_GREEN, "Burden", "%.1y lbs", f2u(p_ptr->total_weight/10.0), END ); 1646 assert(i == boundaries[2].page_rows); 1646 1647 return ret; 1647 1648 } 1648 1649 case 3: 1649 1650 { 1650 data_panel panel3[] = 1651 { 1652 { TERM_L_BLUE, "Armor", "[%y,%+y]", { i2u(p_ptr->dis_ac), i2u(p_ptr->dis_to_a) }}, 1653 { TERM_L_BLUE, "Fight", "(%+y,%+y)", { i2u(p_ptr->dis_to_h), i2u(p_ptr->dis_to_d) }}, 1654 { TERM_L_BLUE, "Melee", "%y", { s2u(show_weapon(&inventory[INVEN_WIELD])), END }}, 1655 { TERM_L_BLUE, "Shoot", "%y", { s2u(show_weapon(&inventory[INVEN_BOW])), END }}, 1656 { TERM_L_BLUE, "Blows", "%y/turn", { i2u(p_ptr->num_blow), END }}, 1657 { TERM_L_BLUE, "Shots", "%y/turn", { i2u(p_ptr->num_fire), END }}, 1658 { 0, 0, 0, {END} }, 1659 { TERM_L_BLUE, "Infra", "%y ft", { i2u(p_ptr->see_infra * 10), END }} 1660 }; 1661 assert(N_ELEMENTS(panel3) == boundaries[3].page_rows); 1662 if (ret > N_ELEMENTS(panel3)) ret = N_ELEMENTS(panel3); 1663 C_COPY(panel, &panel3, ret, data_panel); 1651 int i = 0; 1652 assert(ret >= boundaries[3].page_rows); 1653 ret = boundaries[3].page_rows; 1654 P_I(TERM_L_BLUE, "Armor", "[%y,%+y]", i2u(p_ptr->dis_ac), i2u(p_ptr->dis_to_a) ); 1655 P_I(TERM_L_BLUE, "Fight", "(%+y,%+y)", i2u(p_ptr->dis_to_h), i2u(p_ptr->dis_to_d) ); 1656 P_I(TERM_L_BLUE, "Melee", "%y", s2u(show_weapon(&inventory[INVEN_WIELD])), END ); 1657 P_I(TERM_L_BLUE, "Shoot", "%y", s2u(show_weapon(&inventory[INVEN_BOW])), END ); 1658 P_I(TERM_L_BLUE, "Blows", "%y/turn", i2u(p_ptr->num_blow), END ); 1659 P_I(TERM_L_BLUE, "Shots", "%y/turn", i2u(p_ptr->num_fire), END ); 1660 P_I(TERM_L_BLUE, "Infra", "%y ft", i2u(p_ptr->see_infra * 10), END ); 1661 P_I(TERM_L_BLUE, "Speed", "%y", s2u(show_speed()), END ); 1662 assert(i == boundaries[3].page_rows); 1664 1663 return ret; 1665 1664 } 1666 1665 case 4: 1667 1666 { 1668 struct { 1667 #define OFFSET(field) ((char*)(&dummy.field) - (char*)&dummy) 1668 static const player_type dummy; 1669 static struct { 1669 1670 const char *name; 1670 int skill;1671 size_t skill_offset; 1671 1672 int div; 1672 1673 } skills[] = 1673 1674 { 1674 { "Saving Throw", p_ptr->skill_sav, 6 },1675 { "Stealth", p_ptr->skill_stl, 1 },1676 { "Fighting", p_ptr->skill_thn, 12 },1677 { "Shooting", p_ptr->skill_thb, 12 },1678 { "Disarming", p_ptr->skill_dis, 8 },1679 { "Magic Device", p_ptr->skill_dev, 6 },1680 { "Perception", p_ptr->skill_fos, 6 },1681 { "Searching", p_ptr->skill_srh, 6 }1675 { "Saving Throw", OFFSET(skill_sav), 6 }, 1676 { "Stealth", OFFSET(skill_stl), 1 }, 1677 { "Fighting", OFFSET(skill_thn), 12 }, 1678 { "Shooting", OFFSET(skill_thb), 12 }, 1679 { "Disarming", OFFSET(skill_dis), 8 }, 1680 { "Magic Device", OFFSET(skill_dev), 6 }, 1681 { "Perception", OFFSET(skill_fos), 6 }, 1682 { "Searching", OFFSET(skill_srh), 6 } 1682 1683 }; 1683 1684 size_t i; … … 1687 1688 for (i = 0; i < ret; i++) 1688 1689 { 1690 s16b skill = *(s16b*)(((char*)p_ptr)+skills[i].skill_offset); 1689 1691 panel[i].color = TERM_L_BLUE; 1690 1692 panel[i].label = skills[i].name; 1691 1693 panel[i].fmt = "%y"; 1692 panel[i].value[0] = s2u(likert(skill s[i].skill, skills[i].div, &panel[i].color));1694 panel[i].value[0] = s2u(likert(skill, skills[i].div, &panel[i].color)); 1693 1695 } 1694 1696 return ret; … … 1696 1698 case 5: 1697 1699 { 1698 data_panel panel5[] = 1699 { 1700 {TERM_L_BLUE, "Age", "%y", { i2u(p_ptr->age), END }}, 1701 {TERM_L_BLUE, "Height", "%y", { i2u(p_ptr->ht), END }}, 1702 {TERM_L_BLUE, "Weight", "%y", { i2u(p_ptr->wt), END }}, 1703 {TERM_L_BLUE, "Status", "%y", { i2u(p_ptr->sc), END }}, 1704 {TERM_L_BLUE, "Maximize", "%y", { c2u(adult_maximize ? 'Y' : 'N'), END }} 1700 int i = 0; 1701 assert(ret >= boundaries[5].page_rows); 1702 ret = boundaries[5].page_rows; 1703 P_I(TERM_L_BLUE, "Age", "%y", i2u(p_ptr->age), END ); 1704 P_I(TERM_L_BLUE, "Height", "%y", i2u(p_ptr->ht), END ); 1705 P_I(TERM_L_BLUE, "Weight", "%y", i2u(p_ptr->wt), END ); 1706 P_I(TERM_L_BLUE, "Status", "%y", i2u(p_ptr->sc), END ); 1707 P_I(TERM_L_BLUE, "Maximize", "%y", c2u(adult_maximize ? 'Y' : 'N'), END); 1705 1708 #if 0 1706 1709 /* Preserve mode deleted */ 1707 {TERM_L_BLUE, "Preserve", "%y", { c2u(adult_preserve ? 'Y' : 'N'), END }}1710 P_I(TERM_L_BLUE, "Preserve", "%y", c2u(adult_preserve ? 'Y' : 'N'), END); 1708 1711 #endif 1709 1710 }; 1711 assert(N_ELEMENTS(panel5) == boundaries[5].page_rows); 1712 if (ret > N_ELEMENTS(panel5)) ret = N_ELEMENTS(panel5); 1713 C_COPY(panel, &panel5, ret, data_panel); 1712 assert(i == boundaries[5].page_rows); 1714 1713 return ret; 1715 1714 } trunk/src/main-sdl.c
r85 r111 103 103 * port's biggest problem. More comments below. 104 104 * - SDL is not a complete game development library (although the add-ons help 105 * tremendously). Much-needed functionality - text output, blit stretching,105 * tremendously). Much-needed functionality - text output, blit stretching, 106 106 * and video refresh synching being three examples - were either missing 107 107 * altogether or covered by functions that proved too slow or delicate for trunk/src/tables.c
r110 r111 2235 2235 OPT_NONE, 2236 2236 OPT_NONE, 2237 OPT_NONE,2238 OPT_NONE,2239 2237 OPT_NONE 2240 2238 }, trunk/src/ui.c
r110 r111 618 618 { 619 619 /* TODO: need a panel dispatcher here, not a generic target */ 620 event_target t = { { 0, 0, 0, 0 }, FALSE, menu->target.observers }; 620 event_target t = { { 0, 0, 0, 0 }, FALSE, 0 /* menu->target.observers */}; 621 t.observers = menu->target.observers; 621 622 out = run_event_loop(&t, FALSE, in); 622 623
