示例#1
0
    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
示例#2
0
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
示例#3
0
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