mirror of
https://github.com/Yadciel1/2048-Shooter.git
synced 2024-11-08 23:21:22 +01:00
183 lines
5.3 KiB
GDScript
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
|