update
This commit is contained in:
@@ -1,12 +1,12 @@
|
||||
class_name BattleGamepad
|
||||
extends RefCounted
|
||||
## Gamepad-Steuerung des Kampfes: Steuerkreuz bewegt einen Zeiger über Laden, Hand, eigene Wesen
|
||||
## und Ziele, A bestätigt, B bricht ab, Start beendet den Zug, Y überspringt Gegnerzüge,
|
||||
## X macht rückgängig.
|
||||
## Gamepad-Steuerung des Kampfes: Steuerkreuz bewegt einen Zeiger über Stapel, Hand, eigene Wesen
|
||||
## und Ziele (bei offener Wahl über deren Karten), A bestätigt, B bricht ab, Start beendet den
|
||||
## Zug, Y öffnet das Kartenmenü (im Gegnerzug: überspringen), X macht rückgängig.
|
||||
|
||||
var screen # BattleScreen
|
||||
var active := false
|
||||
var zone := "shop"
|
||||
var zone := "deck"
|
||||
var index := 0
|
||||
var targets: Array = []
|
||||
|
||||
@@ -19,6 +19,12 @@ func button(button: int) -> void:
|
||||
active = true
|
||||
if screen.game == null:
|
||||
return
|
||||
if not screen.pick_views.is_empty() and zone != "pick":
|
||||
zone = "pick"
|
||||
index = 0
|
||||
elif screen.pick_views.is_empty() and zone == "pick":
|
||||
zone = "hand"
|
||||
index = 0
|
||||
match button:
|
||||
JOY_BUTTON_START:
|
||||
if screen.my_turn() and not screen.any_overlay():
|
||||
@@ -27,10 +33,20 @@ func button(button: int) -> void:
|
||||
if screen.confirm.visible:
|
||||
screen.confirm.visible = false
|
||||
screen.cancel_all()
|
||||
zone = "shop"
|
||||
zone = "deck"
|
||||
JOY_BUTTON_Y:
|
||||
if screen.b_skip.visible:
|
||||
screen.skip_ai = true
|
||||
elif screen.menu_layer.visible:
|
||||
screen.close_menu()
|
||||
else:
|
||||
var items := items()
|
||||
if not items.is_empty() and zone in ["hand", "own"]:
|
||||
var item = items[clampi(index, 0, items.size() - 1)]
|
||||
if zone == "hand":
|
||||
screen.open_menu(item.card, Rect2(item.position, item.size))
|
||||
else:
|
||||
screen.open_menu(item.creature, Rect2(item.slot, item.size))
|
||||
JOY_BUTTON_X:
|
||||
if screen.b_undo.visible:
|
||||
screen.undo()
|
||||
@@ -49,7 +65,7 @@ func button(button: int) -> void:
|
||||
## Wechselt den Bereich und überspringt leere (eine leere Hand ist keine Station).
|
||||
## step 0: beim aktuellen Bereich bleiben, falls er etwas enthält.
|
||||
func _next_zone(step: int) -> void:
|
||||
var order := ["shop", "hand", "own"]
|
||||
var order := ["deck", "hand", "own"]
|
||||
var at := order.find(zone)
|
||||
index = 0
|
||||
if step == 0 and not items().is_empty():
|
||||
@@ -64,8 +80,10 @@ func _next_zone(step: int) -> void:
|
||||
|
||||
func items() -> Array:
|
||||
match zone:
|
||||
"shop":
|
||||
return screen.shop_views
|
||||
"deck":
|
||||
return [screen.deck] if screen.deck.visible else []
|
||||
"pick":
|
||||
return screen.pick_views
|
||||
"hand":
|
||||
return screen.hand_views
|
||||
"own":
|
||||
@@ -95,24 +113,13 @@ func confirm() -> void:
|
||||
index = clampi(index, 0, items.size() - 1)
|
||||
var item = items[index]
|
||||
match zone:
|
||||
"shop":
|
||||
screen.on_click("shop", int(item.get_meta("slot", 0)))
|
||||
"deck":
|
||||
screen.on_click("deck", null)
|
||||
"pick":
|
||||
screen.do_pick(index)
|
||||
index = 0
|
||||
"hand":
|
||||
screen.on_click("hand", item.card)
|
||||
if screen.pending != null:
|
||||
targets = []
|
||||
var valid: Array = screen.game.valid_targets(screen.perspective, screen.pending.target_type())
|
||||
for v in screen.enemy_views:
|
||||
if v.creature in valid:
|
||||
targets.append(v)
|
||||
for v in screen.own_views:
|
||||
if v.creature in valid:
|
||||
targets.append(v)
|
||||
for o in screen.others():
|
||||
if o in valid:
|
||||
targets.append(screen.hero_panels[o])
|
||||
zone = "target"
|
||||
index = 0
|
||||
"own":
|
||||
screen.on_click("own", item.creature)
|
||||
if screen.selected != null:
|
||||
|
||||
Reference in New Issue
Block a user