Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- extends Node2D
- var player1 = preload("res://Player1.tscn")
- var player2 = preload("res://Player2.tscn")
- var maceweapon = preload("res://weapon1.tscn")
- var rigidweapon = preload("res://weapon2.tscn")
- var p1weapontype = "mace"
- var p2weapontype = "mace"
- var menumusic = preload("res://sounds/sparrows.ogg")
- var duelmusic = preload("res://sounds/abracadabra.ogg")
- var explosionparticles = preload("res://Explosionparticles.tscn")
- var explosion
- var maceskins = {1:preload("res://mace1.png"), 2:preload("res://mace2.png"), 3:preload("res://mace3.png"), 4:preload("res://mace4.png")}
- var ships = {1:preload("res://ship1.png"), 2:preload("res://ship2.png"), 3:preload("res://ship3.png"), 4:preload("res://ship4.png")}
- var backgrounds = {1:preload("res://bgforest.png"), 2:preload("res://bgforest2.png")}
- var p1movespeed
- var p2movespeed
- var kineticenergy = 0
- var posarray = [Vector2(0,0),Vector2(0,0)]
- var p1
- var p2
- var p1weapon
- var p2weapon
- var p1beam
- var p2beam
- var joy1pos # just the position of the middle of the joystick
- var joy2pos
- var p1move = false
- var p2move = false
- var p1hp = 100
- var p2hp = 100
- var p1score = 0
- var p2score = 0
- var p1skin = 1 #skin refers to weapon, ship to ship skin
- var p2skin = 2
- var p1ship = 1
- var p2ship = 2
- func _ready():
- set_fixed_process(true)
- set_process_input(true)
- get_tree().set_pause(true)
- p1 = player1.instance()
- add_child(p1)
- p1.set_pos(Vector2(250,150))
- p2 = player2.instance()
- add_child(p2)
- p2.set_pos(Vector2(1050,150))
- p1.set_mode(2)
- p2.set_mode(2)
- joy1pos = Vector2(get_node("Joystick1").get_pos().x+(128),get_node("Joystick1").get_pos().y+(128)) #Here we find the center of the joystick
- joy2pos = Vector2(get_node("Joystick2").get_pos().x+(128),get_node("Joystick2").get_pos().y+(128))
- p1.connect("body_enter", self, "_on_Player1_body_enter")
- p2.connect("body_enter", self, "_on_Player2_body_enter")
- _setupp1()
- _setupp2()
- func _fixed_process(delta):
- get_node("score").set_text(str(p1score)+" - "+str(p2score))
- if p1move == true:
- if (posarray[0].distance_to(joy1pos) < 150): # Only touches actually touching the joystick should move player
- p1movespeed = posarray[0].distance_to(joy1pos*3) # Movespeed depends on how far touch happens from the middle of joystick
- if (p1movespeed > 300): p1movespeed = 300 # Movespeed has maximum, just to be sure, maybe not needed
- p1.set_linear_velocity((posarray[0]-joy1pos).normalized()*p1movespeed) # Direction from middle of joystick to position of touch, multiplied by speed
- get_node("Player1/Particles2D").set_emitting(true)
- get_node("Player1/Particles2D").set_param(0, (-posarray[0]+joy1pos).angle()*180/PI)
- if p1move == false:
- get_node("Player1/Particles2D").set_emitting(false)
- if p2move == true:
- if (posarray[1].distance_to(joy2pos) < 150):
- p2movespeed = posarray[1].distance_to(joy2pos*3)
- if (p2movespeed > 300): p2movespeed = 300
- p2.set_linear_velocity((posarray[1]-joy2pos).normalized()*p2movespeed)
- get_node("Player2/Particles2D").set_emitting(true)
- get_node("Player2/Particles2D").set_param(0, (-posarray[1]+joy2pos).angle()*180/PI)
- if p2move == false:
- get_node("Player2/Particles2D").set_emitting(false)
- if Input.is_action_pressed("leftplayer_up"):
- p1.set_linear_velocity(Vector2(p1.get_linear_velocity().x,-300).normalized()*300)
- if Input.is_action_pressed("leftplayer_down"):
- p1.set_linear_velocity(Vector2(p1.get_linear_velocity().x,300).normalized()*300)
- if Input.is_action_pressed("leftplayer_left"):
- p1.set_linear_velocity(Vector2(-300,p1.get_linear_velocity().y).normalized()*300)
- if Input.is_action_pressed("leftplayer_right"):
- p1.set_linear_velocity(Vector2(300,p1.get_linear_velocity().y).normalized()*300)
- if Input.is_action_pressed("rightplayer_up"):
- p2.set_linear_velocity(Vector2(p2.get_linear_velocity().x,-300).normalized()*300)
- if Input.is_action_pressed("rightplayer_down"):
- p2.set_linear_velocity(Vector2(p2.get_linear_velocity().x,300).normalized()*300)
- if Input.is_action_pressed("rightplayer_left"):
- p2.set_linear_velocity(Vector2(-300,p2.get_linear_velocity().y).normalized()*300)
- if Input.is_action_pressed("rightplayer_right"):
- p2.set_linear_velocity(Vector2(300,p2.get_linear_velocity().y).normalized()*300)
- ##if(p1weapontype == "mace"):
- get_node("Player1/Beam").look_at(get_node("Player1/Joint1/Link1").get_global_pos()) #Lets make beam target weapon and be correct length
- get_node("Player1/Beam").set_region_rect(Rect2(0,0,32,get_node("Player1").get_global_pos().distance_to(get_node("Player1/Joint1/Link1").get_global_pos())*2))
- ##if(p2weapontype == "mace"):
- get_node("Player2/Beam").look_at(get_node("Player2/Joint1/Link1").get_global_pos()) #Lets make beam target weapon and be correct length
- get_node("Player2/Beam").set_region_rect(Rect2(0,0,32,get_node("Player2").get_global_pos().distance_to(get_node("Player2/Joint1/Link1").get_global_pos())*2))
- #if p1.get_rot() != 0: #Maybe AI could use this as attack? :p
- # p1.set_rot(0)
- func _input(event):
- if event.type == InputEvent.SCREEN_TOUCH:
- if event.pos.x < 512:
- posarray[0] = event.pos
- if event.is_pressed():
- p1move = true
- if !event.is_pressed():
- p1move = false
- if event.pos.x > 512:
- posarray[1] = event.pos
- p2move = true
- if event.is_pressed():
- p2move = true
- if !event.is_pressed():
- p2move = false
- if event.type == InputEvent.SCREEN_DRAG: # SCREEN_DRAG DOESN'T PLAY WELL WITH SCREEN_TOUCH is_pressed()! Separately it works...
- if event.pos.x < 512:
- posarray[0] = event.pos
- p1move = true
- if event.pos.x > 512:
- posarray[1] = event.pos
- p2move = true
- func _on_Player1_body_enter( body ):
- if body.is_in_group("weapon"):
- kineticenergy = pow(p1.get_linear_velocity().dot(body.get_linear_velocity()),2)*body.get_mass()
- kineticenergy = sqrt(kineticenergy)/3000
- print(str(p1.get_name())+" was hit")
- p1hp = p1hp-kineticenergy
- print("p1hp: "+str(p1hp))
- get_node("Player1/Sprite").set_modulate(Color(1,0.01*p1hp,0.01*p1hp))
- if p1hp <= 0:
- get_node("SamplePlayer").play("death")
- explosion = explosionparticles.instance()
- get_node("Background").add_child(explosion)
- explosion.set_global_pos(p1.get_global_pos())
- _setupp1()
- p2score += 1
- func _on_Player2_body_enter( body ):
- if body.is_in_group("weapon"):
- kineticenergy = pow(p2.get_linear_velocity().dot(body.get_linear_velocity()),2)*body.get_mass()
- kineticenergy = sqrt(kineticenergy)/3000
- print(str(p2.get_name())+" was hit")
- p2hp = p2hp-kineticenergy
- print("p2hp: "+str(p2hp))
- get_node("Player2/Sprite").set_modulate(Color(1,0.01*p2hp,0.01*p2hp))
- if p2hp <= 0:
- get_node("SamplePlayer").play("death")
- explosion = explosionparticles.instance()
- get_node("Background").add_child(explosion)
- explosion.set_global_pos(p2.get_global_pos())
- _setupp2()
- p1score += 1
- func _changep1tex(dir):
- print(get_node("Player1/Joint1/Link1/Weaponsprite").get_texture())
- if p1skin+dir > maceskins.size():
- p1skin = 1
- elif p1skin+dir < 1:
- p1skin = maceskins.size()
- else:
- p1skin += dir
- if p1skin == p2skin:
- _changep1tex(dir)
- get_node("Player1/Joint1/Link1/Weaponsprite").set_texture(maceskins[p1skin])
- get_node("Menu/Panel/p1container/p1tex").set_texture(maceskins[p1skin])
- get_node("Joystick1/p1marker").set_texture(maceskins[p1skin])
- func _changep2tex(dir):
- print(get_node("Player2/Joint1/Link1/Weaponsprite").get_texture())
- if p2skin+dir > maceskins.size():
- p2skin = 1
- elif p2skin+dir < 1:
- p2skin = maceskins.size()
- else:
- p2skin += dir
- if p2skin == p1skin:
- _changep2tex(dir)
- get_node("Player2/Joint1/Link1/Weaponsprite").set_texture(maceskins[p2skin])
- get_node("Menu/Panel/p2container/p2tex").set_texture(maceskins[p2skin])
- get_node("Joystick2/p2marker").set_texture(maceskins[p2skin])
- func _changep1ship(dir):
- print(get_node("Player1/Sprite").get_texture())
- if p1ship+dir > ships.size():
- p1ship = 1
- elif p1ship+dir < 1:
- p1ship = ships.size()
- else:
- p1ship += dir
- if p1ship == p2ship:
- _changep1ship(dir)
- get_node("Player1/Sprite").set_texture(ships[p1ship])
- get_node("Menu/Panel/p1shipcontainer/p1tex").set_texture(ships[p1ship])
- func _changep2ship(dir):
- print(get_node("Player2/Sprite").get_texture())
- if p2ship+dir > ships.size():
- p2ship = 1
- elif p2ship+dir < 1:
- p2ship = ships.size()
- else:
- p2ship += dir
- if p2ship == p1ship:
- _changep2ship(dir)
- get_node("Player2/Sprite").set_texture(ships[p2ship])
- get_node("Menu/Panel/p2shipcontainer/p2tex").set_texture(ships[p2ship])
- func _on_p1texleftbutton_pressed():
- _changep1tex(-1)
- func _on_p1texrightbutton_pressed():
- _changep1tex(1)
- func _on_p2texleftbutton_pressed():
- _changep2tex(-1)
- func _on_p2texrightbutton_pressed():
- _changep2tex(1)
- func _on_Button_pressed(): # fightbutton
- get_tree().set_pause(false)
- get_node("Menu").queue_free()
- _setupp1()
- _setupp2()
- p1score = 0
- p2score = 0
- print(str(get_node("StreamPlayer").get_stream()))
- get_node("StreamPlayer").set_stream(duelmusic)
- get_node("StreamPlayer").play()
- print(str(get_node("StreamPlayer").get_stream()))
- func _on_menubutton_pressed():
- get_tree().reload_current_scene()
- func _on_p1shipleftbutton_pressed():
- _changep1ship(-1)
- func _on_p1shiprightbutton_pressed():
- _changep1ship(1)
- func _on_p2shipleftbutton_pressed():
- _changep2ship(-1)
- func _on_p2shiprightbutton_pressed():
- _changep2ship(1)
- func _setupp1():
- p1.queue_free()
- p1.set_name("deadPlayer1")
- p1 = player1.instance()
- add_child(p1)
- if p1weapontype == "mace":
- p1weapon = maceweapon.instance()
- get_node("Player1/Joint1").add_child(p1weapon)
- get_node("Player1/Joint1").set_softness(10)
- if p1weapon != null:
- get_node("Player1/Joint1/Link1/Weaponsprite").set_texture(maceskins[p1skin])
- elif p1weapontype == "rigid":
- #p1weapon.queue_free()
- #p1weapon.set_name("notweapon1")
- p1weapon = rigidweapon.instance()
- get_node("Player1/Joint1").add_child(p1weapon)
- get_node("Player1/Joint1").set_softness(0)
- get_node("Player1/Joint1").set_node_b("../Joint1/Link1")
- get_node("Player1/Sprite").set_texture(ships[p1ship])
- p1weapon.add_collision_exception_with(p1)
- p1.set_pos(Vector2(150,150))
- p1.connect("body_enter", self, "_on_Player1_body_enter")
- p1hp = 100
- pass
- func _setupp2():
- p2.queue_free()
- p2.set_name("deadPlayer2")
- p2 = player2.instance()
- add_child(p2)
- if p2weapontype == "mace":
- p2weapon = maceweapon.instance()
- get_node("Player2/Joint1").add_child(p2weapon)
- get_node("Player2/Joint1").set_softness(10)
- elif p2weapontype == "rigid":
- p2weapon.queue_free()
- p2weapon.set_name("notweapon2")
- p2weapon = rigidweapon.instance()
- p2.get_node("Player2/Joint1").add_child(p1weapon)
- get_node("Player2/Joint1").set_softness(0)
- get_node("Player2/Joint1").set_node_b("../Joint1/Link1")
- if p2weapon != null:
- get_node("Player2/Joint1/Link1/Weaponsprite").set_texture(maceskins[p2skin])
- get_node("Player2/Sprite").set_texture(ships[p2ship])
- p2weapon.add_collision_exception_with(p2)
- p2.set_pos(Vector2(1000,150))
- p2.connect("body_enter", self, "_on_Player2_body_enter")
- p2hp = 100
- pass
- func _on_p1macebutton_pressed():
- p1weapontype = "mace"
- print("weapontype = mace")
- func _on_p1rigidbutton_pressed():
- p1weapontype = "rigid"
- print("weapontype = rigid")
- p1weapon = rigidweapon.instance()
- get_node("Player1/Joint1").add_child(p1weapon)
- func _on_bgbackbutton_pressed():
- get_node("Background").set_texture(backgrounds[1])
- pass # replace with function body
- func _on_bgfwdbutton_pressed():
- get_node("Background").set_texture(backgrounds[2])
- pass # replace with function body
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement