def OnClose(): GemRB.GamePause(False, 0) GUICommonWindows.SetSelectionChangeMultiHandler(None) if float_menu_selected == None: return if float_menu_mode == MENU_MODE_ITEMS: UseItem() elif float_menu_mode == MENU_MODE_WEAPONS: UseWeapon() elif float_menu_mode == MENU_MODE_SPELLS: UseSpell() elif float_menu_mode == MENU_MODE_ABILITIES: UseSpell() return
def OpenFloatMenuWindow(x=0, y=0): global FloatMenuWindow global float_menu_mode, float_menu_index, float_menu_selected def OnClose(): GemRB.GamePause(False, 0) GUICommonWindows.SetSelectionChangeMultiHandler(None) if float_menu_selected == None: return if float_menu_mode == MENU_MODE_ITEMS: UseItem() elif float_menu_mode == MENU_MODE_WEAPONS: UseWeapon() elif float_menu_mode == MENU_MODE_SPELLS: UseSpell() elif float_menu_mode == MENU_MODE_ABILITIES: UseSpell() return if not GemRB.GameGetFirstSelectedPC(): return GemRB.GamePause(True, 0) GemRB.GameControlSetTargetMode(TARGET_MODE_NONE) FloatMenuWindow = Window = GemRB.LoadWindow(3, "GUIWORLD") Window.SetFlags(WF_DRAGGABLE | WF_ALPHA_CHANNEL, OP_OR) Window.SetPos(x, y) Window.SetTooltip(8199) Window.SetAction(OnClose, ACTION_WINDOW_CLOSED) # portrait button Button = Window.GetControl(CID_PORTRAIT) Button.SetEvent(IE_GUI_BUTTON_ON_PRESS, FloatMenuSelectNextPC) Button.SetEvent(IE_GUI_BUTTON_ON_RIGHT_PRESS, lambda: Window.Close()) # Initiate Dialogue Button = Window.GetControl(CID_DIALOG) Button.SetEvent(IE_GUI_BUTTON_ON_PRESS, FloatMenuSelectDialog) Button.SetTooltip(8191) # Attack/Select Weapon Button = Window.GetControl(CID_WEAPONS) Button.SetEvent(IE_GUI_BUTTON_ON_PRESS, FloatMenuSelectWeapons) Button.SetTooltip(8192) # Cast spell Button = Window.GetControl(CID_SPELLS) Button.SetEvent(IE_GUI_BUTTON_ON_PRESS, FloatMenuSelectSpells) Button.SetTooltip(8193) # Use Item Button = Window.GetControl(CID_ITEMS) Button.SetEvent(IE_GUI_BUTTON_ON_PRESS, FloatMenuSelectItems) Button.SetTooltip(8194) # Use Special Ability Button = Window.GetControl(CID_ABILITIES) Button.SetEvent(IE_GUI_BUTTON_ON_PRESS, FloatMenuSelectAbilities) Button.SetTooltip(8195) # Menu Anchors/Handles Handle = Window.GetControl(CID_HANDLE1) Handle.SetFlags(IE_GUI_VIEW_IGNORE_EVENTS, OP_OR) Handle = Window.GetControl(CID_HANDLE2) Handle.SetFlags(IE_GUI_VIEW_IGNORE_EVENTS, OP_OR) # Rotate Items left (to begin) Button = Window.GetControl(CID_PREV) Button.SetTooltip(8197) Button.SetEvent(IE_GUI_BUTTON_ON_PRESS, FloatMenuPreviousItem) # Rotate Items right (to end) Button = Window.GetControl(CID_NEXT) Button.SetTooltip(8198) Button.SetEvent(IE_GUI_BUTTON_ON_PRESS, FloatMenuNextItem) # 6 - 10 - items/spells/other for i in range(CID_ABILITIES + 1, CID_HANDLE1): if Window.GetControl(i): Window.DeleteControl(i) # 15 - 19 - empty item slot for i in range(SLOT_COUNT): Button = Window.GetControl(CID_SLOTS + i) Button.SetFlags(IE_GUI_BUTTON_ALIGN_RIGHT | IE_GUI_BUTTON_ALIGN_BOTTOM, OP_OR) Button.SetVarAssoc('ItemButton', i) Button.SetFont('NUMBER') Button.SetPushOffset(0, 0) # BAMs: # AMALLSTP - 41655 # AMATTCK - 41654 #AMGENB1 #AMGENS #AMGUARD - 31657, 32431, 41652, 48887 #AMHILITE - highlight frame #AMINVNT - 41601, 41709 #AMJRNL - 41623, 41714 #AMMAP - 41625, 41710 #AMSPLL - 4709 #AMSTAT - 4707 #AMTLK - 41653 #AMPANN #AMPDKK #AMPFFG #AMPIGY #AMPMRT #AMPNDM #AMPNM1 #AMPVHA num = 0 for i in range(GemRB.GetPartySize()): if GemRB.GameIsPCSelected(i + 1): num = num + 1 # if more than one is selected, start in group menu mode (mode 1) if num == 1: float_menu_mode = MENU_MODE_SINGLE else: float_menu_mode = MENU_MODE_GROUP float_menu_selected = 4 # "Abort current action" slot float_menu_index = 0 GUICommonWindows.SetSelectionChangeMultiHandler(FloatMenuSelectAnotherPC) UpdateFloatMenuWindow() return
def OpenFloatMenuWindow (x=0, y=0): global FloatMenuWindow global float_menu_mode, float_menu_index, float_menu_selected GemRB.HideGUI () if FloatMenuWindow: if FloatMenuWindow: FloatMenuWindow.Unload () FloatMenuWindow = None #FIXME: UnpauseGameTimer GemRB.GamePause (False, 0) GemRB.SetVar ("FloatWindow", -1) GUICommonWindows.SetSelectionChangeMultiHandler (None) GemRB.UnhideGUI () if float_menu_selected==None: GemRB.GameControlSetTargetMode (TARGET_MODE_NONE) return if float_menu_mode == MENU_MODE_ITEMS: UseItem() elif float_menu_mode == MENU_MODE_WEAPONS: UseWeapon() elif float_menu_mode == MENU_MODE_SPELLS: UseSpell() elif float_menu_mode == MENU_MODE_ABILITIES: UseSpell() return ActionLevel = 0 if not GemRB.GameGetFirstSelectedPC (): GemRB.UnhideGUI () return # FIXME: remember current selection #FIXME: PauseGameTimer GemRB.GamePause (True, 0) GemRB.LoadWindowPack ("GUIWORLD") FloatMenuWindow = Window = GemRB.LoadWindow (3) GemRB.SetVar ("FloatWindow", Window.ID) # FIXME: keep the menu inside the viewport!!! Window.SetPos (x, y, WINDOW_CENTER | WINDOW_BOUNDED) # portrait button Button = Window.GetControl (CID_PORTRAIT) Button.SetEvent (IE_GUI_BUTTON_ON_PRESS, FloatMenuSelectNextPC) Button.SetEvent (IE_GUI_BUTTON_ON_RIGHT_PRESS, OpenFloatMenuWindow) # Initiate Dialogue Button = Window.GetControl (CID_DIALOG) Button.SetEvent (IE_GUI_BUTTON_ON_PRESS, FloatMenuSelectDialog) Button.SetTooltip (8191) # Attack/Select Weapon Button = Window.GetControl (CID_WEAPONS) Button.SetEvent (IE_GUI_BUTTON_ON_PRESS, FloatMenuSelectWeapons) Button.SetTooltip (8192) # Cast spell Button = Window.GetControl (CID_SPELLS) Button.SetEvent (IE_GUI_BUTTON_ON_PRESS, FloatMenuSelectSpells) Button.SetTooltip (8193) # Use Item Button = Window.GetControl (CID_ITEMS) Button.SetEvent (IE_GUI_BUTTON_ON_PRESS, FloatMenuSelectItems) Button.SetTooltip (8194) # Use Special Ability Button = Window.GetControl (CID_ABILITIES) Button.SetEvent (IE_GUI_BUTTON_ON_PRESS, FloatMenuSelectAbilities) Button.SetTooltip (8195) # Menu Anchors/Handles Button = Window.GetControl (CID_HANDLE1) Button.SetTooltip (8199) Button.SetFlags (IE_GUI_BUTTON_DRAGGABLE, OP_OR) Button.SetEvent (IE_GUI_BUTTON_ON_DRAG, FloatMenuDrag) Button = Window.GetControl (CID_HANDLE2) Button.SetTooltip (8199) Button.SetFlags (IE_GUI_BUTTON_DRAGGABLE, OP_OR) Button.SetEvent (IE_GUI_BUTTON_ON_DRAG, FloatMenuDrag) # Rotate Items left (to begin) Button = Window.GetControl (CID_PREV) Button.SetTooltip (8197) Button.SetEvent (IE_GUI_BUTTON_ON_PRESS, FloatMenuPreviousItem) # Rotate Items right (to end) Button = Window.GetControl (CID_NEXT) Button.SetTooltip (8198) Button.SetEvent (IE_GUI_BUTTON_ON_PRESS, FloatMenuNextItem) # 6 - 10 - items/spells/other for i in range (6, 11): Button = Window.GetControl (i) Button.SetPos (65535, 65535) # 15 - 19 - empty item slot for i in range (SLOT_COUNT): Button = Window.GetControl (CID_SLOTS + i) Button.SetFlags (IE_GUI_BUTTON_ALIGN_RIGHT | IE_GUI_BUTTON_ALIGN_BOTTOM, OP_OR) Button.SetVarAssoc ('ItemButton', i) Button.SetFont ('NUMBER') Button.SetPushOffset (0, 0) # BAMs: # AMALLSTP - 41655 # AMATTCK - 41654 #AMGENB1 #AMGENS #AMGUARD - 31657, 32431, 41652, 48887 #AMHILITE - highlight frame #AMINVNT - 41601, 41709 #AMJRNL - 41623, 41714 #AMMAP - 41625, 41710 #AMSPLL - 4709 #AMSTAT - 4707 #AMTLK - 41653 #AMPANN #AMPDKK #AMPFFG #AMPIGY #AMPMRT #AMPNDM #AMPNM1 #AMPVHA num = 0 for i in range (GemRB.GetPartySize ()): if GemRB.GameIsPCSelected (i + 1): num = num + 1 # if more than one is selected, start in group menu mode (mode 1) if num == 1: float_menu_mode = MENU_MODE_SINGLE else: float_menu_mode = MENU_MODE_GROUP float_menu_selected = 4 # "Abort current action" slot float_menu_index = 0 GUICommonWindows.SetSelectionChangeMultiHandler (FloatMenuSelectAnotherPC) UpdateFloatMenuWindow () GemRB.UnhideGUI () return