def OpenJournalWindow(): global StartTime, StartYear global JournalWindow, Chapter global PortraitWindow, OptionsWindow global OldPortraitWindow, OldOptionsWindow Table = GemRB.LoadTable("YEARS") #StartTime is the time offset for ingame time, beginning from the startyear StartTime = Table.GetValue("STARTTIME", "VALUE") / 4500 #StartYear is the year of the lowest ingame date to be printed StartYear = Table.GetValue("STARTYEAR", "VALUE") if GUICommon.CloseOtherWindow(OpenJournalWindow): GemRB.HideGUI() if JournalWindow: JournalWindow.Unload() if OptionsWindow: OptionsWindow.Unload() if PortraitWindow: PortraitWindow.Unload() JournalWindow = None GemRB.SetVar("OtherWindow", -1) GUICommon.GameWindow.SetVisible(WINDOW_VISIBLE) GemRB.UnhideGUI() GUICommonWindows.PortraitWindow = OldPortraitWindow OldPortraitWindow = None GUICommonWindows.OptionsWindow = OldOptionsWindow OldOptionsWindow = None GUICommonWindows.SetSelectionChangeHandler(None) return GemRB.HideGUI() GUICommon.GameWindow.SetVisible(WINDOW_INVISIBLE) GemRB.LoadWindowPack("GUIJRNL", 800, 600) JournalWindow = Window = GemRB.LoadWindow(2) GemRB.SetVar("OtherWindow", JournalWindow.ID) #saving the original portrait window OldPortraitWindow = GUICommonWindows.PortraitWindow PortraitWindow = GUICommonWindows.OpenPortraitWindow() OldOptionsWindow = GUICommonWindows.OptionsWindow OptionsWindow = GemRB.LoadWindow(0) GUICommonWindows.SetupMenuWindowControls(OptionsWindow, 0, OpenJournalWindow) Window.SetFrame() Button = Window.GetControl(3) Button.SetEvent(IE_GUI_BUTTON_ON_PRESS, JournalPrevSectionPress) Button = Window.GetControl(4) Button.SetEvent(IE_GUI_BUTTON_ON_PRESS, JournalNextSectionPress) Chapter = GemRB.GetGameVar("chapter") Window.SetVisible(WINDOW_VISIBLE) OptionsWindow.SetVisible(WINDOW_VISIBLE) PortraitWindow.SetVisible(WINDOW_VISIBLE) # this is here just so we redraw the portrait borders properly in case of reselection GUICommonWindows.SetSelectionChangeHandler(UpdateJournalWindow) UpdateJournalWindow()
def OnLoad(): global MessageWindow, PortraitWindow GemRB.GameSetPartySize(PARTY_SIZE) GemRB.GameSetProtagonistMode(2) GemRB.SetDefaultActions(1,14,16,17) GemRB.LoadWindowPack(GUICommon.GetWindowPack()) OptionsWindow = MessageWindow = GemRB.LoadWindow(0) ActionsWindow = PortraitWindow = GUICommonWindows.OpenPortraitWindow() GemRB.SetVar ("MessageWindow", MessageWindow.ID) GemRB.SetVar ("PortraitWindow", PortraitWindow.ID) GemRB.SetVar ("ActionsWindow", 12345) # dummy so the EF_ACTION callback works GemRB.SetVar ("TopWindow", -1) GemRB.SetVar ("OtherWindow", -1) GemRB.SetVar ("FloatWindow", -1) GemRB.SetVar ("ActionsPosition", -1) #already handled in portraitwindow GemRB.SetVar ("OptionsPosition", -1) #already handled in messagewindow GemRB.SetVar ("MessagePosition", 4) GemRB.SetVar ("PortraitPosition", 4) GemRB.SetVar ("OtherPosition", 5) #Inactivating GemRB.SetVar ("TopPosition", 5) #Inactivating GUICommonWindows.SetupMenuWindowControls (OptionsWindow, 1, None) MessageWindow.SetVisible(WINDOW_VISIBLE) PortraitWindow.SetVisible(WINDOW_VISIBLE) return
def OnLoad(): global PortraitWindow, OptionsWindow GemRB.GameSetPartySize(PARTY_SIZE) GemRB.GameSetProtagonistMode(1) GemRB.LoadWindowPack(GUICommon.GetWindowPack()) GUICommonWindows.PortraitWindow = None GUICommonWindows.ActionsWindow = None GUICommonWindows.OptionsWindow = None ActionsWindow = GemRB.LoadWindow(3) OptionsWindow = GemRB.LoadWindow(0) PortraitWindow = GUICommonWindows.OpenPortraitWindow(1) GemRB.SetVar("PortraitWindow", PortraitWindow.ID) GemRB.SetVar("ActionsWindow", ActionsWindow.ID) GemRB.SetVar("OptionsWindow", OptionsWindow.ID) GemRB.SetVar("TopWindow", -1) GemRB.SetVar("OtherWindow", -1) GemRB.SetVar("FloatWindow", -1) GemRB.SetVar("PortraitPosition", 2) #Right GemRB.SetVar("ActionsPosition", 4) #BottomAdded GemRB.SetVar("OptionsPosition", 0) #Left GemRB.SetVar("MessagePosition", 4) #BottomAdded GemRB.SetVar("OtherPosition", 5) #Inactivating GemRB.SetVar("TopPosition", 5) #Inactivating GUICommonWindows.OpenActionsWindowControls(ActionsWindow) GUICommonWindows.SetupMenuWindowControls(OptionsWindow, 1, None) UpdateControlStatus()
def OnLoad(): # just load the medium window always. we can shrink/expand it, but it is the one with both controls # this saves us from haveing to bend over backwards to load the new window and move the text to it (its also shorter code) # for reference: medium = 12 = guiwdmb8, large = 7 = guwbtp38, small = 4 = guwbtp28 MessageWindow = GemRB.LoadWindow(12, GUICommon.GetWindowPack(), WINDOW_BOTTOM|WINDOW_HCENTER) MessageWindow.SetFlags(WF_BORDERLESS|IE_GUI_VIEW_IGNORE_EVENTS, OP_OR) MessageWindow.AddAlias("MSGWIN") MessageWindow.AddAlias("HIDE_CUT", 0) TMessageTA = MessageWindow.GetControl(1) TMessageTA.SetFlags(IE_GUI_TEXTAREA_AUTOSCROLL|IE_GUI_TEXTAREA_HISTORY) TMessageTA.SetResizeFlags(IE_GUI_VIEW_RESIZE_ALL) TMessageTA.AddAlias("MsgSys", 0) TMessageTA.SetColor({'r' : 255, 'g' : 0, 'b' : 0}, TA_COLOR_OPTIONS) TMessageTA.SetColor({'r' : 255, 'g' : 255, 'b' : 255}, TA_COLOR_HOVER) sbar = MessageWindow.GetControl(2) sbar.SetResizeFlags(IE_GUI_VIEW_RESIZE_VERTICAL) ActionsWindow = GemRB.LoadWindow(3, GUICommon.GetWindowPack(), WINDOW_BOTTOM|WINDOW_HCENTER) GUICommonWindows.OpenActionsWindowControls (ActionsWindow) ActionsWindow.SetFlags(WF_BORDERLESS|IE_GUI_VIEW_IGNORE_EVENTS, OP_OR) ActionsWindow.AddAlias("ACTWIN") ActionsWindow.AddAlias("HIDE_CUT", 1) ActionsWindow.AddAlias("NOT_DLG", 0) aFrame = ActionsWindow.GetFrame() mFrame = MessageWindow.GetFrame() MessageWindow.SetPos(mFrame['x'], mFrame['y'] - aFrame['h']) Button = ActionsWindow.GetControl(60) if Button: Button.SetEvent(IE_GUI_BUTTON_ON_PRESS, lambda: ToggleWindowMinimize(OptionsWindow, GS_OPTIONPANE)) Button = ActionsWindow.GetControl(61) Button.SetEvent(IE_GUI_BUTTON_ON_PRESS, lambda: ToggleWindowMinimize(PortraitWindow, GS_PORTRAITPANE)) if GameCheck.HasHOW(): OptionsWindow = GemRB.LoadWindow(25, GUICommon.GetWindowPack(), WINDOW_LEFT|WINDOW_VCENTER) else: OptionsWindow = GemRB.LoadWindow(0, GUICommon.GetWindowPack(), WINDOW_LEFT|WINDOW_VCENTER) OptionsWindow.SetFlags(WF_BORDERLESS|IE_GUI_VIEW_IGNORE_EVENTS, OP_OR) OptionsWindow.AddAlias("OPTWIN") OptionsWindow.AddAlias("HIDE_CUT", 2) OptionsWindow.AddAlias("NOT_DLG", 1) GUICommonWindows.SetupMenuWindowControls (OptionsWindow, 1, None) PortraitWindow = GUICommonWindows.OpenPortraitWindow(1) PortraitWindow.AddAlias("HIDE_CUT", 3) PortraitWindow.AddAlias("NOT_DLG", 2) # 1280 and higher don't have this control Button = OptionsWindow.GetControl (10) if Button: Button.SetEvent (IE_GUI_BUTTON_ON_PRESS, lambda: ToggleWindowMinimize(OptionsWindow, GS_OPTIONPANE)) Button = PortraitWindow.GetControl (8) Button.SetEvent (IE_GUI_BUTTON_ON_PRESS, lambda: ToggleWindowMinimize(PortraitWindow, GS_PORTRAITPANE)) UpdateControlStatus(True)
def OnLoad(): global MWindow # TODO: we can uncomment the "HIDE_CUT" lines below to hide the windows for cutscenes # the original doesn't hide them and it looks like there is a map drawing bug at the bottom of the screen due to the bottom # row of tiles getting squished for not fitting perfectly on screen (tho I havent seen this in BG2, but maybe wasnt paying attention) ActionsWindow = GemRB.LoadWindow(0, GUICommon.GetWindowPack(), WINDOW_BOTTOM | WINDOW_LEFT) ActionsWindow.AddAlias("ACTWIN") #ActionsWindow.AddAlias("HIDE_CUT", 1) ActionsWindow.AddAlias("NOT_DLG", 0) ActionsWindow.SetFlags(WF_BORDERLESS | IE_GUI_VIEW_IGNORE_EVENTS, OP_OR) OptionsWindow = GemRB.LoadWindow(2, GUICommon.GetWindowPack(), WINDOW_BOTTOM | WINDOW_RIGHT) OptionsWindow.AddAlias("OPTWIN") #OptionsWindow.AddAlias("HIDE_CUT", 2) OptionsWindow.AddAlias("NOT_DLG", 1) OptionsWindow.SetFlags(WF_BORDERLESS | IE_GUI_VIEW_IGNORE_EVENTS, OP_OR) GemRB.SetVar("PortraitPosition", 1) MWindow = GemRB.LoadWindow(7, GUICommon.GetWindowPack(), WINDOW_BOTTOM | WINDOW_HCENTER) MWindow.SetFlags(WF_DESTROY_ON_CLOSE, OP_NAND) MWindow.AddAlias("MSGWIN") MWindow.AddAlias("HIDE_CUT", 0) MWindow.SetFlags(WF_BORDERLESS | IE_GUI_VIEW_IGNORE_EVENTS, OP_OR) PortraitWindow = GUICommonWindows.OpenPortraitWindow( 1, WINDOW_BOTTOM | WINDOW_HCENTER) #PortraitWindow.AddAlias("HIDE_CUT", 3) PortraitWindow.AddAlias("NOT_DLG", 2) PortraitWindow.SetFlags(WF_BORDERLESS | IE_GUI_VIEW_IGNORE_EVENTS, OP_OR) pframe = PortraitWindow.GetFrame() pframe['x'] -= 16 PortraitWindow.SetFrame(pframe) MessageTA = MWindow.GetControl(1) MessageTA.SetFlags(IE_GUI_TEXTAREA_AUTOSCROLL | IE_GUI_TEXTAREA_HISTORY) MessageTA.SetResizeFlags(IE_GUI_VIEW_RESIZE_ALL) MessageTA.AddAlias("MsgSys", 0) MessageTA.SetColor({'r': 255, 'g': 0, 'b': 0}, TA_COLOR_OPTIONS) MessageTA.SetColor({'r': 255, 'g': 255, 'b': 255}, TA_COLOR_HOVER) CloseButton = MWindow.GetControl(0) CloseButton.SetText(28082) CloseButton.SetEvent(IE_GUI_BUTTON_ON_PRESS, lambda: MWindow.Close()) CloseButton.MakeDefault() OpenButton = OptionsWindow.GetControl(10) OpenButton.SetEvent(IE_GUI_BUTTON_ON_PRESS, lambda: MWindow.Focus()) SetupClockWindowControls(ActionsWindow) GUICommonWindows.SetupMenuWindowControls(OptionsWindow) UpdateControlStatus()
def ShowMap (): global MapWindow, OptionsWindow, PortraitWindow global OldPortraitWindow, OldOptionsWindow if GUICommon.CloseOtherWindow (ShowMap): if MapWindow: MapWindow.Unload () if OptionsWindow: OptionsWindow.Unload () if PortraitWindow: PortraitWindow.Unload () MapWindow = None #this window type should block the game GemRB.SetVar ("OtherWindow", -1) GUICommon.GameWindow.SetVisible(WINDOW_VISIBLE) GemRB.UnhideGUI () GUICommonWindows.PortraitWindow = OldPortraitWindow OldPortraitWindow = None GUICommonWindows.OptionsWindow = OldOptionsWindow OldOptionsWindow = None return GemRB.HideGUI () GUICommon.GameWindow.SetVisible(WINDOW_INVISIBLE) GemRB.LoadWindowPack ("GUIMAP", 640, 480) MapWindow = Window = GemRB.LoadWindow (2) #this window type blocks the game normally, but map window doesn't GemRB.SetVar ("OtherWindow", MapWindow.ID) #saving the original portrait window OldOptionsWindow = GUICommonWindows.OptionsWindow OptionsWindow = GemRB.LoadWindow (0) GUICommonWindows.SetupMenuWindowControls (OptionsWindow, 0, ShowMap) OldPortraitWindow = GUICommonWindows.PortraitWindow PortraitWindow = GUICommonWindows.OpenPortraitWindow (0) OptionsWindow.SetFrame () # World Map Button = Window.GetControl (1) Button.SetState (IE_GUI_BUTTON_LOCKED) # Map Control Window.CreateMapControl (2, 0, 0, 0, 0) Map = Window.GetControl (2) Map.SetEvent (IE_GUI_MAP_ON_PRESS, RevealMap) Window.SetVisible (WINDOW_VISIBLE) OptionsWindow.SetVisible (WINDOW_GRAYED) PortraitWindow.SetVisible (WINDOW_GRAYED) OptionsWindow.SetVisible (WINDOW_FRONT) PortraitWindow.SetVisible (WINDOW_FRONT) Window.SetVisible (WINDOW_FRONT) Map.SetStatus (IE_GUI_CONTROL_FOCUSED) GemRB.GamePause (0,0) return
def OpenMapWindow (): global MapWindow, OptionsWindow, PortraitWindow global OldPortraitWindow, OldOptionsWindow if GUICommon.CloseOtherWindow (OpenMapWindow): if MapWindow: MapWindow.Unload () if OptionsWindow: OptionsWindow.Unload () if PortraitWindow: PortraitWindow.Unload () MapWindow = None #this window type should block the game GemRB.SetVar ("OtherWindow", -1) GUICommon.GameWindow.SetVisible(WINDOW_VISIBLE) #OldOptionsWindow.SetVisible (WINDOW_VISIBLE) #OldPortraitWindow.SetVisible (WINDOW_VISIBLE) GemRB.UnhideGUI () GUICommonWindows.PortraitWindow = OldPortraitWindow OldPortraitWindow = None GUICommonWindows.OptionsWindow = OldOptionsWindow OldOptionsWindow = None return GemRB.HideGUI () GUICommon.GameWindow.SetVisible(WINDOW_INVISIBLE) GemRB.LoadWindowPack ("GUIMAP", 640, 480) MapWindow = Window = GemRB.LoadWindow (2) #this window type blocks the game normally, but map window doesn't GemRB.SetVar ("OtherWindow", MapWindow.ID) #saving the original portrait window OldOptionsWindow = GUICommonWindows.OptionsWindow OptionsWindow = GemRB.LoadWindow (0) GUICommonWindows.MarkMenuButton (OptionsWindow) GUICommonWindows.SetupMenuWindowControls (OptionsWindow, 0, OpenMapWindow) OldPortraitWindow = GUICommonWindows.PortraitWindow PortraitWindow = GUICommonWindows.OpenPortraitWindow (0) OptionsWindow.SetFrame () # World Map Button = Window.GetControl (1) Button.SetEvent (IE_GUI_BUTTON_ON_PRESS, OpenWorldMapWindowInside) # Map Control Window.CreateMapControl (2, 0, 0, 0, 0) Map = Window.GetControl (2) Map.SetEvent (IE_GUI_MAP_ON_DOUBLE_PRESS, LeftDoublePressMap) #OldOptionsWindow.SetVisible (WINDOW_INVISIBLE) #OldPortraitWindow.SetVisible (WINDOW_INVISIBLE) OptionsWindow.SetVisible (WINDOW_VISIBLE) Window.SetVisible (WINDOW_VISIBLE) PortraitWindow.SetVisible (WINDOW_VISIBLE) Map.SetStatus (IE_GUI_CONTROL_FOCUSED)
def OnLoad(): global smallID, largeID OptionsWindow = GemRB.LoadWindow(0, GUICommon.GetWindowPack(), WINDOW_BOTTOM | WINDOW_HCENTER) OptionsWindow.SetFlags(WF_BORDERLESS | IE_GUI_VIEW_IGNORE_EVENTS, OP_OR) OptionsWindow.AddAlias("OPTWIN") OptionsWindow.AddAlias("HIDE_CUT", 2) OptionsWindow.AddAlias("NOT_DLG", 1) GUICommonWindows.SetupMenuWindowControls(OptionsWindow, 1, None) # this also has the small MTA window OptionsWindow.AddAlias("MSGWIN") # compensate for the bogus scrollbar on the CHU BG smallMTA = OptionsWindow.GetControl(1) smallMTA.AddAlias("MsgSys", 0) smallMTA.AddAlias("MTA_SM", 0, True) smallMTA.SetFlags(IE_GUI_TEXTAREA_AUTOSCROLL | IE_GUI_TEXTAREA_HISTORY) smallMTA.SetColor({'r': 255, 'g': 0, 'b': 0}, TA_COLOR_OPTIONS) smallMTA.SetColor({'r': 255, 'g': 255, 'b': 255}, TA_COLOR_HOVER) smallID = smallMTA.ID sbar = OptionsWindow.GetControl(2) sbar.SetResizeFlags(IE_GUI_VIEW_RESIZE_VERTICAL | IE_GUI_VIEW_RESIZE_RIGHT) # remove the cheat input textedit OptionsWindow.RemoveSubview(OptionsWindow.GetControl(3)) ActionsWindow = GUICommonWindows.OpenPortraitWindow( 0, WINDOW_BOTTOM | WINDOW_HCENTER) ActionsWindow.SetFlags(WF_BORDERLESS | IE_GUI_VIEW_IGNORE_EVENTS, OP_OR) ActionsWindow.AddAlias("ACTWIN") ActionsWindow.AddAlias("HIDE_CUT", 1) ActionsWindow.AddAlias("NOT_DLG", 0) actframe = ActionsWindow.GetFrame() optframe = OptionsWindow.GetFrame() actframe['y'] -= optframe['h'] ActionsWindow.SetFrame(actframe) DialogWindow = GemRB.LoadWindow(7, GUICommon.GetWindowPack(), WINDOW_BOTTOM | WINDOW_HCENTER) DialogWindow.SetFlags( WF_BORDERLESS | IE_GUI_VIEW_IGNORE_EVENTS | IE_GUI_VIEW_INVISIBLE, OP_OR) DialogWindow.AddAlias("MSGWINLG") DialogWindow.AddAlias("HIDE_CUT", 0) DialogWindow.AddAlias("NOT_DLG", 2) largeMTA = DialogWindow.GetControl(1) largeMTA.AddAlias("MTA_LG", 0, True) largeID = largeMTA.ID return
def OnLoad(): global MessageWindow, ActionsWindow, PortraitWindow, OptionsWindow GemRB.GameSetPartySize(PARTY_SIZE) GemRB.GameSetProtagonistMode(0) GemRB.LoadWindowPack(GUICommon.GetWindowPack()) GemRB.SetInfoTextColor(0, 255, 0, 255) ActionsWindow = GemRB.LoadWindow(0) OptionsWindow = GemRB.LoadWindow(2) MessageWindow = GemRB.LoadWindow(7) PortraitWindow = GUICommonWindows.OpenPortraitWindow(1) MessageTA = MessageWindow.GetControl(1) MessageTA.SetFlags(IE_GUI_TEXTAREA_AUTOSCROLL | IE_GUI_TEXTAREA_HISTORY) GemRB.SetVar("MessageTextArea", MessageTA.ID) GemRB.SetVar("ActionsWindow", ActionsWindow.ID) GemRB.SetVar("OptionsWindow", OptionsWindow.ID) GemRB.SetVar("MessageWindow", -1) GemRB.SetVar("OtherWindow", -1) GemRB.SetVar("ActionsPosition", 1) #Bottom GemRB.SetVar("OptionsPosition", 1) #Bottom GemRB.SetVar("MessagePosition", 1) #Bottom GemRB.SetVar("OtherPosition", 0) #Left GemRB.GameSetScreenFlags(0, OP_SET) CloseButton = MessageWindow.GetControl(0) CloseButton.SetText(28082) CloseButton.SetEvent(IE_GUI_BUTTON_ON_PRESS, CommonWindow.OnDecreaseSize) CloseButton.SetFlags(IE_GUI_BUTTON_DEFAULT | IE_GUI_BUTTON_MULTILINE, OP_OR) OpenButton = OptionsWindow.GetControl(10) OpenButton.SetEvent(IE_GUI_BUTTON_ON_PRESS, CommonWindow.OnIncreaseSize) # Select all Button = ActionsWindow.GetControl(1) Button.SetEvent(IE_GUI_BUTTON_ON_PRESS, GUICommon.SelectAllOnPress) # Select all Button = ActionsWindow.GetControl(3) Button.SetEvent(IE_GUI_BUTTON_ON_PRESS, GUICommonWindows.ActionStopPressed) FormationButton = ActionsWindow.GetControl(4) FormationButton.SetEvent(IE_GUI_BUTTON_ON_PRESS, GUIWORLD.OpenFormationWindow) GUICommonWindows.SetupClockWindowControls(ActionsWindow) GUICommonWindows.SetupMenuWindowControls(OptionsWindow) UpdateControlStatus()
def OpenMageWindow(): global MageWindow, OptionsWindow, PortraitWindow, OtherWindow, MageSpellInfoWindow global OldPortraitWindow, OldOptionsWindow if GUICommon.CloseOtherWindow(OpenMageWindow): CloseMageSpellUnmemorizeWindow() if MageSpellInfoWindow: MageSpellInfoWindow.Unload() MageSpellInfoWindow = None if OtherWindow: OtherWindow.Unload() OtherWindow = None if MageWindow: MageWindow.Unload() if OptionsWindow: OptionsWindow.Unload() if PortraitWindow: PortraitWindow.Unload() MageWindow = None GemRB.SetVar("OtherWindow", -1) GUICommon.GameWindow.SetVisible(WINDOW_VISIBLE) GemRB.UnhideGUI() GUICommonWindows.PortraitWindow = OldPortraitWindow OldPortraitWindow = None GUICommonWindows.OptionsWindow = OldOptionsWindow OldOptionsWindow = None GUICommonWindows.SetSelectionChangeHandler(None) return GemRB.HideGUI() GUICommon.GameWindow.SetVisible(WINDOW_INVISIBLE) GemRB.LoadWindowPack("GUIMG", 640, 480) #saving the original portrait window OldOptionsWindow = GUICommonWindows.OptionsWindow OptionsWindow = GemRB.LoadWindow(0) GUICommonWindows.MarkMenuButton(OptionsWindow) GUICommonWindows.SetupMenuWindowControls(OptionsWindow, 0, OpenMageWindow) OptionsWindow.SetFrame() OldPortraitWindow = GUICommonWindows.PortraitWindow PortraitWindow = GUICommonWindows.OpenPortraitWindow(0) GUICommonWindows.SetSelectionChangeHandler(SetupMageWindow) SetupMageWindow() return
def OnLoad(): global PortraitWindow, OptionsWindow GemRB.GameSetPartySize(PARTY_SIZE) GemRB.GameSetProtagonistMode(1) GemRB.LoadWindowPack(GUICommon.GetWindowPack()) GUICommonWindows.PortraitWindow = None GUICommonWindows.ActionsWindow = None GUICommonWindows.OptionsWindow = None OptionsWindow = GemRB.LoadWindow(0) GUICommonWindows.SetupMenuWindowControls(OptionsWindow, 1, None) PortraitWindow = GUICommonWindows.OpenPortraitWindow(1) # 1280 and higher don't have this control if OptionsWindow.HasControl(10): Button = OptionsWindow.GetControl(10) Button.SetEvent(IE_GUI_BUTTON_ON_PRESS, MinimizeOptions) Button = PortraitWindow.GetControl(8) Button.SetEvent(IE_GUI_BUTTON_ON_PRESS, GUICommonWindows.MinimizePortraits) ActionsWindow = GemRB.LoadWindow(3) GUICommonWindows.OpenActionsWindowControls(ActionsWindow) if ActionsWindow.HasControl(60): Button = ActionsWindow.GetControl(60) Button.SetEvent(IE_GUI_BUTTON_ON_PRESS, MaximizeOptions) Button = ActionsWindow.GetControl(61) Button.SetEvent(IE_GUI_BUTTON_ON_PRESS, MaximizePortraits) GemRB.SetVar("PortraitWindow", PortraitWindow.ID) GemRB.SetVar("ActionsWindow", ActionsWindow.ID) GemRB.SetVar("OptionsWindow", OptionsWindow.ID) GemRB.SetVar("TopWindow", -1) GemRB.SetVar("OtherWindow", -1) GemRB.SetVar("FloatWindow", -1) GemRB.SetVar("PortraitPosition", 2) #Right GemRB.SetVar("ActionsPosition", 4) #BottomAdded GemRB.SetVar("OptionsPosition", 0) #Left GemRB.SetVar("MessagePosition", 4) #BottomAdded GemRB.SetVar("OtherPosition", 5) #Inactivating GemRB.SetVar("TopPosition", 5) #Inactivating UpdateControlStatus()
def WorldMapWindowCommon(Travel): global WorldMapWindow, WorldMapControl global OptionsWindow, PortraitWindow global OldPortraitWindow, OldOptionsWindow if GUICommon.CloseOtherWindow(CloseWorldMapWindow): return GemRB.HideGUI() GUICommon.GameWindow.SetVisible(WINDOW_INVISIBLE) GemRB.LoadWindowPack("GUIWMAP", 800, 600) WorldMapWindow = Window = GemRB.LoadWindow(2) #(fuzzie just copied this from the map window code..) GemRB.SetVar("OtherWindow", WorldMapWindow.ID) #saving the original portrait window OldPortraitWindow = GUICommonWindows.PortraitWindow PortraitWindow = GUICommonWindows.OpenPortraitWindow() OldOptionsWindow = GUICommonWindows.OptionsWindow OptionsWindow = GemRB.LoadWindow(0) GUICommonWindows.SetupMenuWindowControls(OptionsWindow, 0, OpenMapWindow) OptionsWindow.SetFrame() Window.CreateWorldMapControl(4, 0, 62, 640, 418, Travel, "infofont") WorldMapControl = Window.GetControl(4) WorldMapControl.SetAnimation("WMDAG") WorldMapControl.SetEvent(IE_GUI_WORLDMAP_ON_PRESS, MoveToNewArea) WorldMapControl.SetEvent(IE_GUI_MOUSE_ENTER_WORLDMAP, ChangeTooltip) # Done Button = Window.GetControl(0) if Travel >= 0: Button.SetEvent(IE_GUI_BUTTON_ON_PRESS, OpenWorldMapWindow) else: Button.SetEvent(IE_GUI_BUTTON_ON_PRESS, OpenMapWindow) Window.SetVisible(WINDOW_VISIBLE) WorldMapControl.SetStatus(IE_GUI_CONTROL_FOCUSED)
def OnLoad(): global PortraitWindow, OptionsWindow GemRB.GameSetPartySize (MAX_PARTY_SIZE) GemRB.GameSetProtagonistMode (2) GemRB.LoadWindowPack (GUICommon.GetWindowPack()) GUICommonWindows.PortraitWindow = None GUICommonWindows.ActionsWindow = None GUICommonWindows.OptionsWindow = None #this is different in IWD (0) and HoW (25) if GameCheck.HasHOW(): OptionsWindow = GemRB.LoadWindow (25) else: OptionsWindow = GemRB.LoadWindow (0) GUICommonWindows.SetupMenuWindowControls (OptionsWindow, 1, None) PortraitWindow = GUICommonWindows.OpenPortraitWindow (1) ActionsWindow = GemRB.LoadWindow (3) GUICommonWindows.OpenActionsWindowControls (ActionsWindow) GemRB.SetVar ("PortraitWindow", PortraitWindow.ID) GemRB.SetVar ("ActionsWindow", ActionsWindow.ID) GemRB.SetVar ("OptionsWindow", OptionsWindow.ID) GemRB.SetVar ("TopWindow", -1) GemRB.SetVar ("OtherWindow", -1) GemRB.SetVar ("FloatWindow", -1) GemRB.SetVar ("PortraitPosition", 2) #Right GemRB.SetVar ("ActionsPosition", 4) #BottomAdded GemRB.SetVar ("OptionsPosition", 0) #Left GemRB.SetVar ("MessagePosition", 4) #BottomAdded GemRB.SetVar ("OtherPosition", 5) #Inactivating GemRB.SetVar ("TopPosition", 5) #Inactivating UpdateControlStatus ()
def WorldMapWindowCommon(Travel): global WorldMapWindow, WorldMapControl global OptionsWindow, PortraitWindow global OldPortraitWindow, OldOptionsWindow if GUICommon.CloseOtherWindow(CloseWorldMapWindow): CloseWorldMapWindow() return GemRB.HideGUI() GUICommon.GameWindow.SetVisible(WINDOW_INVISIBLE) if GameCheck.IsIWD2(): GemRB.LoadWindowPack("GUIWMAP", 800, 600) WorldMapWindow = Window = GemRB.LoadWindow(2) else: GemRB.LoadWindowPack("GUIWMAP", 640, 480) WorldMapWindow = Window = GemRB.LoadWindow(0) #(fuzzie just copied this from the map window code..) GemRB.SetVar("OtherWindow", WorldMapWindow.ID) Window.SetFrame() #saving the original portrait window if GameCheck.IsIWD2(): OldPortraitWindow = GUICommonWindows.PortraitWindow PortraitWindow = GUICommonWindows.OpenPortraitWindow() OldOptionsWindow = GUICommonWindows.OptionsWindow OptionsWindow = GemRB.LoadWindow(0) GUICommonWindows.SetupMenuWindowControls(OptionsWindow, 0, OpenMapWindow) OptionsWindow.SetFrame() if GameCheck.IsBG2(): Window.CreateWorldMapControl(4, 0, 62, 640, 418, Travel, "floattxt") elif GameCheck.IsBG1(): Window.CreateWorldMapControl(4, 0, 62, 640, 418, Travel, "toolfont", 1) WorldMapControl = Window.GetControl(4) WorldMapControl.SetTextColor(IE_GUI_WMAP_COLOR_BACKGROUND, 0xa4, 0x6a, 0x4c, 0x00) else: Window.CreateWorldMapControl(4, 0, 62, 640, 418, Travel, "infofont") WorldMapControl = Window.GetControl(4) WorldMapControl.SetAnimation("WMDAG") WorldMapControl.SetEvent(IE_GUI_WORLDMAP_ON_PRESS, MoveToNewArea) WorldMapControl.SetEvent(IE_GUI_MOUSE_ENTER_WORLDMAP, ChangeTooltip) # center on current area MapC() if not GameCheck.IsIWD2(): #north Button = Window.GetControl(1) Button.SetEvent(IE_GUI_BUTTON_ON_PRESS, MapN) #south Button = Window.GetControl(2) Button.SetEvent(IE_GUI_BUTTON_ON_PRESS, MapS) if GameCheck.IsBG2(): #northwest Button = Window.GetControl(8) Button.SetEvent(IE_GUI_BUTTON_ON_PRESS, MapNW) #northeast Button = Window.GetControl(9) Button.SetEvent(IE_GUI_BUTTON_ON_PRESS, MapNE) #west Button = Window.GetControl(10) Button.SetEvent(IE_GUI_BUTTON_ON_PRESS, MapW) #center Button = Window.GetControl(11) Button.SetEvent(IE_GUI_BUTTON_ON_PRESS, MapC) #east Button = Window.GetControl(12) Button.SetEvent(IE_GUI_BUTTON_ON_PRESS, MapE) #southwest Button = Window.GetControl(13) Button.SetEvent(IE_GUI_BUTTON_ON_PRESS, MapSW) #southeast Button = Window.GetControl(14) Button.SetEvent(IE_GUI_BUTTON_ON_PRESS, MapSE) # Done Button = Window.GetControl(0) if Travel >= 0: Button.SetEvent(IE_GUI_BUTTON_ON_PRESS, OpenWorldMapWindow) else: Button.SetEvent(IE_GUI_BUTTON_ON_PRESS, OpenMapWindow) Button.SetFlags(IE_GUI_BUTTON_CANCEL, OP_OR) Window.SetVisible(WINDOW_VISIBLE) WorldMapControl.SetStatus(IE_GUI_CONTROL_FOCUSED) return
def OpenMapWindow(): import GUICommonWindows global MapWindow, OptionsWindow, PortraitWindow global OldPortraitWindow, OldOptionsWindow if GUICommon.CloseOtherWindow(OpenMapWindow): if MapWindow: MapWindow.Unload() if OptionsWindow: OptionsWindow.Unload() if PortraitWindow: PortraitWindow.Unload() MapWindow = None #this window type should block the game GemRB.SetVar("OtherWindow", -1) GUICommon.GameWindow.SetVisible(WINDOW_VISIBLE) GemRB.UnhideGUI() GUICommonWindows.PortraitWindow = OldPortraitWindow OldPortraitWindow = None GUICommonWindows.OptionsWindow = OldOptionsWindow OldOptionsWindow = None return GemRB.HideGUI() GUICommon.GameWindow.SetVisible(WINDOW_INVISIBLE) GemRB.LoadWindowPack("GUIMAP", 640, 480) MapWindow = Window = GemRB.LoadWindow(2) #this window type blocks the game normally, but map window doesn't GemRB.SetVar("OtherWindow", MapWindow.ID) #saving the original portrait window OldOptionsWindow = GUICommonWindows.OptionsWindow OptionsWindow = GemRB.LoadWindow(0) GUICommonWindows.MarkMenuButton(OptionsWindow) GUICommonWindows.SetupMenuWindowControls(OptionsWindow, 0, OpenMapWindow) OldPortraitWindow = GUICommonWindows.PortraitWindow PortraitWindow = GUICommonWindows.OpenPortraitWindow(0) OptionsWindow.SetFrame() # World Map Button = Window.GetControl(1) Button.SetEvent(IE_GUI_BUTTON_ON_PRESS, OpenWorldMapWindowInside) # Hide or Show mapnotes Button = Window.GetControl(3) Button.SetFlags(IE_GUI_BUTTON_CHECKBOX, OP_OR) # Is this an option? GemRB.SetVar("ShowMapNotes", IE_GUI_MAP_VIEW_NOTES) Button.SetVarAssoc("ShowMapNotes", IE_GUI_MAP_VIEW_NOTES) Label = Window.GetControl(0x10000003) Label.SetText("") # Map Control Window.CreateMapControl(2, 0, 0, 0, 0, 0x10000003, "FLAG1") Map = Window.GetControl(2) Map.SetVarAssoc("ShowMapNotes", IE_GUI_MAP_VIEW_NOTES) Map.SetEvent(IE_GUI_MAP_ON_RIGHT_PRESS, AddNoteWindow) Map.SetEvent(IE_GUI_MAP_ON_DOUBLE_PRESS, LeftDoublePressMap) OptionsWindow.SetVisible(WINDOW_VISIBLE) Window.SetVisible(WINDOW_VISIBLE) PortraitWindow.SetVisible(WINDOW_VISIBLE) Map.SetStatus(IE_GUI_CONTROL_FOCUSED | IE_GUI_MAP_VIEW_NOTES) return
def OpenPriestWindow(): import GUICommonWindows global PriestWindow, OptionsWindow, PortraitWindow, PriestSpellInfoWindow global OldPortraitWindow, OldOptionsWindow if GUICommon.CloseOtherWindow(OpenPriestWindow): ClosePriestSpellUnmemorizeWindow() if PriestSpellInfoWindow: PriestSpellInfoWindow.Unload() PriestSpellInfoWindow = None if PriestWindow: PriestWindow.Unload() if OptionsWindow: OptionsWindow.Unload() if PortraitWindow: PortraitWindow.Unload() PriestWindow = None GemRB.SetVar("OtherWindow", -1) GUICommon.GameWindow.SetVisible(WINDOW_VISIBLE) GemRB.UnhideGUI() GUICommonWindows.PortraitWindow = OldPortraitWindow OldPortraitWindow = None GUICommonWindows.OptionsWindow = OldOptionsWindow OldOptionsWindow = None GUICommonWindows.SetSelectionChangeHandler(None) return GemRB.HideGUI() GUICommon.GameWindow.SetVisible(WINDOW_INVISIBLE) GemRB.LoadWindowPack("GUIPR", 640, 480) PriestWindow = Window = GemRB.LoadWindow(2) GemRB.SetVar("OtherWindow", PriestWindow.ID) #saving the original portrait window OldOptionsWindow = GUICommonWindows.OptionsWindow OptionsWindow = GemRB.LoadWindow(0) GUICommonWindows.MarkMenuButton(OptionsWindow) GUICommonWindows.SetupMenuWindowControls(OptionsWindow, 0, OpenPriestWindow) OptionsWindow.SetFrame() OldPortraitWindow = GUICommonWindows.PortraitWindow PortraitWindow = GUICommonWindows.OpenPortraitWindow(0) Button = Window.GetControl(1) Button.SetEvent(IE_GUI_BUTTON_ON_PRESS, PriestPrevLevelPress) Button = Window.GetControl(2) Button.SetEvent(IE_GUI_BUTTON_ON_PRESS, PriestNextLevelPress) #setup level buttons if GameCheck.IsBG2(): for i in range(7): Button = Window.GetControl(55 + i) Button.SetEvent(IE_GUI_BUTTON_ON_PRESS, RefreshPriestLevel) Button.SetFlags(IE_GUI_BUTTON_RADIOBUTTON, OP_OR) for i in range(7): Button = Window.GetControl(55 + i) Button.SetVarAssoc("PriestSpellLevel", i) # Setup memorized spells buttons for i in range(12): Button = Window.GetControl(3 + i) Button.SetBorder(0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 1) Button.SetSprites("SPELFRAM", 0, 0, 0, 0, 0) Button.SetFlags( IE_GUI_BUTTON_PICTURE | IE_GUI_BUTTON_PLAYONCE | IE_GUI_BUTTON_PLAYALWAYS, OP_OR) Button.SetState(IE_GUI_BUTTON_LOCKED) # Setup book spells buttons for i in range(GUICommon.GetGUISpellButtonCount()): Button = Window.GetControl(27 + i) Button.SetFlags( IE_GUI_BUTTON_NO_IMAGE | IE_GUI_BUTTON_PLAYONCE | IE_GUI_BUTTON_PLAYALWAYS, OP_OR) Button.SetState(IE_GUI_BUTTON_LOCKED) GUICommonWindows.SetSelectionChangeHandler(UpdatePriestWindow) UpdatePriestWindow() return
def OpenSpellBookWindow(): global SpellBookWindow, OptionsWindow, PortraitWindow global OldPortraitWindow, OldOptionsWindow if GUICommon.CloseOtherWindow(OpenSpellBookWindow): if SpellBookWindow: SpellBookWindow.Unload() if OptionsWindow: OptionsWindow.Unload() if PortraitWindow: PortraitWindow.Unload() SpellBookWindow = None GemRB.SetVar("OtherWindow", -1) GUICommon.GameWindow.SetVisible(WINDOW_VISIBLE) GemRB.UnhideGUI() GUICommonWindows.PortraitWindow = OldPortraitWindow OldPortraitWindow = None GUICommonWindows.OptionsWindow = OldOptionsWindow OldOptionsWindow = None GUICommonWindows.SetSelectionChangeHandler(None) return GemRB.HideGUI() GUICommon.GameWindow.SetVisible(WINDOW_INVISIBLE) GemRB.LoadWindowPack("GUISPL", 800, 600) SpellBookWindow = Window = GemRB.LoadWindow(2) GemRB.SetVar("OtherWindow", SpellBookWindow.ID) #saving the original portrait window OldPortraitWindow = GUICommonWindows.PortraitWindow PortraitWindow = GUICommonWindows.OpenPortraitWindow() OldOptionsWindow = GUICommonWindows.OptionsWindow OptionsWindow = GemRB.LoadWindow(0) GUICommonWindows.SetupMenuWindowControls(OptionsWindow, 0, OpenSpellBookWindow) Window.SetFrame() Button = Window.GetControl(92) Button.SetEvent(IE_GUI_BUTTON_ON_PRESS, SpellBookPrevPress) Button = Window.GetControl(93) Button.SetEvent(IE_GUI_BUTTON_ON_PRESS, SpellBookNextPress) #setup level buttons for i in range(9): Button = Window.GetControl(55 + i) Button.SetEvent(IE_GUI_BUTTON_ON_PRESS, RefreshSpellBookLevel) Button.SetFlags(IE_GUI_BUTTON_RADIOBUTTON, OP_OR) Button.SetVarAssoc("SpellBookSpellLevel", i) # Setup memorized spells buttons for i in range(24): Button = Window.GetControl(6 + i) Button.SetBorder(0, 0, 0, 0, 0, 0, 0, 0, 160, 0, 1) #Button.SetBAM ("SPELFRAM",0,0,0) Button.SetFlags( IE_GUI_BUTTON_PICTURE | IE_GUI_BUTTON_PLAYONCE | IE_GUI_BUTTON_NO_IMAGE, OP_OR) # Setup book spells buttons for i in range(8): Button = Window.GetControl(30 + i) Button.SetFlags(IE_GUI_BUTTON_PLAYONCE, OP_OR) Button.SetState(IE_GUI_BUTTON_LOCKED) Button.SetVarAssoc("SpellIndex", i) GUICommonWindows.SetSelectionChangeHandler(SelectedNewPlayer) SelectedNewPlayer() return
def OpenRecordsWindow(): import GUICommonWindows global RecordsWindow, OptionsWindow, PortraitWindow global OldPortraitWindow, OldOptionsWindow if GUICommon.CloseOtherWindow(OpenRecordsWindow): if InformationWindow: OpenInformationWindow() if RecordsWindow: RecordsWindow.Unload() if OptionsWindow: OptionsWindow.Unload() if PortraitWindow: PortraitWindow.Unload() RecordsWindow = None GemRB.SetVar("OtherWindow", -1) GUICommon.GameWindow.SetVisible(WINDOW_VISIBLE) GemRB.UnhideGUI() GUICommonWindows.PortraitWindow = OldPortraitWindow OldPortraitWindow = None GUICommonWindows.UpdatePortraitWindow() GUICommonWindows.OptionsWindow = OldOptionsWindow OldOptionsWindow = None GUICommonWindows.SetSelectionChangeHandler(None) return GemRB.HideGUI() GUICommon.GameWindow.SetVisible(WINDOW_INVISIBLE) GemRB.LoadWindowPack("GUIREC", 640, 480) RecordsWindow = Window = GemRB.LoadWindow(2) GemRB.SetVar("OtherWindow", RecordsWindow.ID) # saving the original portrait window OldOptionsWindow = GUICommonWindows.OptionsWindow OptionsWindow = GemRB.LoadWindow(0) GUICommonWindows.SetupMenuWindowControls(OptionsWindow, 0, OpenRecordsWindow) GUICommonWindows.MarkMenuButton(OptionsWindow) OptionsWindow.SetFrame() OldPortraitWindow = GUICommonWindows.PortraitWindow PortraitWindow = GUICommonWindows.OpenPortraitWindow(0) # dual class Button = Window.GetControl(0) Button.SetText(7174) Button.SetEvent(IE_GUI_BUTTON_ON_PRESS, DualClass.DualClassWindow) # levelup Button = Window.GetControl(37) Button.SetText(7175) Button.SetEvent(IE_GUI_BUTTON_ON_PRESS, LevelUp.OpenLevelUpWindow) # information Button = Window.GetControl(1) Button.SetText(11946) Button.SetEvent(IE_GUI_BUTTON_ON_PRESS, OpenInformationWindow) # reform party Button = Window.GetControl(51) Button.SetText(16559) Button.SetEvent(IE_GUI_BUTTON_ON_PRESS, OpenRecReformPartyWindow) # customize Button = Window.GetControl(50) Button.SetText(10645) Button.SetEvent(IE_GUI_BUTTON_ON_PRESS, GUIRECCommon.OpenCustomizeWindow) # export Button = Window.GetControl(36) Button.SetText(13956) Button.SetEvent(IE_GUI_BUTTON_ON_PRESS, GUIRECCommon.OpenExportWindow) # kit info if GameCheck.IsBG2(): Button = Window.GetControl(52) Button.SetText(61265) Button.SetEvent(IE_GUI_BUTTON_ON_PRESS, OpenKitInfoWindow) GUICommonWindows.SetSelectionChangeHandler(UpdateRecordsWindow) UpdateRecordsWindow() OptionsWindow.SetVisible(WINDOW_VISIBLE) Window.SetVisible(WINDOW_VISIBLE) PortraitWindow.SetVisible(WINDOW_VISIBLE) return
def OpenRecordsWindow (): global RecordsWindow, OptionsWindow, PortraitWindow global OldPortraitWindow, OldOptionsWindow, SelectWindow global BonusSpellTable, HateRaceTable if GUICommon.CloseOtherWindow (OpenRecordsWindow): if RecordsWindow: RecordsWindow.Unload () if OptionsWindow: OptionsWindow.Unload () if PortraitWindow: PortraitWindow.Unload () RecordsWindow = None GemRB.SetVar ("OtherWindow", -1) GUICommon.GameWindow.SetVisible(WINDOW_VISIBLE) GemRB.UnhideGUI () GUICommonWindows.PortraitWindow = OldPortraitWindow OldPortraitWindow = None GUICommonWindows.OptionsWindow = OldOptionsWindow OldOptionsWindow = None GUICommonWindows.SetSelectionChangeHandler (None) return GemRB.HideGUI () GUICommon.GameWindow.SetVisible(WINDOW_INVISIBLE) GemRB.LoadWindowPack ("GUIREC", 800, 600) RecordsWindow = Window = GemRB.LoadWindow (2) GemRB.SetVar ("OtherWindow", RecordsWindow.ID) #saving the original portrait window OldPortraitWindow = GUICommonWindows.PortraitWindow PortraitWindow = GUICommonWindows.OpenPortraitWindow () OldOptionsWindow = GUICommonWindows.OptionsWindow OptionsWindow = GemRB.LoadWindow (0) GUICommonWindows.SetupMenuWindowControls (OptionsWindow, 0, OpenRecordsWindow) Window.SetFrame () if not BonusSpellTable: BonusSpellTable = GemRB.LoadTable ("mxsplbon") if not HateRaceTable: HateRaceTable = GemRB.LoadTable ("haterace") #portrait icon Button = Window.GetControl (2) Button.SetState (IE_GUI_BUTTON_LOCKED) Button.SetFlags (IE_GUI_BUTTON_NO_IMAGE | IE_GUI_BUTTON_PICTURE, OP_SET) #information (help files) Button = Window.GetControl (1) Button.SetText (11946) Button.SetEvent (IE_GUI_BUTTON_ON_PRESS, OpenHelpWindow) #biography Button = Window.GetControl (59) Button.SetText (18003) Button.SetEvent (IE_GUI_BUTTON_ON_PRESS, GUIRECCommon.OpenBiographyWindow) #export Button = Window.GetControl (36) Button.SetText (13956) Button.SetEvent (IE_GUI_BUTTON_ON_PRESS, GUIRECCommon.OpenExportWindow) #customize Button = Window.GetControl (50) Button.SetText (10645) Button.SetEvent (IE_GUI_BUTTON_ON_PRESS, GUIRECCommon.OpenCustomizeWindow) #general GemRB.SetVar ("SelectWindow", 1) Button = Window.GetControl (60) Button.SetTooltip (40316) Button.SetVarAssoc ("SelectWindow", 1) Button.SetFlags (IE_GUI_BUTTON_RADIOBUTTON, OP_OR) Button.SetEvent (IE_GUI_BUTTON_ON_PRESS, UpdateRecordsWindow) #weapons and armour Button = Window.GetControl (61) Button.SetTooltip (40317) Button.SetVarAssoc ("SelectWindow", 2) Button.SetFlags (IE_GUI_BUTTON_RADIOBUTTON, OP_OR) Button.SetEvent (IE_GUI_BUTTON_ON_PRESS, UpdateRecordsWindow) #skills and feats Button = Window.GetControl (62) Button.SetTooltip (40318) Button.SetVarAssoc ("SelectWindow", 3) Button.SetFlags (IE_GUI_BUTTON_RADIOBUTTON, OP_OR) Button.SetEvent (IE_GUI_BUTTON_ON_PRESS, UpdateRecordsWindow) #miscellaneous Button = Window.GetControl (63) Button.SetTooltip (33500) Button.SetVarAssoc ("SelectWindow", 4) Button.SetFlags (IE_GUI_BUTTON_RADIOBUTTON, OP_OR) Button.SetEvent (IE_GUI_BUTTON_ON_PRESS, UpdateRecordsWindow) #level up Button = Window.GetControl (37) Button.SetText (7175) Button.SetEvent (IE_GUI_BUTTON_ON_PRESS, UpdateRecordsWindow) #TODO: OpenLevelUpWindow GUICommonWindows.SetSelectionChangeHandler (UpdateRecordsWindow) UpdateRecordsWindow () return
def OpenRecordsWindow(): import GUICommonWindows global RecordsWindow, OptionsWindow, PortraitWindow, PauseState global OldPortraitWindow, OldOptionsWindow if GUICommon.CloseOtherWindow(OpenRecordsWindow): if InformationWindow: OpenInformationWindow() GUIRECCommon.CloseSubSubCustomizeWindow() GUIRECCommon.CloseSubCustomizeWindow() GUIRECCommon.CloseCustomizeWindow() GUIRECCommon.ExportCancelPress() GUIRECCommon.CloseBiographyWindow() KitDonePress() CloseInformationWindow() if RecordsWindow: RecordsWindow.Unload() if OptionsWindow: OptionsWindow.Unload() if PortraitWindow: PortraitWindow.Unload() RecordsWindow = None GemRB.SetVar("OtherWindow", -1) GUICommon.GameWindow.SetVisible(WINDOW_VISIBLE) GemRB.UnhideGUI() GUICommonWindows.PortraitWindow = OldPortraitWindow OldPortraitWindow = None GUICommonWindows.UpdatePortraitWindow() GUICommonWindows.OptionsWindow = OldOptionsWindow OldOptionsWindow = None GUICommonWindows.SetSelectionChangeHandler(None) GemRB.GamePause(PauseState, 3) return PauseState = GemRB.GamePause(3, 1) GemRB.GamePause(1, 3) GemRB.HideGUI() GUICommon.GameWindow.SetVisible(WINDOW_INVISIBLE) GemRB.LoadWindowPack("GUIREC", 640, 480) RecordsWindow = Window = GemRB.LoadWindow(2) GemRB.SetVar("OtherWindow", RecordsWindow.ID) # saving the original portrait window OldOptionsWindow = GUICommonWindows.OptionsWindow OptionsWindow = GemRB.LoadWindow(0) GUICommonWindows.SetupMenuWindowControls(OptionsWindow, 0, OpenRecordsWindow) GUICommonWindows.MarkMenuButton(OptionsWindow) OptionsWindow.SetFrame() OldPortraitWindow = GUICommonWindows.PortraitWindow PortraitWindow = GUICommonWindows.OpenPortraitWindow(0) # dual class Button = Window.GetControl(0) Button.SetText(7174) Button.SetEvent(IE_GUI_BUTTON_ON_PRESS, DualClass.DualClassWindow) # levelup Button = Window.GetControl(37) Button.SetText(7175) Button.SetEvent(IE_GUI_BUTTON_ON_PRESS, LevelUp.OpenLevelUpWindow) # information Button = Window.GetControl(1) Button.SetText(11946) Button.SetEvent(IE_GUI_BUTTON_ON_PRESS, OpenInformationWindow) # reform party Button = Window.GetControl(51) Button.SetText(16559) Button.SetEvent(IE_GUI_BUTTON_ON_PRESS, OpenRecReformPartyWindow) # customize Button = Window.GetControl(50) Button.SetText(10645) Button.SetEvent(IE_GUI_BUTTON_ON_PRESS, GUIRECCommon.OpenCustomizeWindow) # export Button = Window.GetControl(36) Button.SetText(13956) Button.SetEvent(IE_GUI_BUTTON_ON_PRESS, GUIRECCommon.OpenExportWindow) # kit info if GameCheck.IsBG2(): Button = Window.GetControl(52) Button.SetText(61265) Button.SetEvent(IE_GUI_BUTTON_ON_PRESS, OpenKitInfoWindow) # create a button so we can map it do ESC for quit exiting Button = Window.CreateButton(99, 0, 0, 1, 1) Button.SetEvent(IE_GUI_BUTTON_ON_PRESS, OpenRecordsWindow) Button.SetFlags(IE_GUI_BUTTON_CANCEL, OP_OR) GUICommonWindows.SetSelectionChangeHandler(UpdateRecordsWindow) UpdateRecordsWindow() Window.SetKeyPressEvent(GUICommonWindows.SwitchPCByKey) OptionsWindow.SetVisible(WINDOW_VISIBLE) Window.SetVisible(WINDOW_VISIBLE) PortraitWindow.SetVisible(WINDOW_VISIBLE) return
def OpenOptionsWindow(): """Open main options window""" global GameOptionsWindow, OptionsWindow, PortraitWindow global OldPortraitWindow, OldOptionsWindow if GUICommon.CloseOtherWindow(OpenOptionsWindow): CloseOptionsWindow() return GemRB.GamePause(1, 3) CommonWindow.CloseContainerWindow() GemRB.HideGUI() GUICommon.GameWindow.SetVisible(WINDOW_INVISIBLE) if GameCheck.IsBG1(): GUICommonWindows.SetSelectionChangeHandler(None) GemRB.LoadWindowPack("GUIOPT", WIDTH, HEIGHT) GameOptionsWindow = Window = GemRB.LoadWindow(2) GemRB.SetVar("OtherWindow", GameOptionsWindow.ID) if OldOptionsWindow == None: # OptionsWindow is the leftmost menu bar window present in most of the games OldOptionsWindow = GUICommonWindows.OptionsWindow OptionsWindow = GemRB.LoadWindow(0) GUICommonWindows.MarkMenuButton(OptionsWindow) GUICommonWindows.SetupMenuWindowControls(OptionsWindow, 0, OpenOptionsWindow) OptionsWindow.SetFrame() if not GameCheck.IsBG1( ): #not in PST either, but it has its own OpenOptionsWindow() OptionsWindow.SetFrame() #saving the original portrait window OldPortraitWindow = GUICommonWindows.PortraitWindow PortraitWindow = GUICommonWindows.OpenPortraitWindow(0) # Return to Game Button = Window.GetControl(11) Button.SetText(10308) Button.SetEvent(IE_GUI_BUTTON_ON_PRESS, OpenOptionsWindow) Button.SetFlags(IE_GUI_BUTTON_CANCEL, OP_OR) # Quit Game Button = Window.GetControl(10) Button.SetText(13731) Button.SetEvent(IE_GUI_BUTTON_ON_PRESS, OpenQuitMsgWindow) # Load Game Button = Window.GetControl(5) Button.SetText(13729) Button.SetEvent(IE_GUI_BUTTON_ON_PRESS, OpenLoadMsgWindow) # Save Game Button = Window.GetControl(6) Button.SetText(13730) Button.SetEvent(IE_GUI_BUTTON_ON_PRESS, OpenSaveMsgWindow) # Video Options Button = Window.GetControl(7) Button.SetText(17162) Button.SetEvent(IE_GUI_BUTTON_ON_PRESS, OpenVideoOptionsWindow) # Audio Options Button = Window.GetControl(8) Button.SetText(17164) Button.SetEvent(IE_GUI_BUTTON_ON_PRESS, OpenAudioOptionsWindow) # Gameplay Options Button = Window.GetControl(9) Button.SetText(17165) Button.SetEvent(IE_GUI_BUTTON_ON_PRESS, OpenGameplayOptionsWindow) # game version, e.g. v1.1.0000 VersionLabel = Window.GetControl(0x1000000b) VersionLabel.SetText(GEMRB_VERSION) if GameCheck.IsIWD2(): # Keyboard shortcuts KeyboardButton = Window.GetControl(13) KeyboardButton.SetText(33468) KeyboardButton.SetEvent(IE_GUI_BUTTON_ON_PRESS, OpenHotkeyOptionsWindow) # Movies MoviesButton = Window.GetControl(14) MoviesButton.SetText(15415) MoviesButton.SetEvent(IE_GUI_BUTTON_ON_PRESS, OpenMovieWindow) RestoreWinVisibility() return
def OpenInventoryWindow(): global InventoryWindow, OptionsWindow, PortraitWindow global OldPortraitWindow, OldOptionsWindow if GUICommon.CloseOtherWindow(OpenInventoryWindow): if GemRB.IsDraggingItem() == 1: pc = GemRB.GameGetSelectedPCSingle() #store the item in the inventory before window is closed GemRB.DropDraggedItem(pc, -3) #dropping on ground if cannot store in inventory if GemRB.IsDraggingItem() == 1: GemRB.DropDraggedItem(pc, -2) InventoryCommon.CloseIdentifyItemWindow() InventoryCommon.CloseAbilitiesItemWindow() InventoryCommon.CancelColor() if InventoryCommon.ItemInfoWindow: InventoryCommon.ItemInfoWindow.Unload() InventoryCommon.ItemInfoWindow = None if InventoryCommon.ItemAmountWindow: InventoryCommon.ItemAmountWindow.Unload() InventoryCommon.ItemAmountWindow = None if InventoryCommon.ErrorWindow: InventoryCommon.ErrortWindow.Unload() InventoryCommon.ErrortWindow = None if InventoryWindow: InventoryWindow.Unload() if OptionsWindow: OptionsWindow.Unload() if PortraitWindow: PortraitWindow.Unload() InventoryWindow = None GemRB.SetVar("OtherWindow", -1) GUICommon.GameWindow.SetVisible(WINDOW_VISIBLE) GemRB.UnhideGUI() GUICommonWindows.PortraitWindow = OldPortraitWindow GUICommonWindows.UpdatePortraitWindow() OldPortraitWindow = None GUICommonWindows.OptionsWindow = OldOptionsWindow OldOptionsWindow = None GUICommonWindows.SetSelectionChangeHandler(None) return GemRB.HideGUI() GUICommon.GameWindow.SetVisible(WINDOW_INVISIBLE) GemRB.LoadWindowPack("GUIINV", 800, 600) InventoryWindow = Window = GemRB.LoadWindow(2) GemRB.SetVar("OtherWindow", InventoryWindow.ID) #TODO: Setup the MessageLabel here if needed #saving the original portrait window OldPortraitWindow = GUICommonWindows.PortraitWindow PortraitWindow = GUICommonWindows.OpenPortraitWindow() OldOptionsWindow = GUICommonWindows.OptionsWindow OptionsWindow = GemRB.LoadWindow(0) GUICommonWindows.SetupMenuWindowControls(OptionsWindow, 1, OpenInventoryWindow) Window.SetFrame() Window.SetKeyPressEvent(GUICommonWindows.SwitchPCByKey) #ground items scrollbar ScrollBar = Window.GetControl(66) ScrollBar.SetEvent(IE_GUI_SCROLLBAR_ON_CHANGE, RefreshInventoryWindow) # Ground Items (6) for i in range(5): Button = Window.GetControl(i + 68) Button.SetEvent(IE_GUI_MOUSE_ENTER_BUTTON, InventoryCommon.MouseEnterGround) Button.SetEvent(IE_GUI_MOUSE_LEAVE_BUTTON, InventoryCommon.MouseLeaveGround) Button.SetVarAssoc("GroundItemButton", i) Button.SetFont("NUMFONT") Button = Window.GetControl(81) Button.SetTooltip(12011) Button.SetVarAssoc("GroundItemButton", 6) Button.SetFont("NUMFONT") Button.SetFlags( IE_GUI_BUTTON_ALIGN_RIGHT | IE_GUI_BUTTON_ALIGN_BOTTOM | IE_GUI_BUTTON_PICTURE, OP_OR) #major & minor clothing color Button = Window.GetControl(62) Button.SetFlags(IE_GUI_BUTTON_PICTURE, OP_OR) Button.SetEvent(IE_GUI_BUTTON_ON_PRESS, InventoryCommon.MajorPress) Button.SetTooltip(12007) Button = Window.GetControl(63) Button.SetFlags(IE_GUI_BUTTON_PICTURE, OP_OR) Button.SetEvent(IE_GUI_BUTTON_ON_PRESS, InventoryCommon.MinorPress) Button.SetTooltip(12008) #hair & skin color Button = Window.GetControl(82) Button.SetFlags(IE_GUI_BUTTON_PICTURE, OP_OR) Button.SetEvent(IE_GUI_BUTTON_ON_PRESS, InventoryCommon.HairPress) Button.SetTooltip(37560) Button = Window.GetControl(83) Button.SetFlags(IE_GUI_BUTTON_PICTURE, OP_OR) Button.SetEvent(IE_GUI_BUTTON_ON_PRESS, InventoryCommon.SkinPress) Button.SetTooltip(37559) # paperdoll Button = Window.GetControl(50) Button.SetState(IE_GUI_BUTTON_LOCKED) Button.SetFlags( IE_GUI_BUTTON_NO_IMAGE | IE_GUI_BUTTON_PICTURE | IE_GUI_BUTTON_ANIMATED, OP_SET) Button.SetEvent(IE_GUI_BUTTON_ON_DRAG_DROP, InventoryCommon.OnAutoEquip) # portrait Button = Window.GetControl(84) Button.SetState(IE_GUI_BUTTON_LOCKED) Button.SetFlags(IE_GUI_BUTTON_NO_IMAGE | IE_GUI_BUTTON_PICTURE, OP_SET) # armor class Label = Window.GetControl(0x10000038) Label.SetTooltip(17183) # hp current Label = Window.GetControl(0x10000039) Label.SetTooltip(17184) # hp max Label = Window.GetControl(0x1000003a) Label.SetTooltip(17378) # info label, game paused, etc Label = Window.GetControl(0x1000003f) Label.SetText("") SlotCount = GemRB.GetSlotType(-1)["Count"] for slot in range(SlotCount): SlotType = GemRB.GetSlotType(slot + 1) if SlotType["ID"]: Button = Window.GetControl(SlotType["ID"]) Button.SetEvent(IE_GUI_MOUSE_ENTER_BUTTON, InventoryCommon.MouseEnterSlot) Button.SetEvent(IE_GUI_MOUSE_LEAVE_BUTTON, InventoryCommon.MouseLeaveSlot) Button.SetVarAssoc("ItemButton", slot + 1) Button.SetFont("NUMFONT") GemRB.SetVar("TopIndex", 0) for i in range(4): Button = Window.GetControl(109 + i) Button.SetEvent(IE_GUI_BUTTON_ON_PRESS, ChangeWeaponPressed) Button.SetVarAssoc("Equipped", i) Button.SetFlags(IE_GUI_BUTTON_RADIOBUTTON, OP_OR) #Why they mess up .chu's i don't know Button.SetSprites("INVBUT3", i, 0, 1, 2, 3) # create a button so we can map it do ESC for quit exiting Button = Window.CreateButton(999, 0, 0, 1, 1) Button.SetEvent(IE_GUI_BUTTON_ON_PRESS, OpenInventoryWindow) Button.SetFlags(IE_GUI_BUTTON_CANCEL, OP_OR) GUICommonWindows.SetSelectionChangeHandler(UpdateInventoryWindow) UpdateInventoryWindow() return
def OpenOptionsWindow(): global GameOptionsWindow, OptionsWindow, PortraitWindow global OldPortraitWindow, OldOptionsWindow if GUICommon.CloseOtherWindow(OpenOptionsWindow): CloseOptionsWindow() return GemRB.HideGUI() GUICommon.GameWindow.SetVisible(WINDOW_INVISIBLE) GemRB.LoadWindowPack("GUIOPT", 800, 600) GameOptionsWindow = Window = GemRB.LoadWindow(2) GemRB.SetVar("OtherWindow", GameOptionsWindow.ID) #saving the original portrait window OldPortraitWindow = GUICommonWindows.PortraitWindow PortraitWindow = GUICommonWindows.OpenPortraitWindow() OldOptionsWindow = GUICommonWindows.OptionsWindow OptionsWindow = GemRB.LoadWindow(0) GUICommonWindows.SetupMenuWindowControls(OptionsWindow, 0, OpenOptionsWindow) Window.SetFrame() LoadButton = Window.GetControl(5) SaveButton = Window.GetControl(6) QuitButton = Window.GetControl(10) GraphicsButton = Window.GetControl(7) SoundButton = Window.GetControl(8) GamePlayButton = Window.GetControl(9) MoviesButton = Window.GetControl(14) KeyboardButton = Window.GetControl(13) ReturnButton = Window.GetControl(11) LoadButton.SetText(13729) LoadButton.SetEvent(IE_GUI_BUTTON_ON_PRESS, OpenLoadMsgWindow) SaveButton.SetText(13730) SaveButton.SetEvent(IE_GUI_BUTTON_ON_PRESS, OpenSaveMsgWindow) QuitButton.SetText(13731) QuitButton.SetEvent(IE_GUI_BUTTON_ON_PRESS, OpenQuitMsgWindow) GraphicsButton.SetText(17162) GraphicsButton.SetEvent(IE_GUI_BUTTON_ON_PRESS, OpenVideoOptionsWindow) SoundButton.SetText(17164) SoundButton.SetEvent(IE_GUI_BUTTON_ON_PRESS, OpenAudioOptionsWindow) GamePlayButton.SetText(17165) GamePlayButton.SetEvent(IE_GUI_BUTTON_ON_PRESS, OpenGameplayOptionsWindow) MoviesButton.SetText(15415) MoviesButton.SetEvent(IE_GUI_BUTTON_ON_PRESS, OpenMovieWindow) KeyboardButton.SetText(33468) KeyboardButton.SetEvent(IE_GUI_BUTTON_ON_PRESS, None) #TODO: OpenKeyboardWindow ReturnButton.SetText(10308) ReturnButton.SetEvent(IE_GUI_BUTTON_ON_PRESS, OpenOptionsWindow) ReturnButton.SetFlags(IE_GUI_BUTTON_CANCEL, OP_OR) VersionLabel = Window.GetControl(0x1000000B) VersionLabel.SetText(GEMRB_VERSION) Window.SetVisible(WINDOW_VISIBLE) OptionsWindow.SetVisible(WINDOW_VISIBLE) PortraitWindow.SetVisible(WINDOW_VISIBLE) return
def OpenJournalWindow (): import GUICommonWindows global JournalWindow, OptionsWindow, PortraitWindow global OldPortraitWindow, OldOptionsWindow global StartTime, StartYear global Chapter if GUICommon.CloseOtherWindow (OpenJournalWindow): if JournalWindow: JournalWindow.Unload () if OptionsWindow: OptionsWindow.Unload () if PortraitWindow: PortraitWindow.Unload () JournalWindow = None GemRB.SetVar ("OtherWindow", -1) GUICommon.GameWindow.SetVisible(WINDOW_VISIBLE) GemRB.UnhideGUI () GUICommonWindows.PortraitWindow = OldPortraitWindow OldPortraitWindow = None GUICommonWindows.OptionsWindow = OldOptionsWindow OldOptionsWindow = None GUICommonWindows.SetSelectionChangeHandler (None) return Table = GemRB.LoadTable("YEARS") StartTime = Table.GetValue("STARTTIME", "VALUE") / 4500 StartYear = Table.GetValue("STARTYEAR", "VALUE") GemRB.HideGUI () GUICommon.GameWindow.SetVisible(WINDOW_INVISIBLE) GemRB.LoadWindowPack ("GUIJRNL", 640, 480) JournalWindow = Window = GemRB.LoadWindow (2) GemRB.SetVar ("OtherWindow", JournalWindow.ID) #saving the original portrait window OldOptionsWindow = GUICommonWindows.OptionsWindow OptionsWindow = GemRB.LoadWindow (0) GUICommonWindows.MarkMenuButton (OptionsWindow) GUICommonWindows.SetupMenuWindowControls (OptionsWindow, 0, OpenJournalWindow) OptionsWindow.SetFrame () OldPortraitWindow = GUICommonWindows.PortraitWindow PortraitWindow = GUICommonWindows.OpenPortraitWindow (0) # prev. chapter Button = JournalWindow.GetControl (3) Button.SetEvent (IE_GUI_BUTTON_ON_PRESS, PrevChapterPress) # next chapter Button = JournalWindow.GetControl (4) Button.SetEvent (IE_GUI_BUTTON_ON_PRESS, NextChapterPress) GemRB.SetVar ("Section", Section) # Quests Button = JournalWindow.GetControl (6) Button.SetFlags (IE_GUI_BUTTON_RADIOBUTTON, OP_OR) Button.SetVarAssoc ("Section", 1) Button.SetText (45485) Button.SetEvent (IE_GUI_BUTTON_ON_PRESS, UpdateLogWindow) # Quests completed Button = JournalWindow.GetControl (7) Button.SetFlags (IE_GUI_BUTTON_RADIOBUTTON, OP_OR) Button.SetVarAssoc ("Section", 2) Button.SetText (45486) Button.SetEvent (IE_GUI_BUTTON_ON_PRESS, UpdateLogWindow) # Journal Button = JournalWindow.GetControl (8) Button.SetFlags (IE_GUI_BUTTON_RADIOBUTTON, OP_OR) Button.SetVarAssoc ("Section", 4) Button.SetText (15333) Button.SetEvent (IE_GUI_BUTTON_ON_PRESS, UpdateLogWindow) # User Button = JournalWindow.GetControl (9) Button.SetFlags (IE_GUI_BUTTON_RADIOBUTTON, OP_OR) Button.SetVarAssoc ("Section", 0) Button.SetText (45487) Button.SetEvent (IE_GUI_BUTTON_ON_PRESS, UpdateLogWindow) # Order Button = JournalWindow.GetControl (10) Button.SetText (4627) Button.SetEvent (IE_GUI_BUTTON_ON_PRESS, ToggleOrderWindow) # Done #Button = JournalWindow.GetControl (3) #Button.SetText (20636) #Button.SetEvent (IE_GUI_BUTTON_ON_PRESS, OpenJournalWindow) Chapter = GemRB.GetGameVar("chapter") if Chapter>65535: Chapter=0 GUICommonWindows.SetSelectionChangeHandler (UpdateLogWindow) UpdateLogWindow () OptionsWindow.SetVisible (WINDOW_VISIBLE) Window.SetVisible (WINDOW_FRONT) PortraitWindow.SetVisible (WINDOW_VISIBLE) return
def ShowMap(): import GameCheck import GUICommonWindows global MapWindow, OptionsWindow, PortraitWindow global OldPortraitWindow, OldOptionsWindow if GUICommon.CloseOtherWindow(ShowMap): if MapWindow: MapWindow.Unload() if OptionsWindow: OptionsWindow.Unload() if PortraitWindow: PortraitWindow.Unload() MapWindow = None #this window type should block the game GemRB.SetVar("OtherWindow", -1) GUICommon.GameWindow.SetVisible(WINDOW_VISIBLE) GemRB.UnhideGUI() GUICommonWindows.PortraitWindow = OldPortraitWindow OldPortraitWindow = None GUICommonWindows.OptionsWindow = OldOptionsWindow OldOptionsWindow = None return GemRB.HideGUI() GUICommon.GameWindow.SetVisible(WINDOW_INVISIBLE) GemRB.LoadWindowPack("GUIMAP", 640, 480) MapWindow = Window = GemRB.LoadWindow(2) #this window type blocks the game normally, but map window doesn't GemRB.SetVar("OtherWindow", MapWindow.ID) #saving the original portrait window OldOptionsWindow = GUICommonWindows.OptionsWindow OptionsWindow = GemRB.LoadWindow(0) GUICommonWindows.SetupMenuWindowControls(OptionsWindow, 0, ShowMap) OldPortraitWindow = GUICommonWindows.PortraitWindow PortraitWindow = GUICommonWindows.OpenPortraitWindow() OptionsWindow.SetFrame() # World Map Button = Window.GetControl(1) Button.SetState(IE_GUI_BUTTON_LOCKED) # Hide or Show mapnotes if HasMapNotes(): Button = Window.GetControl(3) Button.SetState(IE_GUI_BUTTON_LOCKED) Label = Window.GetControl(0x10000003) Label.SetText("") # Map Control if GameCheck.IsBG2() or GameCheck.IsIWD2(): Window.CreateMapControl(2, 0, 0, 0, 0, 0x10000003, "FLAG1") else: Window.CreateMapControl(2, 0, 0, 0, 0) Map = Window.GetControl(2) if HasMapNotes(): GemRB.SetVar("ShowMapNotes", IE_GUI_MAP_REVEAL_MAP) Map.SetVarAssoc("ShowMapNotes", IE_GUI_MAP_REVEAL_MAP) Map.SetEvent(IE_GUI_MAP_ON_PRESS, RevealMap) Window.SetVisible(WINDOW_VISIBLE) OptionsWindow.SetVisible(WINDOW_GRAYED) PortraitWindow.SetVisible(WINDOW_GRAYED) OptionsWindow.SetVisible(WINDOW_FRONT) PortraitWindow.SetVisible(WINDOW_FRONT) Window.SetVisible(WINDOW_FRONT) if HasMapNotes(): Map.SetStatus(IE_GUI_CONTROL_FOCUSED | IE_GUI_MAP_REVEAL_MAP) else: Map.SetStatus(IE_GUI_CONTROL_FOCUSED) GemRB.GamePause(0, 0) return
def OpenInventoryWindow (): global InventoryWindow, OptionsWindow, PortraitWindow global OldPortraitWindow, OldOptionsWindow if GUICommon.CloseOtherWindow (OpenInventoryWindow): if GemRB.IsDraggingItem () == 1: pc = GemRB.GameGetSelectedPCSingle () #store the item in the inventory before window is closed GemRB.DropDraggedItem (pc, -3) #dropping on ground if cannot store in inventory if GemRB.IsDraggingItem () == 1: GemRB.DropDraggedItem (pc, -2) if InventoryWindow: InventoryWindow.Unload () if OptionsWindow: OptionsWindow.Unload () if PortraitWindow: PortraitWindow.Unload () InventoryWindow = None GemRB.SetVar ("OtherWindow", -1) GUICommon.GameWindow.SetVisible(WINDOW_VISIBLE) GemRB.UnhideGUI () GUICommonWindows.PortraitWindow = OldPortraitWindow GUICommonWindows.UpdatePortraitWindow () OldPortraitWindow = None GUICommonWindows.OptionsWindow = OldOptionsWindow OldOptionsWindow = None GUICommonWindows.SetSelectionChangeHandler (None) return GemRB.HideGUI () GUICommon.GameWindow.SetVisible(WINDOW_INVISIBLE) GemRB.LoadWindowPack ("GUIINV", 640, 480) InventoryWindow = Window = GemRB.LoadWindow (2) GemRB.SetVar ("OtherWindow", InventoryWindow.ID) GemRB.SetVar ("MessageLabel", Window.GetControl (0x1000003f).ID ) OldOptionsWindow = GUICommonWindows.OptionsWindow OptionsWindow = GemRB.LoadWindow (0) GUICommonWindows.SetupMenuWindowControls (OptionsWindow, 0, OpenInventoryWindow) OptionsWindow.SetFrame () #saving the original portrait window OldPortraitWindow = GUICommonWindows.PortraitWindow PortraitWindow = GUICommonWindows.OpenPortraitWindow (0) #ground items scrollbar ScrollBar = Window.GetControl (66) ScrollBar.SetEvent (IE_GUI_SCROLLBAR_ON_CHANGE, RefreshInventoryWindow) #Ground Item for i in range (5): Button = Window.GetControl (i+68) Button.SetEvent (IE_GUI_MOUSE_ENTER_BUTTON, InventoryCommon.MouseEnterGround) Button.SetEvent (IE_GUI_MOUSE_LEAVE_BUTTON, InventoryCommon.MouseLeaveGround) Button.SetVarAssoc ("GroundItemButton", i) Button.SetSprites ("STONSLOT",0,0,1,2,3) #major & minor clothing color Button = Window.GetControl (62) Button.SetFlags (IE_GUI_BUTTON_PICTURE,OP_OR) Button.SetEvent (IE_GUI_BUTTON_ON_PRESS, InventoryCommon.MajorPress) Button.SetTooltip (12007) Button = Window.GetControl (63) Button.SetFlags (IE_GUI_BUTTON_PICTURE,OP_OR) Button.SetEvent (IE_GUI_BUTTON_ON_PRESS, InventoryCommon.MinorPress) Button.SetTooltip (12008) #portrait Button = Window.GetControl (50) Button.SetState (IE_GUI_BUTTON_LOCKED) Button.SetFlags (IE_GUI_BUTTON_NO_IMAGE | IE_GUI_BUTTON_PICTURE, OP_SET) Button.SetEvent (IE_GUI_BUTTON_ON_DRAG_DROP, InventoryCommon.OnAutoEquip) #encumbrance Button = Window.GetControl (67) r = Button.GetRect () Label = Window.CreateLabel (0x10000043, r["X"],r["Y"],r["Width"],15, "NUMBER","0:",IE_FONT_ALIGN_LEFT|IE_FONT_ALIGN_TOP) Label = Window.CreateLabel (0x10000044, r["X"],r["Y"]+r["Height"]-15,r["Width"],15, "NUMBER","0:",IE_FONT_ALIGN_RIGHT|IE_FONT_ALIGN_BOTTOM) #armor class Label = Window.GetControl (0x10000038) Label.SetTooltip (17183) #hp current Label = Window.GetControl (0x10000039) Label.SetTooltip (17184) #hp max Label = Window.GetControl (0x1000003a) Label.SetTooltip (17378) #info label, game paused, etc Label = Window.GetControl (0x1000003f) Label.SetText ("") SlotCount = GemRB.GetSlotType (-1)["Count"] for slot in range (SlotCount): SlotType = GemRB.GetSlotType (slot+1) if SlotType["ID"]: Button = Window.GetControl (SlotType["ID"]) Button.SetEvent (IE_GUI_MOUSE_ENTER_BUTTON, InventoryCommon.MouseEnterSlot) Button.SetEvent (IE_GUI_MOUSE_LEAVE_BUTTON, InventoryCommon.MouseLeaveSlot) Button.SetVarAssoc ("ItemButton", slot+1) Button.SetSprites ("STONSLOT",0,0,1,2,3) GemRB.SetVar ("TopIndex", 0) GUICommonWindows.SetSelectionChangeHandler (UpdateInventoryWindow) UpdateInventoryWindow () OptionsWindow.SetVisible (WINDOW_VISIBLE) Window.SetVisible (WINDOW_FRONT) PortraitWindow.SetVisible (WINDOW_VISIBLE) return
def OpenMageWindow(): global MageWindow, OptionsWindow, PortraitWindow global OldPortraitWindow, OldOptionsWindow if GUICommon.CloseOtherWindow(OpenMageWindow): if MageWindow: MageWindow.Unload() if OptionsWindow: OptionsWindow.Unload() if PortraitWindow: PortraitWindow.Unload() MageWindow = None GemRB.SetVar("OtherWindow", -1) GUICommon.GameWindow.SetVisible(WINDOW_VISIBLE) GemRB.UnhideGUI() GUICommonWindows.PortraitWindow = OldPortraitWindow OldPortraitWindow = None GUICommonWindows.OptionsWindow = OldOptionsWindow OldOptionsWindow = None GUICommonWindows.SetSelectionChangeHandler(None) return GemRB.HideGUI() GUICommon.GameWindow.SetVisible(WINDOW_INVISIBLE) GemRB.LoadWindowPack("GUIMG", 640, 480) MageWindow = Window = GemRB.LoadWindow(2) GemRB.SetVar("OtherWindow", MageWindow.ID) #saving the original portrait window OldOptionsWindow = GUICommonWindows.OptionsWindow OptionsWindow = GemRB.LoadWindow(0) GUICommonWindows.SetupMenuWindowControls(OptionsWindow, 0, OpenMageWindow) OptionsWindow.SetFrame() OldPortraitWindow = GUICommonWindows.PortraitWindow PortraitWindow = GUICommonWindows.OpenPortraitWindow(0) Button = Window.GetControl(1) Button.SetEvent(IE_GUI_BUTTON_ON_PRESS, MagePrevLevelPress) Button = Window.GetControl(2) Button.SetEvent(IE_GUI_BUTTON_ON_PRESS, MageNextLevelPress) ## #unknown usage ## Button = Window.GetControl (55) ## Button.SetState (IE_GUI_BUTTON_LOCKED) ## #Button.SetText (123) ## #Button.SetEvent (IE_GUI_BUTTON_ON_PRESS, xxPress) ## #setup level buttons ## for i in range (9): ## Button = Window.GetControl (56 + i) ## Button.SetEvent (IE_GUI_BUTTON_ON_PRESS, RefreshMageLevel) ## Button.SetFlags (IE_GUI_BUTTON_RADIOBUTTON, OP_OR) ## for i in range (9): ## Button = Window.GetControl (56 + i) ## Button.SetVarAssoc ("MageSpellLevel", i) # Setup memorized spells buttons for i in range(12): Button = Window.GetControl(3 + i) Button.SetBorder(0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 1) Button.SetSprites("SPELFRAM", 0, 0, 0, 0, 0) Button.SetFlags(IE_GUI_BUTTON_PICTURE, OP_OR) Button.SetState(IE_GUI_BUTTON_LOCKED) # Setup book spells buttons for i in range(GUICommon.GetIWDSpellButtonCount()): Button = Window.GetControl(27 + i) Button.SetFlags(IE_GUI_BUTTON_NO_IMAGE, OP_OR) Button.SetState(IE_GUI_BUTTON_LOCKED) GUICommonWindows.SetSelectionChangeHandler(UpdateMageWindow) UpdateMageWindow() OptionsWindow.SetVisible(WINDOW_VISIBLE) #bringing the window front Window.SetVisible(WINDOW_FRONT) PortraitWindow.SetVisible(WINDOW_VISIBLE) return
def OpenOptionsWindow(): """Open main options window""" global BackgroundWindow, OptionsWindow, PortraitWindow global OldPortraitWindow, OldOptionsWindow if GUICommon.CloseOtherWindow(OpenOptionsWindow): CloseOptionsWindow() return hideflag = GemRB.HideGUI() GUICommon.GameWindow.SetVisible(WINDOW_INVISIBLE) GemRB.LoadWindowPack("GUIOPT", 640, 480) BackgroundWindow = Window = GemRB.LoadWindow(2) GemRB.SetVar("OtherWindow", BackgroundWindow.ID) #saving the original portrait window if OldPortraitWindow == None: OldOptionsWindow = GUICommonWindows.OptionsWindow OptionsWindow = GemRB.LoadWindow(0) GUICommonWindows.SetupMenuWindowControls(OptionsWindow, 0, OpenOptionsWindow) OptionsWindow.SetFrame() OldPortraitWindow = GUICommonWindows.PortraitWindow PortraitWindow = GUICommonWindows.OpenPortraitWindow(0) # Return to Game Button = Window.GetControl(11) Button.SetText(10308) Button.SetEvent(IE_GUI_BUTTON_ON_PRESS, OpenOptionsWindow) # Quit Game Button = Window.GetControl(10) Button.SetText(13731) Button.SetEvent(IE_GUI_BUTTON_ON_PRESS, OpenQuitMsgWindow) # Load Game Button = Window.GetControl(5) Button.SetText(13729) Button.SetEvent(IE_GUI_BUTTON_ON_PRESS, OpenLoadMsgWindow) # Save Game Button = Window.GetControl(6) Button.SetText(13730) Button.SetEvent(IE_GUI_BUTTON_ON_PRESS, OpenSaveMsgWindow) # Graphics Button = Window.GetControl(7) Button.SetText(17162) Button.SetEvent(IE_GUI_BUTTON_ON_PRESS, OpenVideoOptionsWindow) # Audio Button = Window.GetControl(8) Button.SetText(17164) Button.SetEvent(IE_GUI_BUTTON_ON_PRESS, OpenAudioOptionsWindow) # Gameplay Button = Window.GetControl(9) Button.SetText(17165) Button.SetEvent(IE_GUI_BUTTON_ON_PRESS, OpenGameplayOptionsWindow) # game version, e.g. v1.1.0000 Label = Window.GetControl(0x1000000b) Label.SetText(GEMRB_VERSION) OptionsWindow.SetVisible(WINDOW_VISIBLE) Window.SetVisible(WINDOW_VISIBLE) PortraitWindow.SetVisible(WINDOW_VISIBLE) return
def OpenInventoryWindow(): """Opens the inventory window.""" import GUICommonWindows global InventoryWindow, OptionsWindow, PortraitWindow global OldPortraitWindow, OldOptionsWindow if GUICommon.CloseOtherWindow(OpenInventoryWindow): if GemRB.IsDraggingItem() == 1: pc = GemRB.GameGetSelectedPCSingle() #store the item in the inventory before window is closed GemRB.DropDraggedItem(pc, -3) #dropping on ground if cannot store in inventory if GemRB.IsDraggingItem() == 1: GemRB.DropDraggedItem(pc, -2) InventoryCommon.CloseIdentifyItemWindow() InventoryCommon.CloseAbilitiesItemWindow() InventoryCommon.CancelColor() if InventoryCommon.ItemInfoWindow: InventoryCommon.ItemInfoWindow.Unload() InventoryCommon.ItemInfoWindow = None if InventoryCommon.ItemAmountWindow: InventoryCommon.ItemAmountWindow.Unload() InventoryCommon.ItemAmountWindow = None if InventoryCommon.ErrorWindow: InventoryCommon.ErrortWindow.Unload() InventoryCommon.ErrortWindow = None if InventoryWindow: InventoryWindow.Unload() if OptionsWindow: OptionsWindow.Unload() if PortraitWindow: PortraitWindow.Unload() InventoryWindow = None GemRB.SetVar("OtherWindow", -1) GemRB.SetVar("MessageLabel", -1) GUICommonWindows.PortraitWindow = OldPortraitWindow GUICommonWindows.UpdatePortraitWindow() OldPortraitWindow = None GUICommonWindows.OptionsWindow = OldOptionsWindow OldOptionsWindow = None #don't go back to multi selection mode when going to the store screen if not GemRB.GetVar("Inventory"): GUICommon.GameWindow.SetVisible(WINDOW_VISIBLE) GemRB.UnhideGUI() GUICommonWindows.SetSelectionChangeHandler(None) return GemRB.HideGUI() GUICommon.GameWindow.SetVisible(WINDOW_INVISIBLE) GemRB.LoadWindowPack("GUIINV", 640, 480) InventoryWindow = Window = GemRB.LoadWindow(2) GemRB.SetVar("OtherWindow", InventoryWindow.ID) GemRB.SetVar("MessageLabel", Window.GetControl(0x1000003f).ID) OldOptionsWindow = GUICommonWindows.OptionsWindow OptionsWindow = GemRB.LoadWindow(0) GUICommonWindows.MarkMenuButton(OptionsWindow) GUICommonWindows.SetupMenuWindowControls(OptionsWindow, 0, OpenInventoryWindow) OptionsWindow.SetFrame() #saving the original portrait window OldPortraitWindow = GUICommonWindows.PortraitWindow PortraitWindow = GUICommonWindows.OpenPortraitWindow(0) #ground items scrollbar ScrollBar = Window.GetControl(66) ScrollBar.SetEvent(IE_GUI_SCROLLBAR_ON_CHANGE, RefreshInventoryWindow) #Ground Item for i in range(5): Button = Window.GetControl(i + 68) Button.SetEvent(IE_GUI_MOUSE_ENTER_BUTTON, InventoryCommon.MouseEnterGround) Button.SetEvent(IE_GUI_MOUSE_LEAVE_BUTTON, InventoryCommon.MouseLeaveGround) Button.SetVarAssoc("GroundItemButton", i) Button.SetSprites("STONSLOT", 0, 0, 2, 4, 3) #major & minor clothing color Button = Window.GetControl(62) Button.SetSprites("INVBUT", 0, 0, 1, 0, 0) Button.SetFlags(IE_GUI_BUTTON_PICTURE, OP_OR) Button.SetEvent(IE_GUI_BUTTON_ON_PRESS, InventoryCommon.MajorPress) Button.SetTooltip(12007) Button = Window.GetControl(63) Button.SetSprites("INVBUT", 0, 0, 1, 0, 0) Button.SetFlags(IE_GUI_BUTTON_PICTURE, OP_OR) Button.SetEvent(IE_GUI_BUTTON_ON_PRESS, InventoryCommon.MinorPress) Button.SetTooltip(12008) #portrait Button = Window.GetControl(50) Button.SetState(IE_GUI_BUTTON_LOCKED) Button.SetFlags(IE_GUI_BUTTON_NO_IMAGE | IE_GUI_BUTTON_PICTURE, OP_SET) Button.SetEvent(IE_GUI_BUTTON_ON_DRAG_DROP, InventoryCommon.OnAutoEquip) #encumbrance Button = Window.GetControl(67) r = Button.GetRect() Label = Window.CreateLabel( 0x10000043, r["X"], r["Y"], r["Width"], 20, "NUMBER", "0:", IE_FONT_ALIGN_LEFT | IE_FONT_ALIGN_TOP | IE_FONT_SINGLE_LINE) Label = Window.CreateLabel( 0x10000044, r["X"], r["Y"] + r["Height"] - 20, r["Width"], 20, "NUMBER", "0:", IE_FONT_ALIGN_RIGHT | IE_FONT_ALIGN_BOTTOM | IE_FONT_SINGLE_LINE) # armor class Label = Window.GetControl(0x10000038) Label.SetTooltip(17183) # hp current Label = Window.GetControl(0x10000039) Label.SetTooltip(17184) # hp max Label = Window.GetControl(0x1000003a) Label.SetTooltip(17378) # info label, game paused, etc Label = Window.GetControl(0x1000003f) Label.SetText("") SlotCount = GemRB.GetSlotType(-1)["Count"] for slot in range(SlotCount): SlotType = GemRB.GetSlotType(slot + 1) if SlotType["ID"]: Button = Window.GetControl(SlotType["ID"]) Button.SetEvent(IE_GUI_MOUSE_ENTER_BUTTON, InventoryCommon.MouseEnterSlot) Button.SetEvent(IE_GUI_MOUSE_LEAVE_BUTTON, InventoryCommon.MouseLeaveSlot) Button.SetVarAssoc("ItemButton", slot + 1) #keeping 2 in the original place, because it is how #the gui resource has it, but setting the other cycles Button.SetSprites("STONSLOT", 0, 0, 2, 4, 3) # create a button so we can map it do ESC for quit exiting Button = Window.CreateButton(999, 0, 0, 1, 1) Button.SetEvent(IE_GUI_BUTTON_ON_PRESS, OpenInventoryWindow) Button.SetFlags(IE_GUI_BUTTON_CANCEL, OP_OR) GemRB.SetVar("TopIndex", 0) GUICommonWindows.SetSelectionChangeHandler(UpdateInventoryWindow) UpdateInventoryWindow() OptionsWindow.SetVisible(WINDOW_VISIBLE) Window.SetVisible(WINDOW_FRONT) PortraitWindow.SetVisible(WINDOW_VISIBLE) Window.SetKeyPressEvent(GUICommonWindows.SwitchPCByKey) return
def OpenStoreWindow(): global Store global StoreWindow, ActionWindow, PortraitWindow global OldPortraitWindow global store_funcs global Inventory global CureTable CureTable = GemRB.LoadTable( "speldesc") #additional info not supported by core #these are function pointers, not strings #can't put this in global init, doh! store_funcs = (OpenStoreShoppingWindow, OpenStoreIdentifyWindow, OpenStoreStealWindow, OpenStoreHealWindow, OpenStoreDonateWindow, OpenStoreRumourWindow, OpenStoreRentWindow) GemRB.HideGUI() GUICommon.GameWindow.SetVisible( WINDOW_INVISIBLE) #removing the game control screen if GemRB.GetVar("Inventory"): Inventory = 1 else: Inventory = None GemRB.SetVar("Action", 0) GemRB.LoadWindowPack("GUISTORE", 640, 480) StoreWindow = Window = GemRB.LoadWindow(3) #saving the original portrait window OldPortraitWindow = GUICommonWindows.PortraitWindow PortraitWindow = GUICommonWindows.OpenPortraitWindow(0) ActionWindow = GemRB.LoadWindow(0) #this window is static and grey, but good to stick the frame onto ActionWindow.SetFrame() Store = GemRB.GetStore() # Done Button = Window.GetControl(0) Button.SetText(1403) Button.SetEvent(IE_GUI_BUTTON_ON_PRESS, CloseStoreWindow) #Store type icon Button = Window.GetControl(5) #Button.SetSprites (storebams[Store['StoreType']],0,0,0,0,0) #based on shop type, these buttons will change store_type = Store['StoreType'] store_buttons = Store['StoreButtons'] for i in range(4): Buttons[i] = Button = Window.GetControl(i + 1) Action = store_buttons[i] Button.SetVarAssoc("Action", i) if Action >= 0: Button.SetFlags(IE_GUI_BUTTON_RADIOBUTTON, OP_OR) #this is different from IWD??? #Button.SetSprites ("SSBBS", Action, 0,1,2,0) Button.SetTooltip(storetips[Action]) Button.SetEvent(IE_GUI_BUTTON_ON_PRESS, store_funcs[Action]) Button.SetState(IE_GUI_BUTTON_ENABLED) else: Button.SetFlags(IE_GUI_BUTTON_NO_IMAGE, OP_OR) Button.SetTooltip("") Button.SetEvent(IE_GUI_BUTTON_ON_PRESS, None) Button.SetState(IE_GUI_BUTTON_DISABLED) ActionWindow.SetVisible(WINDOW_VISIBLE) Window.SetVisible(WINDOW_VISIBLE) store_funcs[store_buttons[0]]() PortraitWindow.SetVisible(WINDOW_VISIBLE) return