added the basic shop
This commit is contained in:
@ -29,6 +29,7 @@ var UILayer : CanvasLayer
|
||||
var chatbox : Chatbox
|
||||
var wave_limit := 20
|
||||
var starting_cash := 16
|
||||
var shop_chance := 0.0
|
||||
|
||||
|
||||
func _ready() -> void:
|
||||
@ -61,6 +62,13 @@ func parse_command(text : String, peer_id : int):
|
||||
networked_set_endless.rpc(false)
|
||||
else:
|
||||
chatbox.append_message("SERVER", Color.TOMATO, "Unable to edit gamemode")
|
||||
if text.substr(1, 11) == "spawn_print":
|
||||
level.printer._on_static_body_3d_button_interacted(0)
|
||||
if text.substr(1, 10) == "spawn_shop":
|
||||
level.shop.randomize_cards()
|
||||
if text.substr(1, 7) == "prosper":
|
||||
for id in connected_players_nodes:
|
||||
connected_players_nodes[id].currency += 50
|
||||
# if text.substr(1, 17) == "show tower ranges":
|
||||
# pass
|
||||
# if text.substr(1, 20) = "show gauntlet ranges":
|
||||
@ -111,6 +119,7 @@ func ready_player(_value):
|
||||
|
||||
|
||||
func spawn_enemy_wave():
|
||||
level.shop.close()
|
||||
wave += 1
|
||||
level.a_star_graph_3d.find_path()
|
||||
level.a_star_graph_3d.visualized_path.disable_visualization()
|
||||
@ -182,10 +191,22 @@ func end_wave():
|
||||
connected_players_nodes[peer_id].currency += ceili(pot / connected_players_nodes.size())
|
||||
connected_players_nodes[peer_id].ready_state = false
|
||||
level.a_star_graph_3d.visualized_path.enable_visualization()
|
||||
if is_multiplayer_authority():
|
||||
if randf() <= shop_chance:
|
||||
networked_spawn_shop.rpc()
|
||||
shop_chance = 0.0
|
||||
else:
|
||||
shop_chance += 0.05
|
||||
wave_finished.emit(wave)
|
||||
set_upcoming_wave()
|
||||
|
||||
|
||||
@rpc("reliable", "call_local")
|
||||
func networked_spawn_shop():
|
||||
level.shop.randomize_cards()
|
||||
chatbox.append_message("SERVER", Color.TOMATO, "A shopkeeper has arrived!")
|
||||
|
||||
|
||||
func remove_player(peer_id):
|
||||
if connected_players_nodes.has(peer_id):
|
||||
connected_players_nodes[peer_id].queue_free()
|
||||
|
@ -7,3 +7,5 @@ class_name Level
|
||||
@export var enemy_goals : Array[Node3D] = []
|
||||
@export var a_star_graph_3d : AStarGraph3D
|
||||
@export var cinematic_cam : CinematicCamManager
|
||||
@export var printer : CardPrinter
|
||||
@export var shop : ShopStand
|
||||
|
@ -2,7 +2,8 @@ extends Control
|
||||
|
||||
|
||||
func _on_quit_button_pressed() -> void:
|
||||
Game.quit_to_desktop()
|
||||
Game.scene_switch_main_menu()
|
||||
queue_free()
|
||||
|
||||
|
||||
func _on_restart_button_pressed() -> void:
|
||||
|
65
Scripts/shop_stand.gd
Normal file
65
Scripts/shop_stand.gd
Normal file
@ -0,0 +1,65 @@
|
||||
extends Node3D
|
||||
class_name ShopStand
|
||||
|
||||
@export var cards : Array[CardInHand]
|
||||
@export var choice_colliders : Array[CollisionShape3D]
|
||||
@export var choice_buttons : Array[InteractButton]
|
||||
@export var item_card_scene : PackedScene
|
||||
var price_dict = {
|
||||
Data.Rarity.UNCOMMON : 30,
|
||||
Data.Rarity.RARE : 50,
|
||||
Data.Rarity.EPIC : 75,
|
||||
Data.Rarity.LEGENDARY : 100,
|
||||
}
|
||||
|
||||
|
||||
func close():
|
||||
for x in choice_colliders:
|
||||
x.disabled = true
|
||||
$Sprites.set_visible(false)
|
||||
|
||||
|
||||
func randomize_cards():
|
||||
var cheap_cards = []
|
||||
var medium_cards = []
|
||||
var pricey_cards = []
|
||||
for card in Data.cards:
|
||||
if card.rarity == Data.Rarity.UNCOMMON or card.rarity == Data.Rarity.RARE:
|
||||
cheap_cards.append(card)
|
||||
if card.rarity == Data.Rarity.RARE or card.rarity == Data.Rarity.EPIC:
|
||||
medium_cards.append(card)
|
||||
if card.rarity == Data.Rarity.EPIC or card.rarity == Data.Rarity.LEGENDARY:
|
||||
pricey_cards.append(card)
|
||||
|
||||
for x in 3:
|
||||
var chosen_card = cheap_cards.pick_random()
|
||||
cards[x].set_card(chosen_card)
|
||||
cards[x].view_tower()
|
||||
choice_buttons[x].press_cost = price_dict[chosen_card.rarity]
|
||||
choice_buttons[x].hover_text = "Spend $" + str(choice_buttons[x].press_cost) + " to acquire " + chosen_card.title + "?"
|
||||
for x in 2:
|
||||
var chosen_card = medium_cards.pick_random()
|
||||
cards[x+3].set_card(chosen_card)
|
||||
cards[x+3].view_tower()
|
||||
choice_buttons[x+3].press_cost = price_dict[chosen_card.rarity]
|
||||
choice_buttons[x+3].hover_text = "Spend $" + str(choice_buttons[x+3].press_cost) + " to acquire " + chosen_card.title + "?"
|
||||
for x in 1:
|
||||
var chosen_card = pricey_cards.pick_random()
|
||||
cards[x+5].set_card(chosen_card)
|
||||
cards[x+5].view_tower()
|
||||
choice_buttons[x+5].press_cost = price_dict[chosen_card.rarity]
|
||||
choice_buttons[x+5].hover_text = "Spend $" + str(choice_buttons[x+5].press_cost) + " to acquire " + chosen_card.title + "?"
|
||||
$Sprites.set_visible(true)
|
||||
for x in choice_colliders:
|
||||
x.disabled = false
|
||||
|
||||
|
||||
func retrieve_card(i):
|
||||
close()
|
||||
var card = cards[i].stats
|
||||
var item = item_card_scene.instantiate() as ItemCard
|
||||
item.card = card
|
||||
item.position = Vector3(2.128, 0, 0)
|
||||
add_child(item)
|
||||
#button_collider.disabled = false
|
||||
#button_box.position = Vector3(0,0,0)
|
@ -2,7 +2,8 @@ extends Control
|
||||
|
||||
|
||||
func _on_quit_button_pressed() -> void:
|
||||
Game.quit_to_desktop()
|
||||
Game.scene_switch_main_menu()
|
||||
queue_free()
|
||||
|
||||
|
||||
func _on_play_button_pressed() -> void:
|
||||
|
Reference in New Issue
Block a user