Changeset 785


Ignore:
Timestamp:
03/06/11 07:36:43 (8 years ago)
Author:
technomage
Message:

Patch by Technomage

  • Mostly finished the character creation GUI in gui/character_screen.xml - still needs a few cosmetic touch-ups and it hasn't been tested with stats, traits, and skills lists yet;
  • Added a new CharacterCreationView? class in parpg/gui/charactercreationview.py which should be used by the CharacterCreationController? to display the character creation GUI. It is mostly a skeleton at this point, however, and it hasn't been integrated with the controller yet;
  • Fixed a few graphical glitches in the Spinner widget in parpg/gui/spinners.py that caused the text field to be positioned incorrectly;
  • Added a few new properties to the Spinner widget, including background_color, min_size and max_size, which override the inherited properties. Spinner widgets that uses these properties should now behave in a much more intuitive way;
  • Re-sized the gui/notebook/notebook_background.png background image to 800x600 to accommodate tab-buttons on the edges of the notebook;
  • Added a new widget, TabWidget?, which consists of a view that has tabs which can switch between the various views. Views in a TabWidget? can be added in XML as child tags whose name attribute ends up as the tab text;
  • Added two new size fonts to fonts/oldtypewriter.fontdef, 9 pt and 10 pt;
Location:
branches/active/character_customization/game
Files:
2 added
5 edited

Legend:

Unmodified
Added
Removed
  • branches/active/character_customization/game/fonts/oldtypewriter.fontdef

    r779 r785  
    1414antialias: 1 
    1515color: 0,0,0 
     16 
     17[Font/OldTypewriter_9] 
     18 
     19type: truetype 
     20source: fonts/oldtypewriter.ttf 
     21size: 9 
     22antialias: 1 
     23color: 0,0,0 
     24 
     25[Font/OldTypewriter_10] 
     26 
     27type: truetype 
     28source: fonts/oldtypewriter.ttf 
     29size: 10 
     30antialias: 1 
     31color: 0,0,0 
  • branches/active/character_customization/game/gui/character_screen.xml

    r784 r785  
    11<VBox name="CharacterScreen" 
    22      background_image="gui/notebook/notebook_background.png" opaque="0" 
    3       padding="0" position_technique="center:center" 
    4       min_size="780,545" max_size="780,545"> 
    5   <HBox vexpand="1" padding="0" opaque="0"> 
    6     <VBox min_size="20,0" padding="0" opaque="0"> 
    7       <Spacer fixed_size="50"></Spacer> 
    8       <VBox name="leftTabs" min_size="20,0" padding="0" opaque="0"></VBox> 
    9       <Spacer fixed_size="40"></Spacer> 
     3      min_size="800,600" max_size="800,600"> 
     4  <HBox vexpand="1" min_size="800,560" max_size="800,560" padding="0" opaque="0"> 
     5    <VBox min_size="22,0" max_size="22,9999" padding="0" opaque="0"> 
     6      <Spacer fixed_size="50"/> 
     7      <VBox name="leftTabs" min_size="22,0" max_size="22,9999" 
     8            padding="0" opaque="0"></VBox> 
     9      <Spacer fixed_size="40"/> 
    1010    </VBox> 
    11     <VBox hexpand="1" padding="0" opaque="0"> 
    12       <HBox name="topTabs" min_size="0,30" opaque="0"></HBox> 
    13       <HBox vexpand="1" opaque="0"> 
    14         <VBox name="leftPage" max_size="362,9999" min_size="362,0" opaque="0"> 
    15           <Spacer fixed_size="5"></Spacer> 
     11    <VBox hexpand="1" min_size="734,560" max_size="734,560" padding="0" 
     12          opaque="0"> 
     13      <HBox name="topTabs" min_size="0,28" max_size="0,28" 
     14            opaque="0"> 
     15      </HBox> 
     16      <HBox min_size="732,517" max_size="732,517" opaque="0"> 
     17        <VBox name="leftPage" max_size="358,9999" min_size="358,0" 
     18              margins="5,5" opaque="0"> 
     19          <Spacer fixed_size="15"/> 
    1620          <HBox opaque="0"> 
    17             <Spacer fixed_size="25"></Spacer> 
     21            <Spacer fixed_size="20"/> 
    1822            <Icon name="portrait" image="gui/portraits/camilla.png" 
    19                   max_size="100,123"></Icon> 
    20             <Spacer></Spacer> 
    21             <VBox hexpand="1" min_size="110,0" opaque="0"> 
    22               <TextField background_color="0,0,0,0" name="characterName" text="None" 
    23                        font="OldTypewriter"></TextField> 
    24               <IntSpinner base_color="0,0,0,0" background_color="0,0,0,0" name="age" lower_limit="18" upper_limit="60" 
    25                           font="OldTypewriter_8"></IntSpinner> 
    26               <Spinner base_color="0,0,0,0" background_color="0,0,0,0" name="sex" items="Male,Female" 
    27                        font="OldTypewriter_8"></Spinner> 
    28               <Spinner base_color="0,0,0,0" background_color="0,0,0,0" name="origin" items="Oldster,Young Blood" 
    29                        font="OldTypewriter_8"></Spinner> 
    30               <Spinner base_color="0,0,0,0" background_color="0,0,0,0" name="portrait" items="" 
    31                        font="OldTypewriter_8"></Spinner> 
     23                  max_size="100,123"/> 
     24            <VBox hexpand="1" min_size="110,0" padding="1" opaque="0"> 
     25              <TextField name="characterName" text="Name" 
     26                         font="OldTypewriter" background_color="255,255,255"/> 
     27              <HBox opaque="0" padding="0"> 
     28                <Spacer/> 
     29                <Label text="Age" font="OldTypewriter_10"/> 
     30                <Spacer/> 
     31              </HBox> 
     32              <HBox opaque="0"> 
     33                <Spacer/> 
     34                <IntSpinner name="age" lower_limit="18" upper_limit="60" 
     35                            font="OldTypewriter_8" background_color="0,0,0,0" 
     36                            min_size="100,12" max_size="100,12"/> 
     37                <Spacer/> 
     38              </HBox> 
     39              <HBox opaque="0" padding="0"> 
     40                <Spacer/> 
     41                <Label text="Sex" font="OldTypewriter_10"/> 
     42                <Spacer/> 
     43              </HBox> 
     44              <HBox opaque="0"> 
     45                <Spacer/> 
     46                <Spinner name="sex" items="Male,Female" 
     47                         font="OldTypewriter_8" background_color="0,0,0,0" 
     48                         min_size="100,12" max_size="100,12"/> 
     49                <Spacer/> 
     50              </HBox> 
     51              <HBox opaque="0" padding="0"> 
     52                <Spacer/> 
     53                <Label text="Origin" font="OldTypewriter_10"/> 
     54                <Spacer/> 
     55              </HBox> 
     56              <HBox opaque="0"> 
     57                <Spacer/> 
     58                <Spinner name="origin" items="Oldster,Young Blood" 
     59                         font="OldTypewriter_8" background_color="0,0,0,0" 
     60                         min_size="100,12" max_size="100,12"/> 
     61                <Spacer/> 
     62              </HBox> 
     63              <HBox opaque="0" padding="0"> 
     64                <Spacer/> 
     65                <Label text="Portrait" font="OldTypewriter_10"/> 
     66                <Spacer/> 
     67              </HBox> 
     68              <HBox opaque="0"> 
     69                <Spacer/> 
     70                <Spinner name="portrait" items="" 
     71                         font="OldTypewriter_10" background_color="0,0,0,0" 
     72                         min_size="100,12" max_size="100,12"/> 
     73                <Spacer/> 
     74              </HBox> 
    3275            </VBox> 
    33             <Spacer min_size="2"></Spacer> 
    3476            <Icon name="model" image="gui/character_model.png" 
    35                   max_size="100,123"></Icon> 
     77                  max_size="100,123"/> 
     78          </HBox> 
     79          <Spacer fixed_size="20"/> 
     80          <HBox opaque="0"> 
     81            <Spacer fixed_size="6"/> 
     82            <VBox min_size="200,0" max_size="200,9999" opaque="0"> 
     83              <HBox padding="0" opaque="0"> 
     84                <Label text="Primary Stats" font="OldTypewriter"/> 
     85                <Label name="statisticsPoints" text="(0)" 
     86                       font="OldTypewriter"/> 
     87              </HBox> 
     88              <VBox name="primaryStatisticsList" hexpand="1" 
     89                    opaque="0"> 
     90              </VBox> 
     91            </VBox> 
     92            <VBox hexpand="1" opaque="0"> 
     93              <HBox padding="0" opaque="0"> 
     94                <Label text="Traits" font="OldTypewriter"/> 
     95                <Label name="traitsPoints" text="(0)" font="OldTypewriter"/> 
     96                <Spacer/> 
     97              </HBox> 
     98              <ScrollArea> 
     99                <VBox name="traitsList" opaque="0"> 
     100                </VBox> 
     101              </ScrollArea> 
     102            </VBox> 
     103          </HBox> 
     104          <Spacer/> 
     105          <ScrollArea min_size="0,100" max_size="999,300" 
     106                      background_color="0,0,0,0"> 
     107            <TextField name="messageArea" base_color="0,0,0,0" 
     108                       background_color="0,0,0,0" font="OldTypewriter"/> 
     109          </ScrollArea> 
     110        </VBox> 
     111        <Spacer fixed_size="14"/> 
     112        <VBox name="rightPages" min_size="360,0" max_size="360,9999" 
     113              margins="10,20" hexpand="1" opaque="0"> 
     114          <TabWidget min_size="325,300" max_size="350,300" opaque="0" 
     115                     border_size="1"> 
     116            <VBox name="Secondary Stats" opaque="0"/> 
     117            <VBox name="Skills" opaque="0"/> 
     118          </TabWidget> 
     119          <Spacer fixed_size="25"/> 
     120          <HBox opaque="0"> 
     121            <Spacer fixed_size="14"/> 
     122            <InventoryGrid name="inventory" grid_size="6,2"/> 
     123          </HBox> 
     124          <HBox opaque="0"> 
     125            <Spacer/> 
     126            <VBox opaque="0" margins="1,1" min_size="100,50" max_size="100,50"> 
     127              <PercentageBar name="weightBar" value="25" border_size="1" 
     128                             foreground_color="50,50,50" min_size="80,20" 
     129                             max_size="80,20"/> 
     130              <HBox opaque="0"> 
     131                <Spacer/> 
     132                <Label text="weight:" font="OldTypewriter_8"/> 
     133                <Label name="weightPoints" text="50/200" font="OldTypewriter_8"/> 
     134                <Spacer/> 
     135              </HBox> 
     136            </VBox> 
     137            <Spacer fixed_size="10"/> 
     138            <VBox opaque="0" margins="1,1" min_size="100,50" max_size="100,50"> 
     139              <PercentageBar name="bulkBar" value="52" border_size="1" 
     140                             foreground_color="50,50,50" min_size="80,20" 
     141                             max_size="80,20"/> 
     142              <HBox opaque="0"> 
     143                <Spacer/> 
     144                <Label text="bulk:" font="OldTypewriter_8"/> 
     145                <Label name="bulkPoints" text="78/150" font="OldTypewriter_8"/> 
     146                <Spacer/> 
     147              </HBox> 
     148            </VBox> 
     149            <Spacer/> 
    36150          </HBox> 
    37151        </VBox> 
    38         <Spacer fixed_size="10"></Spacer> 
    39         <VBox name="rightPages" hexpand="1" opaque="0"></VBox> 
    40152      </HBox> 
    41       <HBox name="bottomTabs" min_size="0,30" opaque="0"> 
    42           <Spacer fixed_size="32"/> 
    43           <ImageButton max_size="99,24" text="Cancel" name="cancelButton" font="OldTypewriter" up_image="gui/notebook/tabs/tab2_bg_dark_bottom.png" hover_image="gui/notebook/tabs/tab2_bg_normal_bottom.png" down_image="gui/notebook/tabs/tab2_bg_normal_bottom.png" /> 
    44           <Spacer fixed_size="480"/> 
    45           <ImageButton max_size="101,26" text="Start Game" name="startButton" font="OldTypewriter" up_image="gui/notebook/tabs/tab3_bg_dark_bottom.png" hover_image="gui/notebook/tabs/tab3_bg_normal_bottom.png" down_image="gui/notebook/tabs/tab3_bg_normal_bottom.png" /> 
     153      <HBox name="bottomTabs" min_size="0,24" max_size="9999,24" opaque="0"> 
     154        <Spacer fixed_size="70"/> 
     155        <ImageButton name="cancelButton" text="Cancel" font="OldTypewriter_10" 
     156                     min_size="101,0" max_size="101,9999" 
     157                     up_image="gui/notebook/tabs/tab3_bg_normal_bottom.png" 
     158                     hover_image="gui/notebook/tabs/tab3_bg_normal_bottom.png" 
     159                     down_image="gui/notebook/tabs/tab3_bg_dark_bottom.png"/> 
     160        <Spacer fixed_size="100"/> 
     161        <ImageButton name="clearButton" text="Clear" font="OldTypewriter_10" 
     162                     min_size="52,0" max_size="52,9999" 
     163                     up_image="gui/notebook/tabs/tab5_bg_normal_bottom.png" 
     164                     hover_image="gui/notebook/tabs/tab5_bg_normal_bottom.png" 
     165                     down_image="gui/notebook/tabs/tab5_bg_dark_bottom.png"/> 
     166        <Spacer fixed_size="225"/> 
     167        <ImageButton name="startButton" text="Start Game" font="OldTypewriter_10" 
     168                     min_size="101,0" max_size="101,9999" 
     169                     up_image="gui/notebook/tabs/tab2_bg_normal_bottom.png" 
     170                     hover_image="gui/notebook/tabs/tab2_bg_normal_bottom.png" 
     171                     down_image="gui/notebook/tabs/tab2_bg_dark_bottom.png"/> 
    46172      </HBox> 
    47173    </VBox> 
    48     <VBox min_size="20,0" padding="0" opaque="0"> 
    49       <Spacer fixed_size="50"></Spacer> 
    50       <VBox name="rightTabs" min_size="20,0" opaque="0"></VBox> 
    51       <Spacer fixed_size="40"></Spacer> 
     174    <VBox min_size="22,0" max_size="22,9999" padding="0" opaque="0"> 
     175      <Spacer fixed_size="50"/> 
     176      <VBox name="rightTabs" min_size="22,0" max_size="22,9999" 
     177            opaque="0"> 
     178      </VBox> 
     179      <Spacer fixed_size="40"/> 
    52180    </VBox> 
    53     <Spacer fixed_size="4"></Spacer> 
     181    <Spacer fixed_size="4"/> 
     182  </HBox> 
     183  <HBox name="bottomBar" vexpand="1" opaque="0"> 
    54184  </HBox> 
    55185</VBox> 
  • branches/active/character_customization/game/parpg/gui/__init__.py

    r779 r785  
    22from .inventorygui import EquipmentSlot, InventoryGrid 
    33from .spinners import Spinner, IntSpinner 
     4from .tabwidget import TabWidget 
    45 
    56pychan.registerWidget(EquipmentSlot) 
     
    78pychan.registerWidget(Spinner) 
    89pychan.registerWidget(IntSpinner) 
     10pychan.registerWidget(TabWidget) 
  • branches/active/character_customization/game/parpg/gui/spinners.py

    r784 r785  
    6666    font = property(**font()) 
    6767     
     68    def background_color(): 
     69        def fget(self): 
     70            return self.text_field.background_color 
     71         
     72        def fset(self, background_color): 
     73            self.text_field.background_color = background_color 
     74         
     75        return locals() 
     76    background_color = property(**background_color()) 
     77     
     78    def min_size(): 
     79        def fget(self): 
     80            return self._min_size 
     81         
     82        def fset(self, min_size): 
     83            self._min_size = min_size 
     84            self.decrease_button.capture(self.previousItem) 
     85            increase_button_width, increase_button_height = \ 
     86                self.increase_button.size 
     87            decrease_button_width, decrease_button_height = \ 
     88                self.decrease_button.size 
     89            text_field_width = min_size[0] - (2 * self.padding) - \ 
     90                               (increase_button_width + decrease_button_width) 
     91            self.text_field.min_width = text_field_width 
     92            self.text_field.max_width = text_field_width 
     93            self.text_field.min_height = min_size[1] 
     94         
     95        return locals() 
     96    min_size = property(**min_size()) 
     97     
     98     
     99    def max_size(): 
     100        def fget(self): 
     101            return self._max_size 
     102         
     103        def fset(self, max_size): 
     104            self._max_size = max_size 
     105            self.decrease_button.capture(self.previousItem) 
     106            increase_button_width, increase_button_height = \ 
     107                self.increase_button.size 
     108            decrease_button_width, decrease_button_height = \ 
     109                self.decrease_button.size 
     110            text_field_width = max_size[0] - (2 * self.padding) - \ 
     111                               (increase_button_width + decrease_button_width) 
     112            self.text_field.max_width = text_field_width 
     113            self.text_field.max_height = max_size[1] 
     114         
     115        return locals() 
     116    max_size = property(**max_size()) 
     117     
    68118    def __init__(self, items=None, default_item_n=0, circular=True, 
    69119                 min_size=(50, 14), max_size=(50, 14), font=None, background_color=None, **kwargs): 
     
    71121        self._items = map(unicode, items) if items is not None else [] 
    72122        self._default_item_n = default_item_n 
     123        self._min_size = min_size 
    73124        self.circular = circular 
    74         self.text_field = TextField(font=font) 
     125        padding = 1 
    75126        self.text_field = TextField(background_color=background_color) 
    76         self.text_field.min_size = min_size 
    77         self.text_field.max_size = max_size 
    78         self.text_field.text = self.items[default_item_n] if \ 
    79                                len(self.items) > 0 else u'' 
     127        self.decrease_button = ImageButton( 
     128            up_image='gui/buttons/left_arrow_up.png', 
     129            down_image='gui/buttons/left_arrow_down.png', 
     130            hover_image='gui/buttons/left_arrow_hover.png', 
     131        ) 
     132        # FIXME Technomage 2011-03-05: This is a hack to prevent the button 
     133        #     from expanding width-wise and skewing the TextField orientation. 
     134        #     Max size shouldn't be hard-coded like this though... 
     135        self.decrease_button.max_size = (12, 12) 
     136        self.decrease_button.capture(self.previousItem) 
    80137        self.increase_button = ImageButton( 
    81138            up_image='gui/buttons/right_arrow_up.png', 
     
    84141        ) 
    85142        self.increase_button.capture(self.nextItem) 
    86         self.decrease_button = ImageButton( 
    87             up_image='gui/buttons/left_arrow_up.png', 
    88             down_image='gui/buttons/left_arrow_down.png', 
    89             hover_image='gui/buttons/left_arrow_hover.png', 
    90         ) 
    91         self.decrease_button.capture(self.previousItem) 
    92 #        left_spacer = Spacer() 
    93 #        left_spacer.fixed_size = 2 
    94 #        right_spacer = Spacer() 
    95 #        right_spacer.fixed_size = 2 
     143        increase_button_width, increase_button_height = \ 
     144            self.increase_button.size 
     145        decrease_button_width, decrease_button_height = \ 
     146            self.decrease_button.size 
     147        self.text_field = TextField(font=font) 
     148        text_field_width = min_size[0] - (2 * padding) - \ 
     149                           (increase_button_width + decrease_button_width) 
     150        self.text_field.min_width = text_field_width 
     151        self.text_field.max_width = text_field_width 
     152        self.text_field.min_height = min_size[1] 
     153        self.text_field.text = self.items[default_item_n] if \ 
     154                               len(self.items) > 0 else u'' 
    96155        HBox.__init__(self, **kwargs) 
     156        self.opaque = 0 
     157        self.padding = padding 
     158        self.margins = (0, 0) 
    97159        self.addChildren(self.decrease_button, self.text_field, 
    98160                         self.increase_button) 
Note: See TracChangeset for help on using the changeset viewer.