2048-Shooter/Main Scenes/Game.gd
2024-02-29 21:53:12 +01:00

183 lines
5.3 KiB
GDScript

extends Node2D
const SlotClass = preload("res:///Objects/Slot.gd")
var Panzer_Temp = preload("res://Objects/Panzer.tscn")
onready var game_slots = $VBoxContainer/PanzerSlots
onready var overlay_node = find_node("Overlay")
var score_file = "user://highscore_2048Shooter.save"
var holding_item = null
var buy_panzer_left = 0
var life = 100
var hover = null
onready var start_panzer = 1
var rng = RandomNumberGenerator.new()
var holding_time = 0
signal speed_shoot
func _ready():
#Input.set_mouse_mode(Input.MOUSE_MODE_HIDDEN)
var node = String("Slot ")
node += rng.randi_range(1, 8) as String
node = find_node(node)
node.start_panzer += 1;
$Panel/Area2D/LifeBar.value = life
overlay_node.connect("score", self, "update_life_bar")
for gam_slot in game_slots.get_children():
gam_slot.connect("gui_input", self, "slot_gui_input", [gam_slot])
var pBars = get_tree().get_nodes_in_group("XP")
for pBar in pBars:
pBar.connect("full_bar", self, "_enable_Panzer")
func _process(delta):
if $Panel/Area2D/LifeBar.value == 0:
save_score()
get_tree().change_scene("res://Main Scenes/GameOver.tscn")
if holding_item != null:
holding_time += delta
func slot_gui_input(event: InputEvent, slot: SlotClass):
# if OS.get_name() != "Android":
# if event is InputEventMouseButton:
# if event.button_index == BUTTON_LEFT && event.pressed:
# _Panzer_Slot_handler(event, slot)
# else:
if event is InputEventScreenTouch:
if event.pressed:
_Panzer_Slot_handler_touch(event, slot)
if holding_item != null and holding_time > 0.2:
#double click action
# holding_item.old_slot.putIntoSlot(holding_item)
# holding_item.old_slot.upgradePanzerInSlot()
# holding_item = null
# holding_time = 0
pass
else:
if holding_item != null and hover == null and holding_item.old_slot != null:
holding_item.old_slot.putIntoSlot(holding_item)
holding_item = null
elif holding_item != null and hover != null:
drag_drop_handle(hover)
else:
pass
pass
func _input(event):
if event is InputEventScreenDrag:
if holding_item:
holding_item.global_position = get_global_mouse_position()
pass
func _on_Panzer_pressed():
if holding_item == null:
buy_panzer_left -= 1
if buy_panzer_left == 0:
$VBoxContainer/ButtonGrid/Panzer.disabled = true
var Panzer = null
Panzer = Panzer_Temp.instance()
add_child(Panzer)
holding_item = Panzer
holding_item.global_position = get_global_mouse_position()
pass # Replace with function body.
func _on_Speed_pressed():
var value = 0.5
emit_signal("speed_shoot", value)
$VBoxContainer/ButtonGrid/Speed.disabled = true
pass # Replace with function body.
func _enable_Panzer(value):
buy_panzer_left += 1
$VBoxContainer/ButtonGrid/Panzer.disabled = false
func update_life_bar():
var lifebar = find_node("LifeBar")
lifebar.value = lifebar.max_value
pass
func _on_Bullet_Grave_area_entered(area):
if area.is_in_group("Bullet"):
var Bullet = area.get_parent()
Bullet.queue_free()
pass # Replace with function body.
func _Panzer_Slot_handler(event: InputEvent, slot: SlotClass):
if holding_item != null:
if!slot.Panzer:
slot.putIntoSlot(holding_item)
holding_item = null
elif slot.Panzer and holding_item.PanzerType == slot.Panzer.PanzerType:
slot.upgradePanzerInSlot()
holding_item.queue_free()
holding_item = null
else:
print("yes")
# var temp_item = slot.Panzer
# slot.pickFromSlot()
# temp_item.global_position = event.global_position
# slot.putIntoSlot(holding_item)
# holding_item = temp_item
holding_item.old_slot.putIntoSlot(slot.Panzer)
slot.Panzer.old_slot.putIntoSlot(holding_item)
elif slot.Panzer:
holding_item = slot.Panzer
slot.pickFromSlot()
holding_item.global_position = get_global_mouse_position()
func _Panzer_Slot_handler_touch(event: InputEvent, slot: SlotClass):
if holding_item != null and holding_item.old_slot != slot:
if!slot.Panzer:
slot.putIntoSlot(holding_item)
holding_item = null
elif slot.Panzer and holding_item.PanzerType == slot.Panzer.PanzerType:
slot.upgradePanzerInSlot()
holding_item.queue_free()
holding_item = null
elif holding_item.old_slot != slot:
pass
elif slot.Panzer and holding_item == null:
holding_item = slot.Panzer
slot.pickFromSlot()
holding_item.global_position = get_global_mouse_position()
func drag_drop_handle(hover):
if!hover.Panzer:
hover.putIntoSlot(holding_item)
holding_item = null
elif hover.Panzer and holding_item.PanzerType == hover.Panzer.PanzerType:
hover.upgradePanzerInSlot()
holding_item.queue_free()
holding_item = null
elif holding_item.old_slot != null:
var temp = hover.Panzer
var temp2 = holding_item
hover.pickFromSlot()
hover.putIntoSlot(holding_item)
temp2.old_slot.putIntoSlot(temp)
holding_item = null
elif holding_item.old_slot == null:
var temp = hover.Panzer
var temp2 = holding_item
hover.pickFromSlot()
hover.putIntoSlot(holding_item)
holding_item = temp
holding_item.global_position = get_global_mouse_position()
holding_item.old_slot = null
func save_score():
var highscoreNode = find_node("Score")
var f = File.new()
if f.file_exists(score_file):
f.open(score_file, File.READ)
if (f.get_var() as int) > 0:
f.close()
f.open(score_file,File.WRITE)
f.store_var(highscoreNode.text)
f.close()
Globals.score = highscoreNode.text