1# GemRB - Infinity Engine Emulator 2# Copyright (C) 2003 The GemRB Project 3# 4# This program is free software; you can redistribute it and/or 5# modify it under the terms of the GNU General Public License 6# as published by the Free Software Foundation; either version 2 7# of the License, or (at your option) any later version. 8# 9# This program is distributed in the hope that it will be useful, 10# but WITHOUT ANY WARRANTY; without even the implied warranty of 11# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12# GNU General Public License for more details. 13# 14# You should have received a copy of the GNU General Public License 15# along with this program; if not, write to the Free Software 16# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. 17# 18# 19#character generation, color (GUICG13) 20import GemRB 21from GUIDefines import * 22from ie_stats import * 23import CharGenCommon 24import GUICommon 25import BGCommon 26 27ColorTable = 0 28ColorWindow = 0 29ColorPicker = 0 30DoneButton = 0 31ColorIndex = 0 32PickedColor = 0 33HairButton = 0 34SkinButton = 0 35MajorButton = 0 36MinorButton = 0 37HairColor = 0 38SkinColor = 0 39MinorColor = 0 40MajorColor = 0 41PDollButton = 0 42 43def OnLoad(): 44 global ColorWindow, DoneButton, PDollButton, ColorTable 45 global HairButton, SkinButton, MajorButton, MinorButton 46 global HairColor, SkinColor, MinorColor, MajorColor 47 48 ColorWindow=GemRB.LoadWindow(13, "GUICG") 49 50 ColorTable = GemRB.LoadTable("clowncol") 51 #set these colors to some default 52 PortraitTable = GemRB.LoadTable("pictures") 53 PortraitName = GemRB.GetToken("LargePortrait") 54 PortraitName = PortraitName[0:len(PortraitName)-1] 55 PortraitIndex = PortraitTable.GetRowIndex(PortraitName) 56 if PortraitIndex<0: 57 HairColor=PortraitTable.GetValue(0,1) 58 SkinColor=PortraitTable.GetValue(0,2) 59 MinorColor=PortraitTable.GetValue(0,3) 60 MajorColor=PortraitTable.GetValue(0,4) 61 else: 62 HairColor=PortraitTable.GetValue(PortraitIndex,1) 63 SkinColor=PortraitTable.GetValue(PortraitIndex,2) 64 MinorColor=PortraitTable.GetValue(PortraitIndex,3) 65 MajorColor=PortraitTable.GetValue(PortraitIndex,4) 66 67 PDollButton = ColorWindow.GetControl(1) 68 PDollButton.SetState (IE_GUI_BUTTON_LOCKED) 69 PDollButton.SetFlags(IE_GUI_BUTTON_PICTURE,OP_OR) 70 71 HairButton = ColorWindow.GetControl(2) 72 HairButton.SetFlags(IE_GUI_BUTTON_PICTURE,OP_OR) 73 HairButton.SetEvent(IE_GUI_BUTTON_ON_PRESS, HairPress) 74 HairButton.SetBAM("COLGRAD", 0, 0, HairColor) 75 76 SkinButton = ColorWindow.GetControl(3) 77 SkinButton.SetFlags(IE_GUI_BUTTON_PICTURE,OP_OR) 78 SkinButton.SetEvent(IE_GUI_BUTTON_ON_PRESS, SkinPress) 79 SkinButton.SetBAM("COLGRAD", 0, 0, SkinColor) 80 81 MajorButton = ColorWindow.GetControl(5) 82 MajorButton.SetFlags(IE_GUI_BUTTON_PICTURE,OP_OR) 83 MajorButton.SetEvent(IE_GUI_BUTTON_ON_PRESS, MajorPress) 84 MajorButton.SetBAM("COLGRAD", 0, 0, MinorColor) 85 86 MinorButton = ColorWindow.GetControl(4) 87 MinorButton.SetFlags(IE_GUI_BUTTON_PICTURE,OP_OR) 88 MinorButton.SetEvent(IE_GUI_BUTTON_ON_PRESS, MinorPress) 89 MinorButton.SetBAM("COLGRAD", 0, 0, MajorColor) 90 91 BackButton = ColorWindow.GetControl(13) 92 BackButton.SetText(15416) 93 DoneButton = ColorWindow.GetControl(0) 94 DoneButton.SetText(11973) 95 DoneButton.MakeDefault() 96 97 DoneButton.SetEvent(IE_GUI_BUTTON_ON_PRESS, NextPress) 98 BackButton.SetEvent(IE_GUI_BUTTON_ON_PRESS, lambda: CharGenCommon.back(ColorWindow)) 99 BGCommon.RefreshPDoll (PDollButton, MinorColor, MajorColor, SkinColor, HairColor) 100 ColorWindow.ShowModal(MODAL_SHADOW_NONE) 101 return 102 103def DonePress(): 104 global HairColor, SkinColor, MinorColor, MajorColor 105 106 if ColorPicker: 107 ColorPicker.Unload() 108 109 ColorWindow.ShowModal(MODAL_SHADOW_NONE) 110 PickedColor=ColorTable.GetValue(ColorIndex, GemRB.GetVar("Selected")) 111 if ColorIndex==0: 112 HairColor=PickedColor 113 HairButton.SetBAM("COLGRAD", 0, 0, HairColor) 114 BGCommon.RefreshPDoll (PDollButton, MinorColor, MajorColor, SkinColor, HairColor) 115 return 116 if ColorIndex==1: 117 SkinColor=PickedColor 118 SkinButton.SetBAM("COLGRAD", 0, 0, SkinColor) 119 BGCommon.RefreshPDoll (PDollButton, MinorColor, MajorColor, SkinColor, HairColor) 120 return 121 if ColorIndex==2: 122 MinorColor=PickedColor 123 MajorButton.SetBAM("COLGRAD", 0, 0, MinorColor) 124 BGCommon.RefreshPDoll (PDollButton, MinorColor, MajorColor, SkinColor, HairColor) 125 return 126 127 MajorColor=PickedColor 128 MinorButton.SetBAM("COLGRAD", 0, 0, MajorColor) 129 BGCommon.RefreshPDoll (PDollButton, MinorColor, MajorColor, SkinColor, HairColor) 130 return 131 132def GetColor(): 133 global ColorPicker 134 135 ColorPicker=GemRB.LoadWindow(14) 136 GemRB.SetVar("Selected",-1) 137 for i in range(34): 138 Button = ColorPicker.GetControl(i) 139 Button.SetState(IE_GUI_BUTTON_LOCKED) 140 Button.SetFlags(IE_GUI_BUTTON_PICTURE,OP_OR) 141 142 for i in range(34): 143 MyColor = ColorTable.GetValue(ColorIndex, i) 144 if MyColor == "*": 145 Button = ColorPicker.GetControl(i) 146 Button.SetFlags(IE_GUI_BUTTON_PICTURE, OP_NAND) 147 continue 148 Button = ColorPicker.GetControl(i) 149 Button.SetBAM("COLGRAD", 2, 0, MyColor) 150 if PickedColor == MyColor: 151 GemRB.SetVar("Selected",i) 152 Button.SetState(IE_GUI_BUTTON_ENABLED) 153 Button.SetVarAssoc("Selected",i) 154 Button.SetEvent(IE_GUI_BUTTON_ON_PRESS, DonePress) 155 156 ColorPicker.ShowModal(MODAL_SHADOW_NONE) 157 return 158 159def HairPress(): 160 global ColorIndex, PickedColor 161 162 ColorWindow.SetVisible(False) 163 ColorIndex = 0 164 PickedColor = HairColor 165 GetColor() 166 return 167 168def SkinPress(): 169 global ColorIndex, PickedColor 170 171 ColorWindow.SetVisible(False) 172 ColorIndex = 1 173 PickedColor = SkinColor 174 GetColor() 175 return 176 177def MajorPress(): 178 global ColorIndex, PickedColor 179 180 ColorWindow.SetVisible(False) 181 ColorIndex = 2 182 PickedColor = MinorColor 183 GetColor() 184 return 185 186def MinorPress(): 187 global ColorIndex, PickedColor 188 189 ColorWindow.SetVisible(False) 190 ColorIndex = 3 191 PickedColor = MajorColor 192 GetColor() 193 return 194 195 196def NextPress(): 197 ColorWindow.Close() 198 MyChar = GemRB.GetVar ("Slot") 199 GUICommon.SetColorStat (MyChar, IE_HAIR_COLOR, HairColor ) 200 GUICommon.SetColorStat (MyChar, IE_SKIN_COLOR, SkinColor ) 201 GUICommon.SetColorStat (MyChar, IE_MAJOR_COLOR, MajorColor) 202 GUICommon.SetColorStat (MyChar, IE_MINOR_COLOR, MinorColor ) 203 CharGenCommon.next() 204 return 205