General enemy class. Two new enemy types. Removal of ship_speed

upgrades. Laser damage almost implemented. Multiplayer substantially
improved.
This commit is contained in:
Sage Vaillancourt 2018-06-03 11:11:27 -04:00
parent 1bcdc1a927
commit 5ea68a6a68
64 changed files with 1002 additions and 203 deletions

14
BG.gd Normal file
View File

@ -0,0 +1,14 @@
extends Node2D
var fly_speed = 5
func _ready():
pass
func _process(delta):
$bg1.position.x -= delta*fly_speed
$bg2.position.x -= delta*fly_speed
if $bg1.position.x < -550:
$bg1.position.x = 1600
if $bg2.position.x < -550:
$bg2.position.x = 1600

59
Bad.gd Normal file
View File

@ -0,0 +1,59 @@
#
# Copyright (C) 2018 Sage Vaillancourt, sagev9000@gmail.com
#
# This file is part of Fronter.
#
# Fronter is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# Fronter is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with Fronter. If not, see <http://www.gnu.org/licenses/>.
#
extends Area2D
signal dead
var speed = 50
var screensize
var health_multi = 1
var kill_reward = 0
var health = 1
var starting_health = 1
var hit_timer = 1000
func _on_Visibility_screen_exited():
queue_free()
func _ready():
connect("area_entered", self, "hit")
pass
func hit(who):
health -= who.damage/health_multi
hit_timer = 0
#var health_bar = Vector2(((health * 6) - 157), -273)
#$HealthBar.set_point_position( 1, health_bar )
if health <= 0:
emit_signal("dead", kill_reward)
queue_free()
var velocity = Vector2()
func _process(delta):
velocity.x -= 1
if velocity.length() > 0:
velocity = velocity.normalized() * speed
position += velocity * delta
prints(health)

32
Bad.tscn Normal file
View File

@ -0,0 +1,32 @@
[gd_scene format=2]
[node name="BadClass" type="Area2D" index="0"]
input_pickable = true
gravity_vec = Vector2( 0, 1 )
gravity = 98.0
linear_damp = 0.1
angular_damp = 1.0
collision_layer = 2
collision_mask = 0
audio_bus_override = false
audio_bus_name = "Master"
_sections_unfolded = [ "Collision" ]
[node name="CollisionBox" type="CollisionShape2D" parent="." index="0"]
[node name="HealthBar" type="Line2D" parent="." index="1"]
points = PoolVector2Array( )
width = 12.0
default_color = Color( 0, 1, 0.0352941, 1 )
texture_mode = 892679477
sharp_limit = 2.0
round_precision = 8
[node name="MainSprite" type="AnimatedSprite" parent="." index="2"]
animation = "default"
_sections_unfolded = [ "Transform" ]

12
Bad1.gd
View File

@ -37,17 +37,20 @@ func _ready():
pass pass
func hit(who): func hit(who):
health -= 10/health_multi health -= who.damage/health_multi
$AnimatedSprite.frame = 1 $AnimatedSprite.frame = 1
hit_timer = 0 hit_timer = 0
var velocity = Vector2() var health_bar = Vector2(((health * 6) - 157), -273)
$Line2D.set_point_position( 1, health_bar )
func _process(delta):
if health <= 0: if health <= 0:
emit_signal("dead", 15) emit_signal("dead", 15)
queue_free() queue_free()
var velocity = Vector2()
func _process(delta):
if hit_timer < 0.15: if hit_timer < 0.15:
hit_timer += delta hit_timer += delta
velocity.x = 0 velocity.x = 0
@ -61,7 +64,4 @@ func _process(delta):
if velocity.length() > 0: if velocity.length() > 0:
velocity = velocity.normalized() * SPEED velocity = velocity.normalized() * SPEED
var health_bar = Vector2(((health * 6) - 157), -273)
$Line2D.set_point_position( 1, health_bar )
position += velocity * delta position += velocity * delta

15
BadClass.gd Normal file
View File

@ -0,0 +1,15 @@
extends "res://Bad.gd"
# class member variables go here, for example:
# var a = 2
# var b = "textvar"
func _ready():
# Called every time the node is added to the scene.
# Initialization here
pass
#func _process(delta):
# # Called every frame. Delta is time since last frame.
# # Update game logic here.
# pass

View File

@ -39,7 +39,7 @@ func _ready():
func hit(who): func hit(who):
health -= 10/health_multi health -= who.damage/health_multi
$AnimatedSprite.frame = 1 $AnimatedSprite.frame = 1
hit_timer = 0 hit_timer = 0
@ -47,7 +47,7 @@ var velocity = Vector2()
func _process(delta): func _process(delta):
if health <= 0: if health <= 0:
emit_signal("dead", 200) emit_signal("dead", 100)
queue_free() queue_free()
$Rotatable.rotation_degrees += delta*fire_speed $Rotatable.rotation_degrees += delta*fire_speed

51
BlackHole.gd Normal file
View File

@ -0,0 +1,51 @@
extends "res://Bad.gd"
# class member variables go here, for example:
# var a = 2
# var b = "textvar"
var rot_speed = 1
func _ready():
starting_health = 5000
health = starting_health
speed = 10
position.x = 700
position.y = 300
var splitting = false
func _process(delta):
rotation += delta*rot_speed
if rotation > 2*PI:
rotation = 0
if health < starting_health*0.88:
$MainSprite.frame = 1
if health < starting_health*0.76:
$MainSprite.frame = 2
if health < starting_health*0.64:
$MainSprite.frame = 3
if health < starting_health*0.52:
$MainSprite.frame = 4
if health < starting_health*0.40:
$MainSprite.frame = 5
if health < starting_health*0.28:
$MainSprite.frame = 6
if health < starting_health*0.16:
$CollisionBox.disabled = true
$TopHalf.visible = true
$BotHalf.visible = true
$MainSprite.visible = false
if rotation_degrees > 45 && rotation_degrees < 70:
splitting = true
if splitting:
rot_speed = 0
$TopHalf.position.y -= delta*500
$TopHalf.position.x -= delta*250
$BotHalf.position.y += delta*500
$BotHalf.position.x += delta*250
$TopHalf.rotation += delta
$BotHalf.rotation -= delta

73
BlackHole.tscn Normal file
View File

@ -0,0 +1,73 @@
[gd_scene load_steps=16 format=2]
[ext_resource path="res://Bad.tscn" type="PackedScene" id=1]
[ext_resource path="res://BlackHole.gd" type="Script" id=2]
[ext_resource path="res://art/bad/BlackHole/base.png" type="Texture" id=3]
[ext_resource path="res://art/bad/BlackHole/base_1.png" type="Texture" id=4]
[ext_resource path="res://art/bad/BlackHole/base_2.png" type="Texture" id=5]
[ext_resource path="res://art/bad/BlackHole/base_3.png" type="Texture" id=6]
[ext_resource path="res://art/bad/BlackHole/base_4.png" type="Texture" id=7]
[ext_resource path="res://art/bad/BlackHole/base_5.png" type="Texture" id=8]
[ext_resource path="res://art/bad/BlackHole/base_6.png" type="Texture" id=9]
[ext_resource path="res://art/bad/BlackHole/half2.png" type="Texture" id=10]
[ext_resource path="res://art/bad/BlackHole/half1.png" type="Texture" id=11]
[sub_resource type="CircleShape2D" id=2]
custom_solver_bias = 0.0
radius = 904.987
[sub_resource type="SpriteFrames" id=1]
animations = [ {
"frames": [ ExtResource( 3 ), ExtResource( 4 ), ExtResource( 5 ), ExtResource( 6 ), ExtResource( 7 ), ExtResource( 8 ), ExtResource( 9 ) ],
"loop": true,
"name": "default",
"speed": 5.0
} ]
[sub_resource type="SpriteFrames" id=3]
animations = [ {
"frames": [ ExtResource( 10 ) ],
"loop": true,
"name": "default",
"speed": 5.0
} ]
[sub_resource type="SpriteFrames" id=4]
animations = [ {
"frames": [ ExtResource( 11 ) ],
"loop": true,
"name": "default",
"speed": 5.0
} ]
[node name="BlackHole" index="0" instance=ExtResource( 1 )]
scale = Vector2( 0.3, 0.3 )
script = ExtResource( 2 )
_sections_unfolded = [ "Collision", "Transform" ]
[node name="CollisionBox" parent="." index="0"]
shape = SubResource( 2 )
[node name="MainSprite" parent="." index="2"]
frames = SubResource( 1 )
[node name="TopHalf" type="AnimatedSprite" parent="." index="3"]
visible = false
frames = SubResource( 3 )
animation = "default"
[node name="BotHalf" type="AnimatedSprite" parent="." index="4"]
visible = false
frames = SubResource( 4 )
animation = "default"

View File

@ -38,7 +38,7 @@ func _on_Visibility_screen_exited():
queue_free() queue_free()
func hit(who): func hit(who):
health -= 10/health_multi health -= who.damage/health_multi
# $AnimatedSprite.frame = 1 # $AnimatedSprite.frame = 1
hit_timer = 0 hit_timer = 0

View File

@ -18,7 +18,7 @@ animations = [ {
"speed": 5.0 "speed": 5.0
} ] } ]
[node name="Area2D" type="Area2D"] [node name="BadBlob" type="Area2D"]
scale = Vector2( 0.25, 0.25 ) scale = Vector2( 0.25, 0.25 )
z_index = -1 z_index = -1
@ -27,6 +27,7 @@ gravity_vec = Vector2( 0, 1 )
gravity = 98.0 gravity = 98.0
linear_damp = 0.1 linear_damp = 0.1
angular_damp = 1.0 angular_damp = 1.0
collision_layer = 2
collision_mask = 0 collision_mask = 0
audio_bus_override = false audio_bus_override = false
audio_bus_name = "Master" audio_bus_name = "Master"
@ -44,4 +45,17 @@ shape = SubResource( 1 )
frames = SubResource( 2 ) frames = SubResource( 2 )
animation = "default" animation = "default"
[node name="Line2D" type="Line2D" parent="." index="2"]
position = Vector2( 112, 65.3334 )
points = PoolVector2Array( -157, -273, 143, -273 )
width = 12.0
default_color = Color( 0, 1, 0.0390625, 1 )
texture_mode = 31
joint_mode = 2
begin_cap_mode = 2
end_cap_mode = 2
sharp_limit = 2.0
round_precision = 8

BIN
Image Sources/Prison.xcf Normal file

Binary file not shown.

Binary file not shown.

View File

@ -21,11 +21,14 @@ extends Area2D
signal hit signal hit
const DEFAULT_DAMAGE = 10
export (int) var SPEED export (int) var SPEED
export (int) var DAMAGE export (int) var DAMAGE
var plasma = false var plasma = false
var current_pen = 0 var current_pen = 0
var friendly_laser = true var friendly_laser = true
var damage = DEFAULT_DAMAGE
func _ready(): func _ready():
$AnimatedSprite.play() $AnimatedSprite.play()

View File

@ -47,7 +47,6 @@ __meta__ = {
[node name="AnimatedSprite" type="AnimatedSprite" parent="." index="1"] [node name="AnimatedSprite" type="AnimatedSprite" parent="." index="1"]
modulate = Color( 0, 0.71875, 1, 1 )
position = Vector2( -1.90735e-06, 0 ) position = Vector2( -1.90735e-06, 0 )
scale = Vector2( 0.1, 0.2 ) scale = Vector2( 0.1, 0.2 )
frames = SubResource( 2 ) frames = SubResource( 2 )

102
Main.gd
View File

@ -22,7 +22,9 @@ extends Node
export (PackedScene) var FirstBad export (PackedScene) var FirstBad
export (PackedScene) var BlobBad export (PackedScene) var BlobBad
export (PackedScene) var LaserBad export (PackedScene) var LaserBad
export (PackedScene) var Prison
export (PackedScene) var RectangleBoss export (PackedScene) var RectangleBoss
export (PackedScene) var BlackHole
var players = {} var players = {}
@ -38,12 +40,19 @@ var touchy_shooty = false
var my_info = { name = "sagethesagesage", color = "FFFFFF" } var my_info = { name = "sagethesagesage", color = "FFFFFF" }
var mainmenu var mainmenu
const BADDIE_WAIT_TIME_DEFAULT = 5 var not_loading = false
const BADDIE_WAIT_TIME_DEFAULT = 4
func _ready(): func _ready():
# Prepare black rectangle for fading in # Prepare black rectangle for fading in
$ColorRect.visible = true $ColorRect.visible = true
if OS.has_touchscreen_ui_hint():
$HowTo.visible = true
else:
$HowToDesktop.visible = true
# Launch the main menu on boot and pause the game # Launch the main menu on boot and pause the game
mainmenu = preload("res://MainMenu.tscn").instance() mainmenu = preload("res://MainMenu.tscn").instance()
add_child(mainmenu) add_child(mainmenu)
@ -77,6 +86,13 @@ func _process(delta):
if (Input.is_action_pressed("ui_quit")): if (Input.is_action_pressed("ui_quit")):
get_tree().quit() get_tree().quit()
if Input.is_action_pressed("ui_right") || Input.is_action_pressed("ui_left"):
_on_HideHowTo_pressed()
if Input.is_action_pressed("ui_down") || Input.is_action_pressed("ui_up"):
_on_HideHowTo_pressed()
if Input.is_action_pressed("ui_accept"):
_on_HideHowTo_pressed()
# Constantly update point display # Constantly update point display
updatePoints() updatePoints()
@ -110,31 +126,35 @@ func _process(delta):
screen_flashing = false screen_flashing = false
$ColorRect.visible = false $ColorRect.visible = false
# After 100 enemies, enter bossMode
if total_bads_spawned == 100:
bossMode()
# When an enemy dies # When an enemy dies
func _on_bad_death(kill_money): func _on_bad_death(kill_money):
# Give players appropriate money # Give players appropriate money
$Player.money += kill_money $Player.money += kill_money
var a_round_of_bads = 30 #########################
# ENEMY SPAWNING SCRIPT #
#########################
var a_round_of_bads = 50
var sendblob = 1 var sendblob = 1
var bad_health_multi = 1 var bad_health_multi = 1.5
var total_bads_spawned = 0 var total_bads_spawned = 0
func BaddieTimer(): func BaddieTimer():
if total_bads_spawned == 75: if total_bads_spawned == 5: # 75 default
if get_tree().is_network_server(): if get_tree().is_network_server():
total_bads_spawned += 1
rpc("bossMode") rpc("bossMode")
else: else:
bossMode()
total_bads_spawned += 1 total_bads_spawned += 1
bossMode()
if bads_this_round <= a_round_of_bads && bad_spawning_enabled: if bads_this_round <= a_round_of_bads && bad_spawning_enabled:
var bad_type var bad_type
var badposition = Vector2() var badposition = Vector2()
if sendblob%20 == 0:
if sendblob%50 == 0:
bad_type = 3
sendblob += 1
elif sendblob%20 == 0:
bad_type = 2 bad_type = 2
sendblob += 1 sendblob += 1
elif sendblob%5 == 0: elif sendblob%5 == 0:
@ -145,8 +165,8 @@ func BaddieTimer():
sendblob += 1 sendblob += 1
bads_this_round += 1 bads_this_round += 1
if $BaddieTimer.wait_time > 0.5: if $BaddieTimer.wait_time > 1:
$BaddieTimer.wait_time = $BaddieTimer.wait_time * 0.975 $BaddieTimer.wait_time = $BaddieTimer.wait_time * 0.99
if bads_this_round == a_round_of_bads: if bads_this_round == a_round_of_bads:
bad_health_multi *= 1.5 bad_health_multi *= 1.5
@ -167,14 +187,26 @@ sync func spawnBad(bad_type, position, health_multi):
bad = BlobBad.instance() bad = BlobBad.instance()
if bad_type == 2: if bad_type == 2:
bad = LaserBad.instance() bad = LaserBad.instance()
if bad_type == 3:
bad = Prison.instance()
# Increase BG speed with each enemy spawned
$BG.fly_speed *= 1.01
# Add one to total of enemies spawned
total_bads_spawned += 1 total_bads_spawned += 1
add_child(bad) add_child(bad)
bad.connect("dead", self, "_on_bad_death") bad.connect("dead", self, "_on_bad_death")
if bad_type == 3:
bad.connect("health_up", self, "_on_health_up")
bad.health_multi = health_multi bad.health_multi = health_multi
bad.position = position bad.position = position
func _on_health_up(hp_increase):
$Mothership.health += hp_increase
$Mothership._update_health_bar()
func _on_PauseButton_pressed(): func _on_PauseButton_pressed():
$Player.upgradeMenu() $Player.upgradeMenu()
@ -192,7 +224,10 @@ func _on_Player_restart_game():
for child in self.get_children(): for child in self.get_children():
if (child.has_method("_on_Visibility_screen_exited")): if (child.has_method("_on_Visibility_screen_exited")):
child.queue_free() child.queue_free()
if (child.has_method("bossHealth")):
child.queue_free()
bads_this_round = 0 bads_this_round = 0
total_bads_spawned = 0
$BaddieTimer.wait_time = BADDIE_WAIT_TIME_DEFAULT $BaddieTimer.wait_time = BADDIE_WAIT_TIME_DEFAULT
$ShootButton.visible = true $ShootButton.visible = true
@ -222,30 +257,33 @@ func double_laser_upgrade(id):
get_node(str(id)).double_laser = true get_node(str(id)).double_laser = true
# Show other player's movement # Show other player's movement
func _on_Player_multiplayer_movement(id, position, is_shooting): func _on_Player_multiplayer_movement(id, pos, other_is_shooting):
get_node(str(id)).position = position get_node(str(id)).position = pos
#prints("Set position of", id, "( currently", get_node(str(id)).position, ") to", position)
if is_shooting: if other_is_shooting:
get_node(str(id)).shoot() get_node(str(id)).shoot()
# BOSS MODE # # BOSS MODE #
# Disable enemy spawning # Disable enemy spawning
# Wait a few seconds for enemies to clear # Wait a few seconds for enemies to clear
# Call for boss launch # Call for boss launch
var bosstimer = null
sync func bossMode(): sync func bossMode():
prints("bossMode()")
bad_spawning_enabled = false bad_spawning_enabled = false
var bosstimer = Timer.new() bosstimer = Timer.new()
bosstimer.connect("timeout",self,"_launch_boss") bosstimer.connect("timeout",self,"_launch_boss")
add_child(bosstimer) #to process add_child(bosstimer) #to process
bosstimer.wait_time = 3 # 15 default bosstimer.wait_time = 15
bosstimer.one_shot = true bosstimer.one_shot = true
bosstimer.start() #to start bosstimer.start() #to start
# Spawn the first boss # Spawn the first boss
func _launch_boss(): func _launch_boss():
prints("_launch_boss()")
var bad var bad
bad = RectangleBoss.instance() #bad = RectangleBoss.instance()
bad = BlackHole.instance()
add_child(bad) add_child(bad)
# Flash screen when signalled # Flash screen when signalled
@ -255,11 +293,24 @@ func _launch_boss():
# Boss death functions the same as regular death # Boss death functions the same as regular death
bad.connect("dead", self, "_on_boss_death") bad.connect("dead", self, "_on_boss_death")
# Get boss health
bad.connect("boss_health", self, "getBossHealth")
func getBossHealth(currentHealth, totalHealth):
totalHealth = float(totalHealth)
var health_bar = Vector2(((currentHealth/totalHealth)*800)+100, 50)
$BossHealth.set_point_position(1, health_bar)
$BossHealth.default_color.a = 1
if currentHealth <= 0:
$BossHealth.default_color.a = 0
pass
# Currently same as regular enemy death # Currently same as regular enemy death
func _on_boss_death(kill_money): func _on_boss_death(kill_money):
# Give players appropriate money, and restart spawns # Give players appropriate money, and restart spawns
$Player.money += kill_money $Player.money += kill_money
bad_spawning_enabled = true bad_spawning_enabled = true
bosstimer.stop()
# Begins screen-flashing process # Begins screen-flashing process
func _flash_screen(): func _flash_screen():
@ -270,10 +321,11 @@ func _flash_screen():
func _load_players(id, info): func _load_players(id, info):
player_info = info player_info = info
#prints(player_info) prints("_load_players", player_info)
#prints(player_info[id].name, "YEET", player_info[id].color) #prints(player_info[id].name, "YEET", player_info[id].color)
func _start_multiplayer_game(): func _start_multiplayer_game():
print(player_info)
mainmenu.now_quitting = true mainmenu.now_quitting = true
for peer_id in player_info: for peer_id in player_info:
if peer_id != get_tree().get_network_unique_id(): if peer_id != get_tree().get_network_unique_id():
@ -283,3 +335,13 @@ func _start_multiplayer_game():
add_child(player) add_child(player)
#get_node("/").add_child(player) #get_node("/").add_child(player)
player.setUsername(player_info[peer_id].name) player.setUsername(player_info[peer_id].name)
#$MultiplayerTimer.start()
func _on_HideHowTo_pressed():
$HowTo.visible = false
$HowToDesktop.visible = false
$HideHowTo.visible = false
func _on_Player_other_ship_enable_rainbow(id):
prints("Other player entered rainbow mode")
get_node(str(id)).enable_the_rainbow()

186
Main.tscn
View File

@ -1,15 +1,20 @@
[gd_scene load_steps=13 format=2] [gd_scene load_steps=20 format=2]
[ext_resource path="res://Main.gd" type="Script" id=1] [ext_resource path="res://Main.gd" type="Script" id=1]
[ext_resource path="res://Bad1.tscn" type="PackedScene" id=2] [ext_resource path="res://Bad1.tscn" type="PackedScene" id=2]
[ext_resource path="res://Bloob.tscn" type="PackedScene" id=3] [ext_resource path="res://Bloob.tscn" type="PackedScene" id=3]
[ext_resource path="res://BadLaser.tscn" type="PackedScene" id=4] [ext_resource path="res://BadLaser.tscn" type="PackedScene" id=4]
[ext_resource path="res://RectangleBoss.tscn" type="PackedScene" id=5] [ext_resource path="res://Prison.tscn" type="PackedScene" id=5]
[ext_resource path="res://art/bg.png" type="Texture" id=6] [ext_resource path="res://RectangleBoss.tscn" type="PackedScene" id=6]
[ext_resource path="res://Player.tscn" type="PackedScene" id=7] [ext_resource path="res://BlackHole.tscn" type="PackedScene" id=7]
[ext_resource path="res://Mothership.tscn" type="PackedScene" id=8] [ext_resource path="res://BG.gd" type="Script" id=8]
[ext_resource path="res://art/interface/pause.png" type="Texture" id=9] [ext_resource path="res://art/bg.png" type="Texture" id=9]
[ext_resource path="res://OtherPlayer.tscn" type="PackedScene" id=10] [ext_resource path="res://Player.tscn" type="PackedScene" id=10]
[ext_resource path="res://Mothership.tscn" type="PackedScene" id=11]
[ext_resource path="res://OtherPlayer.tscn" type="PackedScene" id=12]
[ext_resource path="res://art/interface/how_to.png" type="Texture" id=13]
[ext_resource path="res://art/interface/how_to_desktop.png" type="Texture" id=14]
[ext_resource path="res://art/interface/pause.png" type="Texture" id=15]
[sub_resource type="ImageTexture" id=1] [sub_resource type="ImageTexture" id=1]
@ -22,60 +27,82 @@ size = Vector2( 0, 0 )
[sub_resource type="SpriteFrames" id=2] [sub_resource type="SpriteFrames" id=2]
animations = [ { animations = [ {
"frames": [ ExtResource( 9 ) ], "frames": [ ExtResource( 13 ) ],
"loop": true, "loop": true,
"name": "default", "name": "default",
"speed": 5.0 "speed": 5.0
} ] } ]
[node name="Main" type="Node"] [sub_resource type="SpriteFrames" id=3]
animations = [ {
"frames": [ ExtResource( 14 ) ],
"loop": true,
"name": "default",
"speed": 5.0
} ]
[sub_resource type="SpriteFrames" id=4]
animations = [ {
"frames": [ ExtResource( 15 ) ],
"loop": true,
"name": "default",
"speed": 5.0
} ]
[node name="Main" type="Node" index="0"]
script = ExtResource( 1 ) script = ExtResource( 1 )
_sections_unfolded = [ "Pause" ] _sections_unfolded = [ "Pause" ]
FirstBad = ExtResource( 2 ) FirstBad = ExtResource( 2 )
BlobBad = ExtResource( 3 ) BlobBad = ExtResource( 3 )
LaserBad = ExtResource( 4 ) LaserBad = ExtResource( 4 )
RectangleBoss = ExtResource( 5 ) Prison = ExtResource( 5 )
RectangleBoss = ExtResource( 6 )
BlackHole = ExtResource( 7 )
[node name="Sprite" type="Sprite" parent="." index="0"] [node name="BG" type="Node2D" parent="." index="0"]
editor/display_folded = true z_index = -1
script = ExtResource( 8 )
_sections_unfolded = [ "Z Index" ]
[node name="bg1" type="Sprite" parent="BG" index="0"]
position = Vector2( 577.646, 365.663 )
scale = Vector2( 0.694364, 0.694364 )
texture = ExtResource( 9 )
_sections_unfolded = [ "Transform" ]
[node name="bg2" type="Sprite" parent="BG" index="1"]
position = Vector2( 1823.66, 361.868 )
scale = Vector2( 0.6985, 0.6985 )
texture = ExtResource( 9 )
_sections_unfolded = [ "Transform" ]
[node name="Sprite" type="Sprite" parent="." index="1"]
visible = false
z_index = -5 z_index = -5
texture = SubResource( 1 ) texture = SubResource( 1 )
_sections_unfolded = [ "Z Index" ] _sections_unfolded = [ "Z Index" ]
[node name="bg" type="Sprite" parent="Sprite" index="0"] [node name="Player" parent="." index="2" instance=ExtResource( 10 )]
position = Vector2( 544.657, 347.107 ) [node name="BaddieTimer" type="Timer" parent="." index="3"]
texture = ExtResource( 6 )
[node name="Player" parent="." index="1" instance=ExtResource( 7 )]
[node name="BaddieTimer" type="Timer" parent="." index="2"]
process_mode = 1 process_mode = 1
wait_time = 1.0 wait_time = 2.0
one_shot = false one_shot = false
autostart = false autostart = false
[node name="Mothership" parent="." index="3" instance=ExtResource( 8 )] [node name="Mothership" parent="." index="4" instance=ExtResource( 11 )]
editor/display_folded = true
position = Vector2( 18.327, 304.835 ) position = Vector2( 18.327, 304.835 )
[node name="Line2D" type="Line2D" parent="Mothership" index="2"] [node name="MoneyDisplay" type="Label" parent="." index="5"]
position = Vector2( 32.7402, 101.849 )
scale = Vector2( 3.33333, 3.33333 )
points = PoolVector2Array( 100, 200, 900, 200 )
width = 15.0
default_color = Color( 0.037384, 0.683594, 0, 1 )
texture_mode = 31
sharp_limit = 2.0
round_precision = 8
_sections_unfolded = [ "Z Index" ]
[node name="MoneyDisplay" type="Label" parent="." index="4"]
anchor_left = 0.0 anchor_left = 0.0
anchor_top = 0.0 anchor_top = 0.0
@ -98,7 +125,57 @@ lines_skipped = 0
max_lines_visible = -1 max_lines_visible = -1
_sections_unfolded = [ "Size Flags", "custom_fonts" ] _sections_unfolded = [ "Size Flags", "custom_fonts" ]
[node name="ShootButton" type="Button" parent="." index="5"] [node name="OtherPlayer" parent="." index="6" instance=ExtResource( 12 )]
visible = false
_sections_unfolded = [ "Material", "Transform", "Visibility" ]
[node name="BossHealth" type="Line2D" parent="." index="7"]
points = PoolVector2Array( 100, 50, 900, 50 )
width = 15.0
default_color = Color( 1, 0, 0, 0 )
texture_mode = 31
sharp_limit = 2.0
round_precision = 8
[node name="ColorRect" type="ColorRect" parent="." index="8"]
visible = false
anchor_left = 0.0
anchor_top = 0.0
anchor_right = 0.0
anchor_bottom = 0.0
margin_right = 1026.0
margin_bottom = 601.0
rect_pivot_offset = Vector2( 0, 0 )
rect_clip_content = false
mouse_filter = 0
mouse_default_cursor_shape = 0
size_flags_horizontal = 1
size_flags_vertical = 1
color = Color( 0, 0, 0, 1 )
_sections_unfolded = [ "Visibility" ]
[node name="HowTo" type="AnimatedSprite" parent="." index="9"]
visible = false
position = Vector2( 482.397, 299.674 )
scale = Vector2( 0.42077, 0.42077 )
frames = SubResource( 2 )
animation = "default"
_sections_unfolded = [ "Transform", "Visibility" ]
[node name="HowToDesktop" type="AnimatedSprite" parent="." index="10"]
visible = false
position = Vector2( 482, 300 )
scale = Vector2( 0.42, 0.42 )
frames = SubResource( 3 )
animation = "default"
_sections_unfolded = [ "Transform", "Visibility" ]
[node name="ShootButton" type="Button" parent="." index="11"]
anchor_left = 0.0 anchor_left = 0.0
anchor_top = 0.0 anchor_top = 0.0
@ -124,7 +201,7 @@ flat = true
align = 1 align = 1
_sections_unfolded = [ "Theme" ] _sections_unfolded = [ "Theme" ]
[node name="PauseButton" type="Button" parent="." index="6"] [node name="PauseButton" type="Button" parent="." index="12"]
anchor_left = 0.0 anchor_left = 0.0
anchor_top = 0.0 anchor_top = 0.0
@ -148,34 +225,37 @@ group = null
flat = true flat = true
align = 1 align = 1
[node name="Pause" type="AnimatedSprite" parent="." index="7"] [node name="Pause" type="AnimatedSprite" parent="." index="13"]
position = Vector2( 972.128, 67.044 ) position = Vector2( 972.128, 67.044 )
scale = Vector2( 0.199771, 0.199771 ) scale = Vector2( 0.199771, 0.199771 )
frames = SubResource( 2 ) frames = SubResource( 4 )
animation = "default" animation = "default"
[node name="OtherPlayer" parent="." index="8" instance=ExtResource( 10 )] [node name="HideHowTo" type="Button" parent="." index="14"]
visible = false
_sections_unfolded = [ "Transform", "Visibility" ]
[node name="ColorRect" type="ColorRect" parent="." index="9"]
visible = false
anchor_left = 0.0 anchor_left = 0.0
anchor_top = 0.0 anchor_top = 0.0
anchor_right = 0.0 anchor_right = 0.0
anchor_bottom = 0.0 anchor_bottom = 0.0
margin_right = 1026.0 margin_left = -50.0
margin_bottom = 601.0 margin_top = -15.0
margin_right = 1044.0
margin_bottom = 623.0
rect_pivot_offset = Vector2( 0, 0 ) rect_pivot_offset = Vector2( 0, 0 )
rect_clip_content = false rect_clip_content = false
focus_mode = 2
mouse_filter = 0 mouse_filter = 0
mouse_default_cursor_shape = 0 mouse_default_cursor_shape = 0
size_flags_horizontal = 1 size_flags_horizontal = 1
size_flags_vertical = 1 size_flags_vertical = 1
color = Color( 0, 0, 0, 1 ) toggle_mode = false
action_mode = 0
enabled_focus_mode = 2
shortcut = null
group = null
flat = true
align = 1
_sections_unfolded = [ "Visibility" ] _sections_unfolded = [ "Visibility" ]
[connection signal="body_entered" from="Player" to="Player" method="_on_Player_body_entered"] [connection signal="body_entered" from="Player" to="Player" method="_on_Player_body_entered"]
@ -186,12 +266,14 @@ _sections_unfolded = [ "Visibility" ]
[connection signal="other_ship_color_change" from="Player" to="." method="other_ship_color_change"] [connection signal="other_ship_color_change" from="Player" to="." method="other_ship_color_change"]
[connection signal="other_ship_enable_rainbow" from="Player" to="." method="_on_Player_other_ship_enable_rainbow"]
[connection signal="other_shooting_upgrade" from="Player" to="." method="other_shooting_upgrade"] [connection signal="other_shooting_upgrade" from="Player" to="." method="other_shooting_upgrade"]
[connection signal="restart_game" from="Player" to="Mothership" method="_on_Player_restart_game"]
[connection signal="restart_game" from="Player" to="." method="_on_Player_restart_game"] [connection signal="restart_game" from="Player" to="." method="_on_Player_restart_game"]
[connection signal="restart_game" from="Player" to="Mothership" method="_on_Player_restart_game"]
[connection signal="update_display" from="Player" to="." method="_on_Player_update_display"] [connection signal="update_display" from="Player" to="." method="_on_Player_update_display"]
[connection signal="timeout" from="BaddieTimer" to="." method="BaddieTimer"] [connection signal="timeout" from="BaddieTimer" to="." method="BaddieTimer"]
@ -206,4 +288,6 @@ _sections_unfolded = [ "Visibility" ]
[connection signal="pressed" from="PauseButton" to="." method="_on_PauseButton_pressed"] [connection signal="pressed" from="PauseButton" to="." method="_on_PauseButton_pressed"]
[connection signal="pressed" from="HideHowTo" to="." method="_on_HideHowTo_pressed"]

View File

@ -51,6 +51,9 @@ func _process(delta):
if (Input.is_action_pressed("ui_quit")): if (Input.is_action_pressed("ui_quit")):
get_tree().quit() get_tree().quit()
#if (Input.is_action_pressed("ui_accept")):
# now_quitting = true
if ($Ship.rotation_degrees > -7 || $Ship.rotation_degrees < -13): if ($Ship.rotation_degrees > -7 || $Ship.rotation_degrees < -13):
rotation_multiplier = SLOW_ROTATION rotation_multiplier = SLOW_ROTATION
else: else:

View File

@ -36,40 +36,42 @@ var timer = null
var bullet_delay = 0.1 var bullet_delay = 0.1
func _ready(): func _ready():
var health_bar = Vector2(((health * (.8)) + 100), 200) _update_health_bar()
$Line2D.set_point_position( 1, health_bar )
pass
# timer = Timer.new()
# timer.set_one_shot(true)
# timer.set_wait_time(bullet_delay)
# timer.connect("timeout", self, "on_timeout_complete")
# add_child(timer)
func _process(delta): func _process(delta):
if get_tree().has_network_peer() && not get_tree().is_network_server(): if get_tree().has_network_peer() && not get_tree().is_network_server():
#health = slave_health #health = slave_health
pass pass
if health <= 100 && $BlownOut/WhoopsGuy.unit_offset < 1:
$BlownOut/WhoopsGuy.unit_offset += delta
func _on_Mothership_area_shape_entered(area_id, area, area_shape, self_shape): func _on_Mothership_area_shape_entered(area_id, area, area_shape, self_shape):
if not get_tree().has_network_peer(): #if not get_tree().has_network_peer():
if not get_tree().is_network_server():
health -= 50 health -= 50
if get_tree().is_network_server(): if get_tree().is_network_server():
health -= 50 health -= 50
rset("slave_health", health) rset("slave_health", health)
prints(health)
var health_bar = Vector2(((health * (.8)) + 100), 200) _update_health_bar()
$Line2D.set_point_position( 1, health_bar )
if health <= 250: if health <= 250:
$AnimatedSprite.frame = 1 $BaseSprite.frame = 1
if health <= 100: if health <= 100:
$AnimatedSprite.frame = 2 $BaseSprite.frame = 2
if health <= 0: if health <= 0:
$AnimatedSprite.frame = 3 $BaseSprite.frame = 3
emit_signal("game_over") emit_signal("game_over")
prints("Game Over!") prints("Game Over!")
func _on_Player_restart_game(): func _on_Player_restart_game():
health = STARTING_HEALTH health = STARTING_HEALTH
$AnimatedSprite.frame = 0 $BaseSprite.frame = 0
var health_bar = Vector2(((health * (.8)) + 100), 200) var health_bar = Vector2(((health * (.8)) + 100), 300)
$Line2D.set_point_position( 1, health_bar ) $Line2D.set_point_position( 1, health_bar )
func _update_health_bar():
var health_bar = Vector2(((health * (.8)) + 100), 300)
$Line2D.set_point_position( 1, health_bar )
print(health)

View File

@ -1,4 +1,4 @@
[gd_scene load_steps=9 format=2] [gd_scene load_steps=11 format=2]
[ext_resource path="res://Mothership.gd" type="Script" id=1] [ext_resource path="res://Mothership.gd" type="Script" id=1]
[ext_resource path="res://Laser.tscn" type="PackedScene" id=2] [ext_resource path="res://Laser.tscn" type="PackedScene" id=2]
@ -6,6 +6,7 @@
[ext_resource path="res://art/mothership/mothership_damage1.png" type="Texture" id=4] [ext_resource path="res://art/mothership/mothership_damage1.png" type="Texture" id=4]
[ext_resource path="res://art/mothership/mothership_damage2.png" type="Texture" id=5] [ext_resource path="res://art/mothership/mothership_damage2.png" type="Texture" id=5]
[ext_resource path="res://art/mothership/mothership_ruined.png" type="Texture" id=6] [ext_resource path="res://art/mothership/mothership_ruined.png" type="Texture" id=6]
[ext_resource path="res://art/mothership/whoops_guy.png" type="Texture" id=7]
[sub_resource type="CapsuleShape2D" id=1] [sub_resource type="CapsuleShape2D" id=1]
@ -22,15 +23,24 @@ animations = [ {
"speed": 5.0 "speed": 5.0
} ] } ]
[sub_resource type="Curve2D" id=3]
bake_interval = 5.0
_data = {
"points": PoolVector2Array( 0, 0, 0, 0, -815.417, -275.207, -142.554, 423.496, 70.8929, -199.411, -142.027, -653.941, 0, 0, 0, 0, 36.6832, -1766.51 )
}
_sections_unfolded = [ "Resource" ]
[node name="Mothership" type="Area2D"] [node name="Mothership" type="Area2D"]
position = Vector2( 23.327, 304.835 ) position = Vector2( 42.1613, 302.944 )
scale = Vector2( 0.3, 0.3 ) scale = Vector2( 0.263572, 0.240903 )
input_pickable = true input_pickable = true
gravity_vec = Vector2( 0, 1 ) gravity_vec = Vector2( 0, 1 )
gravity = 98.0 gravity = 98.0
linear_damp = 0.1 linear_damp = 0.1
angular_damp = 1.0 angular_damp = 1.0
monitorable = false
collision_layer = 31 collision_layer = 31
collision_mask = 31 collision_mask = 31
audio_bus_override = false audio_bus_override = false
@ -44,10 +54,46 @@ Laser = ExtResource( 2 )
position = Vector2( -110, 0 ) position = Vector2( -110, 0 )
shape = SubResource( 1 ) shape = SubResource( 1 )
[node name="AnimatedSprite" type="AnimatedSprite" parent="." index="1"] [node name="BaseSprite" type="AnimatedSprite" parent="." index="1"]
position = Vector2( 78.4, 0 )
frames = SubResource( 2 ) frames = SubResource( 2 )
animation = "default" animation = "default"
_sections_unfolded = [ "Transform" ]
[node name="BlownOut" type="Path2D" parent="." index="2"]
position = Vector2( 935.039, 262.064 )
curve = SubResource( 3 )
[node name="WhoopsGuy" type="PathFollow2D" parent="BlownOut" index="0"]
position = Vector2( -815.417, -275.207 )
rotation = -0.0246469
offset = 0.0
h_offset = 0.0
v_offset = 0.0
rotate = false
cubic_interp = true
loop = false
lookahead = 4.0
[node name="whoops_guy" type="Sprite" parent="BlownOut/WhoopsGuy" index="0"]
rotation = -1.39698e-09
texture = ExtResource( 7 )
_sections_unfolded = [ "Offset", "Transform" ]
[node name="Line2D" type="Line2D" parent="." index="3"]
position = Vector2( 32.7402, 101.849 )
scale = Vector2( 3.33333, 3.33333 )
points = PoolVector2Array( 100, 300, 900, 300 )
width = 15.0
default_color = Color( 0.037384, 0.683594, 0, 1 )
texture_mode = 31
sharp_limit = 2.0
round_precision = 8
[connection signal="area_shape_entered" from="." to="." method="_on_Mothership_area_shape_entered"] [connection signal="area_shape_entered" from="." to="." method="_on_Mothership_area_shape_entered"]

View File

@ -95,15 +95,19 @@ func _server_disconnected():
func _connected_fail(): func _connected_fail():
pass # Could not even connect to server, abort pass # Could not even connect to server, abort
remote func register_player(id, info): remote func register_player(new_id, info):
player_info[id] = info prints("REGISTERING", new_id, info)
player_info[new_id] = info
if get_tree().is_network_server(): if get_tree().is_network_server():
# Send my info to new player # Send my info to new player
#rpc_id(id, "register_player", 1, my_info) rpc_id(new_id, "register_player", 1, my_info)
# Send the info of existing players # Send the info of existing players
for peer_id in player_info: for peer_id in player_info:
rpc_id(id, "register_player", peer_id, player_info[peer_id]) if peer_id != new_id:
emit_signal("player_info", id, player_info) rpc_id(new_id, "register_player", peer_id, player_info[peer_id])
rpc_id(peer_id, "register_player", new_id, player_info[new_id])
#player_info[new_id] = info
emit_signal("player_info", new_id, player_info)
$Lobby/RichTextLabel.bbcode_text = "" $Lobby/RichTextLabel.bbcode_text = ""
#$Players.text = str(player_info) #$Players.text = str(player_info)

View File

@ -99,7 +99,7 @@ animations = [ {
"speed": 5.0 "speed": 5.0
} ] } ]
[node name="Networking" type="Node" index="0"] [node name="Networking" type="Node"]
pause_mode = 2 pause_mode = 2
script = ExtResource( 1 ) script = ExtResource( 1 )

View File

@ -77,8 +77,6 @@ func _ready():
add_child(timer) add_child(timer)
timer.start() timer.start()
$AnimatedSprite.modulate = \"00FFFF\"
position.x = 100 position.x = 100
position.y = 250 position.y = 250
@ -109,10 +107,22 @@ func setUsername(name):
username = name username = name
func modulate(color): func modulate(color):
if !rainbow_is_on:
$AnimatedSprite.modulate = color $AnimatedSprite.modulate = color
var rainbow = Color(0,0,0,1)
var r_up = true
var g_up = true
var b_up = true
var rainbow_speed = 30
var rainbow_is_on = false
func _process(delta): func _process(delta):
$Username.text = username $Username.text = username
if rainbow_is_on:
rainbow(delta)
pass pass
func shoot(): func shoot():
@ -132,9 +142,36 @@ func shoot():
laser2.position.x = position.x + 46 laser2.position.x = position.x + 46
laser2.current_pen = laser_penetration laser2.current_pen = laser_penetration
can_shoot = false can_shoot = false
timer.start()" timer.start()
# Funky colors #
func enable_the_rainbow():
rainbow_is_on = true
func rainbow(delta):
if rainbow.r < 1 && r_up:
rainbow.r += rainbow_speed*delta/10
if rainbow.r >= 1: r_up = false
else:
rainbow.r -= rainbow_speed*delta/10
if rainbow.r <= 0.2: r_up = true
if rainbow.g < 1 && g_up:
rainbow.g += rainbow_speed*delta/9
if rainbow.g >= 1: g_up = false
else:
rainbow.g -= rainbow_speed*delta/9
if rainbow.g <= 0.2: g_up = true
if rainbow.b < 1 && b_up:
rainbow.b += rainbow_speed*delta/8
if rainbow.b >= 1: b_up = false
else:
rainbow.b -= rainbow_speed*delta/8
if rainbow.b <= 0.2: b_up = true
$AnimatedSprite.modulate = rainbow"
_sections_unfolded = [ "Resource" ] _sections_unfolded = [ "Resource" ]
[sub_resource type="SpriteFrames" id=2] [sub_resource type="SpriteFrames" id=2]
@ -165,11 +202,11 @@ collision_mask = 29
audio_bus_override = false audio_bus_override = false
audio_bus_name = "Master" audio_bus_name = "Master"
script = SubResource( 1 ) script = SubResource( 1 )
_sections_unfolded = [ "Material" ]
Laser = ExtResource( 1 ) Laser = ExtResource( 1 )
[node name="AnimatedSprite" type="AnimatedSprite" parent="." index="0"] [node name="AnimatedSprite" type="AnimatedSprite" parent="." index="0"]
modulate = Color( 0.276855, 0.445152, 0.84375, 1 )
position = Vector2( 1.01175, 7.07602 ) position = Vector2( 1.01175, 7.07602 )
scale = Vector2( 0.2, 0.2 ) scale = Vector2( 0.2, 0.2 )
frames = SubResource( 2 ) frames = SubResource( 2 )

115
Player.gd
View File

@ -23,13 +23,11 @@ extends Area2D
signal update_display # tells parent to update points display signal update_display # tells parent to update points display
signal refund # will tell parent a refund is occuring, for display signal refund # will tell parent a refund is occuring, for display
signal shooting_speed_upgrade # signals that a shooting speed upgrade has occured signal shooting_speed_upgrade # signals that a shooting speed upgrade has occured
signal ship_speed_upgrade
signal other_shooting_upgrade signal other_shooting_upgrade
signal other_ship_speed_upgrade
signal double_laser_upgrade signal double_laser_upgrade
signal other_ship_color_change signal other_ship_color_change
signal other_ship_enable_rainbow
signal shooting_speed_fully_upgraded signal shooting_speed_fully_upgraded
signal ship_speed_fully_upgraded
signal restart_game signal restart_game
signal multiplayer_movement signal multiplayer_movement
@ -39,6 +37,8 @@ export (PackedScene) var Laser
# THINGS THAT MAY NEED ADJUSTING # THINGS THAT MAY NEED ADJUSTING
################################# #################################
var ship_speed = 500
# first 5 tiers of shooting speed # first 5 tiers of shooting speed
const BULLET_DELAY_TIER1 = 0.8 const BULLET_DELAY_TIER1 = 0.8
const BULLET_DELAY_TIER2 = 0.5 const BULLET_DELAY_TIER2 = 0.5
@ -61,21 +61,21 @@ const BULLET_DELAY_TIER5_COST = 1000
# double laser cost # double laser cost
const DOUBLE_LASER_COST = 2000 const DOUBLE_LASER_COST = 2000
# the 5 tiers of ship speed # 5 tiers of laser damage
const SHIP_SPEED_TIER1 = 150 const LASER_DAMAGE_TIER1 = 10
const SHIP_SPEED_TIER2 = 200 const LASER_DAMAGE_TIER2 = 12
const SHIP_SPEED_TIER3 = 300 const LASER_DAMAGE_TIER3 = 15
const SHIP_SPEED_TIER4 = 500 const LASER_DAMAGE_TIER4 = 20
const SHIP_SPEED_TIER5 = 800 const LASER_DAMAGE_TIER5 = 50
# costs of ship speed upgrades # costs of laser damage upgrades
const SHIP_SPEED_TIER2_COST = 200 const LASER_DAMAGE_TIER2_COST = 200
const SHIP_SPEED_TIER3_COST = 400 const LASER_DAMAGE_TIER3_COST = 500
const SHIP_SPEED_TIER4_COST = 600 const LASER_DAMAGE_TIER4_COST = 1000
const SHIP_SPEED_TIER5_COST = 800 const LASER_DAMAGE_TIER5_COST = 2000
# the ship's starting position # the ship's starting position
const STARTING_POSITION = Vector2(100, 250) const STARTING_POSITION = Vector2(130, 250)
# the amount of money the player starts with # the amount of money the player starts with
const STARTING_MONEY = 100 const STARTING_MONEY = 100
@ -94,10 +94,6 @@ var can_shoot = false
# timer for shooting speed # timer for shooting speed
var timer = null var timer = null
# sets ship movement speed to the default
var ship_speed = SHIP_SPEED_TIER1
var ship_speed_tier = 0
# sets the delay between shots to the default # sets the delay between shots to the default
var bullet_delay = BULLET_DELAY_TIER1 var bullet_delay = BULLET_DELAY_TIER1
var bullet_delay_tier = 0 var bullet_delay_tier = 0
@ -105,6 +101,7 @@ var bullet_delay_tier = 0
# sets other shooting settings to their defaults # sets other shooting settings to their defaults
var laser_penetration = 0 var laser_penetration = 0
var double_laser = false var double_laser = false
var laser_damage = LASER_DAMAGE_TIER1
# gives the player their starting points # gives the player their starting points
var money = STARTING_MONEY var money = STARTING_MONEY
@ -126,13 +123,12 @@ func upgradeMenu():
add_child(upgmenu) add_child(upgmenu)
upgmenu.connect("refund", self, "_refund_button") upgmenu.connect("refund", self, "_refund_button")
upgmenu.connect("bullet_delay_upgrade", self, "upgradeBulletDelay_button") upgmenu.connect("bullet_delay_upgrade", self, "upgradeBulletDelay_button")
upgmenu.connect("ship_speed_upgrade", self, "upgradeShipSpeed_button")
upgmenu.connect("double_laser_upgrade", self, "doubleLaserUpgrade_button") upgmenu.connect("double_laser_upgrade", self, "doubleLaserUpgrade_button")
upgmenu.connect("laser_penetration_upgrade", self, "laserPenetrationUpgrade_button") upgmenu.connect("laser_penetration_upgrade", self, "laserPenetrationUpgrade_button")
upgmenu.connect("menu_closed", self, "menuClosed") upgmenu.connect("menu_closed", self, "menuClosed")
upgmenu.connect("change_color", self, "changeColor") upgmenu.connect("change_color", self, "changeColor")
upgmenu.connect("taste_the_rainbow", self, "enable_the_rainbow")
upgmenu.bullet_delay_tier = bullet_delay_tier upgmenu.bullet_delay_tier = bullet_delay_tier
upgmenu.ship_speed_tier = ship_speed_tier
if !get_tree().has_network_peer(): if !get_tree().has_network_peer():
get_tree().paused = true get_tree().paused = true
@ -215,34 +211,6 @@ func upgradeBulletDelay():
timer.set_wait_time(bullet_delay) timer.set_wait_time(bullet_delay)
rpc("other_shooting_speed_upgrade", get_tree().get_network_unique_id(), bullet_delay) rpc("other_shooting_speed_upgrade", get_tree().get_network_unique_id(), bullet_delay)
# upgrades the speed at which the ship moves
# not relevant for touchscreen users
# may be deprecated
func upgradeShipSpeed():
prints("func upgradeShipSpeed():")
if (ship_speed == SHIP_SPEED_TIER1 && money >= SHIP_SPEED_TIER2_COST):
ship_speed = SHIP_SPEED_TIER2
money -= SHIP_SPEED_TIER2_COST
ship_value += SHIP_SPEED_TIER2_COST
ship_speed_tier = 1
elif (ship_speed == SHIP_SPEED_TIER2 && money >= SHIP_SPEED_TIER3_COST):
ship_speed = SHIP_SPEED_TIER3
money -= SHIP_SPEED_TIER3_COST
ship_value += SHIP_SPEED_TIER3_COST
ship_speed_tier = 2
elif (ship_speed == SHIP_SPEED_TIER3 && money >= SHIP_SPEED_TIER4_COST):
ship_speed = SHIP_SPEED_TIER4
money -= SHIP_SPEED_TIER4_COST
ship_value += SHIP_SPEED_TIER4_COST
ship_speed_tier = 3
elif (ship_speed == SHIP_SPEED_TIER4 && money >= SHIP_SPEED_TIER5_COST):
ship_speed = SHIP_SPEED_TIER5
money -= SHIP_SPEED_TIER5_COST
ship_value += SHIP_SPEED_TIER5_COST
ship_speed_tier = 4
prints(ship_speed)
func doubleLaserUpgrade(): func doubleLaserUpgrade():
if money >= DOUBLE_LASER_COST && double_laser == false: if money >= DOUBLE_LASER_COST && double_laser == false:
money -= DOUBLE_LASER_COST money -= DOUBLE_LASER_COST
@ -275,7 +243,6 @@ func _refund_button():
bullet_delay = BULLET_DELAY_TIER1 bullet_delay = BULLET_DELAY_TIER1
bullet_delay_tier = 0 bullet_delay_tier = 0
timer.set_wait_time(bullet_delay) timer.set_wait_time(bullet_delay)
ship_speed = SHIP_SPEED_TIER1
laser_penetration = 0 laser_penetration = 0
double_laser = false double_laser = false
shooting_speed_upgrade = SHOOTING_SPEED_UPGRADE_DEFAULT shooting_speed_upgrade = SHOOTING_SPEED_UPGRADE_DEFAULT
@ -317,12 +284,22 @@ remote func other_shooting_speed_upgrade(id, bullet_delay):
remote func _change_color(id, color): remote func _change_color(id, color):
emit_signal("other_ship_color_change", id, color) emit_signal("other_ship_color_change", id, color)
remote func _enable_rainbow(id):
emit_signal("other_ship_enable_rainbow", id)
remote func double_laser_upgrade(id): remote func double_laser_upgrade(id):
emit_signal("double_laser_upgrade", id) emit_signal("double_laser_upgrade", id)
# the player's movement vector # the player's movement vector
var velocity = Vector2() var velocity = Vector2()
var rainbow = Color(0,0,0,1)
var r_up = true
var g_up = true
var b_up = true
var rainbow_speed = 30
var rainbow_is_on = false
func _process(delta): func _process(delta):
# move player with keyboard # move player with keyboard
velocity = Vector2() velocity = Vector2()
@ -338,8 +315,11 @@ func _process(delta):
velocity = velocity.normalized() * ship_speed velocity = velocity.normalized() * ship_speed
position += velocity * delta position += velocity * delta
if rainbow_is_on:
rainbow(delta)
# prevents player leaving the screen # prevents player leaving the screen
position.x = clamp(position.x, 0, screensize.x) position.x = clamp(position.x-100, 0, screensize.x-164) + 100
position.y = clamp(position.y, 0, screensize.y) position.y = clamp(position.y, 0, screensize.y)
# basically exists just for rpc messages about whether or not the player is currently firing # basically exists just for rpc messages about whether or not the player is currently firing
@ -370,6 +350,7 @@ func shoot():
laser.current_pen = laser_penetration laser.current_pen = laser_penetration
laser.position.y = position.y - 27 laser.position.y = position.y - 27
laser.position.x = position.x + 46 laser.position.x = position.x + 46
laser.damage = laser_damage
#MAYBE THE LASERS SHOULD BE THEIR OWN NODES #MAYBE THE LASERS SHOULD BE THEIR OWN NODES
#Would allow for more simple additions in the future #Would allow for more simple additions in the future
@ -384,6 +365,38 @@ func shoot():
can_shoot = false can_shoot = false
timer.start() timer.start()
# Funky colors #
# NOT CURRENTLY REFUNDABLE #
func enable_the_rainbow():
if money >= 2000 && not rainbow_is_on:
money -= 2000
rainbow_is_on = true
rpc("_enable_rainbow", get_tree().get_network_unique_id())
func rainbow(delta):
if rainbow.r < 1 && r_up:
rainbow.r += rainbow_speed*delta/10
if rainbow.r >= 1: r_up = false
else:
rainbow.r -= rainbow_speed*delta/10
if rainbow.r <= 0.2: r_up = true
if rainbow.g < 1 && g_up:
rainbow.g += rainbow_speed*delta/9
if rainbow.g >= 1: g_up = false
else:
rainbow.g -= rainbow_speed*delta/9
if rainbow.g <= 0.2: g_up = true
if rainbow.b < 1 && b_up:
rainbow.b += rainbow_speed*delta/8
if rainbow.b >= 1: b_up = false
else:
rainbow.b -= rainbow_speed*delta/8
if rainbow.b <= 0.2: b_up = true
$AnimatedSprite.modulate = rainbow
# displays endgame screen and pauses # displays endgame screen and pauses
func gameOver(): func gameOver():
var gameover = preload("res://GameOver.tscn").instance() var gameover = preload("res://GameOver.tscn").instance()

View File

@ -20,7 +20,7 @@ custom_solver_bias = 0.0
radius = 12.8998 radius = 12.8998
height = 40.4125 height = 40.4125
[node name="Player" type="Area2D" index="0"] [node name="Player" type="Area2D"]
input_pickable = true input_pickable = true
gravity_point = true gravity_point = true

39
Prison.gd Normal file
View File

@ -0,0 +1,39 @@
extends "res://Bad.gd"
func _ready():
health = 500
speed = 50
pass
signal health_up
var centered_x = false
var centered_y = false
func _process(delta):
if health < 200:
speed = 0
$StarSprite.frame = 1
$MainSprite.visible = false
$CollisionBox.disabled = true
if centered_x && centered_y:
$StarSprite.rotation += delta*10
position.x -= delta*500
if position.x < 0:
emit_signal("health_up", 200)
queue_free()
if position.x < 500:
position.x += delta*100
elif position.x > 524:
position.x -= delta*100
else:
centered_x = true
if position.y < 280:
position.y += delta*100
elif position.y > 320:
position.y -= delta*100
else:
centered_y = true

53
Prison.tscn Normal file
View File

@ -0,0 +1,53 @@
[gd_scene load_steps=9 format=2]
[ext_resource path="res://Bad.tscn" type="PackedScene" id=1]
[ext_resource path="res://Prison.gd" type="Script" id=2]
[ext_resource path="res://art/bad/prison/Star.png" type="Texture" id=3]
[ext_resource path="res://art/bad/prison/StarSmile.png" type="Texture" id=4]
[ext_resource path="res://art/bad/prison/Prison.png" type="Texture" id=5]
[sub_resource type="SpriteFrames" id=1]
animations = [ {
"frames": [ ExtResource( 3 ), ExtResource( 4 ) ],
"loop": true,
"name": "default",
"speed": 5.0
} ]
[sub_resource type="CapsuleShape2D" id=2]
custom_solver_bias = 0.0
radius = 367.866
height = 196.873
[sub_resource type="SpriteFrames" id=3]
animations = [ {
"frames": [ ExtResource( 5 ) ],
"loop": true,
"name": "default",
"speed": 5.0
} ]
[node name="Prison" instance=ExtResource( 1 )]
scale = Vector2( 0.2, 0.2 )
script = ExtResource( 2 )
_sections_unfolded = [ "Collision", "Transform" ]
[node name="StarSprite" type="AnimatedSprite" parent="." index="0"]
frames = SubResource( 1 )
animation = "default"
[node name="CollisionBox" parent="." index="1"]
position = Vector2( 0, -40 )
shape = SubResource( 2 )
[node name="MainSprite" parent="." index="3"]
frames = SubResource( 3 )

15
Range.gd Normal file
View File

@ -0,0 +1,15 @@
extends Area2D
# class member variables go here, for example:
# var a = 2
# var b = "textvar"
func _ready():
# Called every time the node is added to the scene.
# Initialization here
pass
#func _process(delta):
# # Called every frame. Delta is time since last frame.
# # Update game logic here.
# pass

View File

@ -22,12 +22,14 @@ extends Area2D
signal dead signal dead
signal flash signal flash
signal boss_fight_over signal boss_fight_over
signal boss_health
export (PackedScene) var Laser export (PackedScene) var Laser
#### MAYBE ADD A HEALTH BAR TO MAIN ITSELF #### #### MAYBE ADD A HEALTH BAR TO MAIN ITSELF ####
#var health = 3000 #var health = 3000
# DEFAULT: # DEFAULT:
var health = 20000 var starting_health = 20000
var health = starting_health
var timer = null var timer = null
var hit_timer = 1000 var hit_timer = 1000
@ -48,7 +50,7 @@ func _ready():
pass pass
func hit(who): func hit(who):
health -= 3/health_multi health -= who.damage/(health_multi*3.5)
if health > 1500: if health > 1500:
$Inside/InsideBadSprite.frame = 1 $Inside/InsideBadSprite.frame = 1
hit_timer = 0 hit_timer = 0
@ -57,6 +59,7 @@ func hit(who):
updateOutsideSprite() updateOutsideSprite()
if get_tree().is_network_server(): if get_tree().is_network_server():
rpc("bossHealth", health) rpc("bossHealth", health)
emit_signal("boss_health", health, starting_health)
func _process(delta): func _process(delta):
# Entering view # Entering view
@ -115,6 +118,8 @@ func _process(delta):
#### DOES LOW HEALTH RELEASE THE INSIDE OR NO HEALTH? #### #### DOES LOW HEALTH RELEASE THE INSIDE OR NO HEALTH? ####
if health <= 0 && !flashed: if health <= 0 && !flashed:
emit_signal("flash") emit_signal("flash")
$OutsideBottomCollision.disabled = true
$OutsideTopCollision.disabled = true
prints("flash") prints("flash")
flashed = true flashed = true
#queue_free() #queue_free()
@ -142,6 +147,7 @@ func _on_Inside_area_entered(area):
rpc("bossHealth", health) rpc("bossHealth", health)
else: else:
pass pass
emit_signal("boss_health", health, starting_health)
func updateOutsideSprite(): func updateOutsideSprite():
if health > 18000: if health > 18000:

View File

@ -32,12 +32,12 @@ animations = [ {
"speed": 5.0 "speed": 5.0
} ] } ]
[sub_resource type="RectangleShape2D" id=4] [sub_resource type="RectangleShape2D" id=2]
custom_solver_bias = 0.0 custom_solver_bias = 0.0
extents = Vector2( 414.127, 469.45 ) extents = Vector2( 414.127, 469.45 )
[sub_resource type="SpriteFrames" id=2] [sub_resource type="SpriteFrames" id=3]
animations = [ { animations = [ {
"frames": [ ExtResource( 8 ), ExtResource( 9 ), ExtResource( 10 ), ExtResource( 11 ), ExtResource( 12 ), ExtResource( 13 ), ExtResource( 14 ), ExtResource( 15 ), ExtResource( 16 ), ExtResource( 17 ), ExtResource( 18 ), ExtResource( 19 ), ExtResource( 20 ), ExtResource( 21 ), ExtResource( 22 ) ], "frames": [ ExtResource( 8 ), ExtResource( 9 ), ExtResource( 10 ), ExtResource( 11 ), ExtResource( 12 ), ExtResource( 13 ), ExtResource( 14 ), ExtResource( 15 ), ExtResource( 16 ), ExtResource( 17 ), ExtResource( 18 ), ExtResource( 19 ), ExtResource( 20 ), ExtResource( 21 ), ExtResource( 22 ) ],
@ -46,12 +46,12 @@ animations = [ {
"speed": 5.0 "speed": 5.0
} ] } ]
[sub_resource type="RectangleShape2D" id=3] [sub_resource type="RectangleShape2D" id=4]
custom_solver_bias = 0.0 custom_solver_bias = 0.0
extents = Vector2( 404.313, 217.774 ) extents = Vector2( 404.313, 217.774 )
[node name="RectangleBoss" type="Area2D"] [node name="RectangleBoss" type="Area2D" index="0"]
position = Vector2( 336.401, -1.22772 ) position = Vector2( 336.401, -1.22772 )
scale = Vector2( 0.25, 0.25 ) scale = Vector2( 0.25, 0.25 )
@ -60,10 +60,12 @@ gravity_vec = Vector2( 0, 1 )
gravity = 98.0 gravity = 98.0
linear_damp = 0.1 linear_damp = 0.1
angular_damp = 1.0 angular_damp = 1.0
collision_layer = 2
collision_mask = 0
audio_bus_override = false audio_bus_override = false
audio_bus_name = "Master" audio_bus_name = "Master"
script = ExtResource( 1 ) script = ExtResource( 1 )
_sections_unfolded = [ "Transform" ] _sections_unfolded = [ "Collision", "Transform" ]
Laser = ExtResource( 2 ) Laser = ExtResource( 2 )
[node name="Inside" type="Area2D" parent="." index="0"] [node name="Inside" type="Area2D" parent="." index="0"]
@ -87,7 +89,7 @@ _sections_unfolded = [ "Transform" ]
position = Vector2( 3501.19, 1181.02 ) position = Vector2( 3501.19, 1181.02 )
scale = Vector2( 1, 1.00835 ) scale = Vector2( 1, 1.00835 )
shape = SubResource( 4 ) shape = SubResource( 2 )
[node name="Line2D" type="Line2D" parent="." index="1"] [node name="Line2D" type="Line2D" parent="." index="1"]
@ -101,19 +103,19 @@ round_precision = 8
[node name="BigBadSprite" type="AnimatedSprite" parent="." index="2"] [node name="BigBadSprite" type="AnimatedSprite" parent="." index="2"]
position = Vector2( 3392, 1182 ) position = Vector2( 3392, 1182 )
frames = SubResource( 2 ) frames = SubResource( 3 )
animation = "default" animation = "default"
_sections_unfolded = [ "Transform" ] _sections_unfolded = [ "Transform" ]
[node name="OutsideTopCollision" type="CollisionShape2D" parent="." index="3"] [node name="OutsideTopCollision" type="CollisionShape2D" parent="." index="3"]
position = Vector2( 3427.85, 491.096 ) position = Vector2( 3427.85, 491.096 )
shape = SubResource( 3 ) shape = SubResource( 4 )
[node name="OutsideBottomCollision" type="CollisionShape2D" parent="." index="4"] [node name="OutsideBottomCollision" type="CollisionShape2D" parent="." index="4"]
position = Vector2( 3427.85, 1866.16 ) position = Vector2( 3427.85, 1866.16 )
shape = SubResource( 3 ) shape = SubResource( 4 )
[connection signal="area_entered" from="Inside" to="." method="_on_Inside_area_entered"] [connection signal="area_entered" from="Inside" to="." method="_on_Inside_area_entered"]

1
TODO
View File

@ -4,4 +4,5 @@
* A story mode? * A story mode?
* The main menu stars could do something silly and fun, like change colors, * The main menu stars could do something silly and fun, like change colors,
maybe taking the menu colors with them. maybe taking the menu colors with them.
* Purchasable Mothership upgrades (like turrets), and make all upgrades exponentially more expensive for higher tiers
* etc., etc. * etc., etc.

38
Turret.gd Normal file
View File

@ -0,0 +1,38 @@
extends Node2D
var current_target
var can_shoot = true
func _ready():
pass
var zeroPoint = Vector2(-60, -1015)
func _process(delta):
pass
func entityEnteredRange(bad_id, bad, bad_shape, self_shape):
print(bad.get_name())
if ("Bad" in bad.get_name()) && can_shoot:
current_target = bad_id
#var local_pos = zeroPoint + area.position
var local_pos = Vector2()
local_pos = to_local(bad.position)
$Beam.set_point_position(1, local_pos)
$TurretSprite.rotation = ($Beam.get_point_position(0).angle_to($Beam.get_point_position(1))) + PI/5.3
print($Beam.get_point_position(0).angle_to($Beam.get_point_position(1)))
$Beam.default_color.a = 200
$TurretSprite.frame = 1
bad.hit("turret")
$FlashTimer.start()
can_shoot = false
func _on_FlashTimer_timeout():
$Beam.default_color.a = 0
$TurretSprite.frame = 0
pass # replace with function body
func _on_ReloadTimer_timeout():
can_shoot = true
pass # replace with function body

87
Turret.tscn Normal file
View File

@ -0,0 +1,87 @@
[gd_scene load_steps=6 format=2]
[ext_resource path="res://Turret.gd" type="Script" id=1]
[ext_resource path="res://art/turret/turret.png" type="Texture" id=2]
[ext_resource path="res://art/turret/shootin.png" type="Texture" id=3]
[sub_resource type="CircleShape2D" id=1]
custom_solver_bias = 0.0
radius = 32.0821
[sub_resource type="SpriteFrames" id=2]
animations = [ {
"frames": [ ExtResource( 2 ), ExtResource( 3 ) ],
"loop": true,
"name": "default",
"speed": 5.0
} ]
[node name="Turret" type="Node2D"]
script = ExtResource( 1 )
_sections_unfolded = [ "Material", "Pause", "Transform", "Visibility", "Z Index" ]
[node name="Beam" type="Line2D" parent="." index="0"]
position = Vector2( -26.6667, 6.66667 )
points = PoolVector2Array( 26.4234, -6.61987, 2000, 0 )
width = 10.0
default_color = Color( 1, 0, 0, 0 )
texture_mode = 31
sharp_limit = 2.0
round_precision = 8
[node name="Range" type="Area2D" parent="." index="1"]
position = Vector2( -51.824, -18.5961 )
scale = Vector2( 30.8534, 30.8534 )
input_pickable = true
gravity_vec = Vector2( 0, 1 )
gravity = 98.0
linear_damp = 0.1
angular_damp = 1.0
monitorable = false
collision_layer = 31
collision_mask = 31
audio_bus_override = false
audio_bus_name = "Master"
_sections_unfolded = [ "Collision" ]
__meta__ = {
"_edit_group_": true
}
[node name="RangeCircle" type="CollisionShape2D" parent="Range" index="0"]
shape = SubResource( 1 )
[node name="FlashTimer" type="Timer" parent="." index="2"]
process_mode = 1
wait_time = 0.15
one_shot = false
autostart = false
[node name="ReloadTimer" type="Timer" parent="." index="3"]
process_mode = 1
wait_time = 1.0
one_shot = false
autostart = true
[node name="TurretSprite" type="AnimatedSprite" parent="." index="4"]
rotation = 0.785398
scale = Vector2( 0.12, 0.12 )
frames = SubResource( 2 )
animation = "default"
_sections_unfolded = [ "Transform" ]
[connection signal="area_shape_entered" from="Range" to="." method="entityEnteredRange"]
[connection signal="timeout" from="FlashTimer" to="." method="_on_FlashTimer_timeout"]
[connection signal="timeout" from="ReloadTimer" to="." method="_on_ReloadTimer_timeout"]

View File

@ -22,31 +22,27 @@ extends Node
signal refund signal refund
signal speed_upgrade signal speed_upgrade
signal bullet_delay_upgrade signal bullet_delay_upgrade
signal ship_speed_upgrade
signal double_laser_upgrade signal double_laser_upgrade
signal add_laser signal add_laser
signal plasma_lasers signal plasma_lasers
signal menu_closed signal menu_closed
signal change_color signal change_color
signal taste_the_rainbow
var bullet_delay_tier var bullet_delay_tier
var shooting_speed_tier var shooting_speed_tier
var ship_speed_tier
var double_lasers var double_lasers
func _ready(): func _ready():
bullet_delay_tier = get_parent().bullet_delay_tier bullet_delay_tier = get_parent().bullet_delay_tier
$ShootingSpeedUpgrade/Icon.frame = bullet_delay_tier $ShootingSpeedUpgrade/Icon.frame = bullet_delay_tier
ship_speed_tier = get_parent().ship_speed_tier
$ShipSpeedUpgrade/Icon.frame = ship_speed_tier
if get_tree().has_network_peer(): if get_tree().has_network_peer():
$ColorRect.color = Color(1,1,1,0.5) $ColorRect.color = Color(1,1,1,0.5)
else: else:
$ColorRect.color = Color(1,1,1,0.5) $ColorRect.color = Color(0,0,0,1)
func _process(delta): func _process(delta):
$ShootingSpeedUpgrade/Icon.frame = bullet_delay_tier $ShootingSpeedUpgrade/Icon.frame = bullet_delay_tier
$ShipSpeedUpgrade/Icon.frame = ship_speed_tier
if (Input.is_action_pressed("ui_quit")): if (Input.is_action_pressed("ui_quit")):
get_tree().quit() get_tree().quit()
if Input.is_action_pressed("ui_accept"): if Input.is_action_pressed("ui_accept"):
@ -59,9 +55,7 @@ func _on_Button_pressed():
func _on_Refund_pressed(): func _on_Refund_pressed():
bullet_delay_tier = 0 bullet_delay_tier = 0
ship_speed_tier = 0
$ShootingSpeedUpgrade/Icon.frame = 0 $ShootingSpeedUpgrade/Icon.frame = 0
$ShipSpeedUpgrade/Icon.frame = 0
get_tree().paused = false get_tree().paused = false
emit_signal("refund") emit_signal("refund")
@ -70,12 +64,6 @@ func _on_ShootingSpeedUpgrade_pressed():
emit_signal("bullet_delay_upgrade") emit_signal("bullet_delay_upgrade")
bullet_delay_tier = get_parent().bullet_delay_tier bullet_delay_tier = get_parent().bullet_delay_tier
func _on_ShipSpeedUpgrade_pressed():
get_tree().paused = false
emit_signal("ship_speed_upgrade")
prints("UPGRADE SHIP SPEED SIGNAL EMITTED")
ship_speed_tier = get_parent().ship_speed_tier
func _on_DoubleLaserUpgrade_pressed(): func _on_DoubleLaserUpgrade_pressed():
get_tree().paused = false get_tree().paused = false
emit_signal("double_laser_upgrade") emit_signal("double_laser_upgrade")
@ -108,3 +96,8 @@ func _on_DarkenedLawnGreen_pressed():
func _on_DeepSkyBlue_pressed(): func _on_DeepSkyBlue_pressed():
emit_signal("change_color", "00bfff") emit_signal("change_color", "00bfff")
#### NOT PAUSING GAME? ####
func _on_Rainbow_pressed():
get_tree().paused = false
emit_signal("taste_the_rainbow")

View File

@ -66,6 +66,7 @@ mouse_default_cursor_shape = 0
size_flags_horizontal = 1 size_flags_horizontal = 1
size_flags_vertical = 1 size_flags_vertical = 1
color = Color( 0, 0, 0, 1 ) color = Color( 0, 0, 0, 1 )
_sections_unfolded = [ "Visibility" ]
[node name="Resume" type="Button" parent="." index="1"] [node name="Resume" type="Button" parent="." index="1"]
@ -153,10 +154,9 @@ animation = "default"
[node name="ShipSpeedUpgrade" type="Node" parent="." index="4"] [node name="ShipSpeedUpgrade" type="Node" parent="." index="4"]
editor/display_folded = true
[node name="Button" type="Button" parent="ShipSpeedUpgrade" index="0"] [node name="Button" type="Button" parent="ShipSpeedUpgrade" index="0"]
visible = false
anchor_left = 0.0 anchor_left = 0.0
anchor_top = 0.0 anchor_top = 0.0
anchor_right = 0.0 anchor_right = 0.0
@ -181,6 +181,7 @@ align = 1
[node name="Icon" type="AnimatedSprite" parent="ShipSpeedUpgrade" index="1"] [node name="Icon" type="AnimatedSprite" parent="ShipSpeedUpgrade" index="1"]
visible = false
position = Vector2( 530, 310 ) position = Vector2( 530, 310 )
scale = Vector2( 0.392712, 0.392712 ) scale = Vector2( 0.392712, 0.392712 )
frames = SubResource( 3 ) frames = SubResource( 3 )
@ -188,8 +189,6 @@ animation = "New Anim"
[node name="ColorSelect" type="Node2D" parent="." index="5"] [node name="ColorSelect" type="Node2D" parent="." index="5"]
editor/display_folded = true
[node name="ColorSelectBG" type="Sprite" parent="ColorSelect" index="0"] [node name="ColorSelectBG" type="Sprite" parent="ColorSelect" index="0"]
position = Vector2( 150, 210 ) position = Vector2( 150, 210 )
@ -412,8 +411,33 @@ group = null
flat = true flat = true
align = 1 align = 1
[node name="Rainbow" type="Button" parent="ColorSelect/ColorSelectBG" index="9"]
anchor_left = 0.0
anchor_top = 0.0
anchor_right = 0.0
anchor_bottom = 0.0
margin_left = -501.0
margin_top = 668.0
margin_right = 501.0
margin_bottom = 1002.0
rect_pivot_offset = Vector2( 0, 0 )
rect_clip_content = false
focus_mode = 2
mouse_filter = 0
mouse_default_cursor_shape = 0
size_flags_horizontal = 1
size_flags_vertical = 1
toggle_mode = false
enabled_focus_mode = 2
shortcut = null
group = null
flat = true
align = 1
[node name="DoubleLaserUpgrade" type="Node2D" parent="." index="6"] [node name="DoubleLaserUpgrade" type="Node2D" parent="." index="6"]
editor/display_folded = true
position = Vector2( -150, -10 ) position = Vector2( -150, -10 )
__meta__ = { __meta__ = {
"_edit_group_": true "_edit_group_": true
@ -477,6 +501,8 @@ align = 1
[connection signal="pressed" from="ColorSelect/ColorSelectBG/DeepSkyBlue" to="." method="_on_DeepSkyBlue_pressed"] [connection signal="pressed" from="ColorSelect/ColorSelectBG/DeepSkyBlue" to="." method="_on_DeepSkyBlue_pressed"]
[connection signal="pressed" from="ColorSelect/ColorSelectBG/Rainbow" to="." method="_on_Rainbow_pressed"]
[connection signal="pressed" from="DoubleLaserUpgrade/Button" to="." method="_on_DoubleLaserUpgrade_pressed"] [connection signal="pressed" from="DoubleLaserUpgrade/Button" to="." method="_on_DoubleLaserUpgrade_pressed"]

Binary file not shown.

Before

Width:  |  Height:  |  Size: 126 KiB

After

Width:  |  Height:  |  Size: 205 KiB

BIN
art/bad/BlackHole/base.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 43 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 46 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 52 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 59 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 60 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 66 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 70 KiB

BIN
art/bad/BlackHole/half1.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 48 KiB

BIN
art/bad/BlackHole/half2.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

BIN
art/bad/prison/Prison.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 67 KiB

BIN
art/bad/prison/Star.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 144 KiB

After

Width:  |  Height:  |  Size: 196 KiB

BIN
art/drawn_bg1.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 MiB

BIN
art/drawn_bg2.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 867 KiB

BIN
art/interface/how_to.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 194 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 204 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 17 KiB

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

After

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.6 KiB

BIN
art/turret/shootin.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 43 KiB

BIN
art/turret/turret.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 47 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 29 KiB

After

Width:  |  Height:  |  Size: 35 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 37 KiB

After

Width:  |  Height:  |  Size: 43 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 26 KiB

After

Width:  |  Height:  |  Size: 37 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 36 KiB

After

Width:  |  Height:  |  Size: 41 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 54 KiB

After

Width:  |  Height:  |  Size: 55 KiB

View File

@ -227,3 +227,31 @@ texture_format/etc2=false
binary_format/64_bits=true binary_format/64_bits=true
custom_template/release="" custom_template/release=""
custom_template/debug="" custom_template/debug=""
[preset.2]
name="Windows Desktop"
platform="Windows Desktop"
runnable=true
custom_features=""
export_filter="all_resources"
include_filter=""
exclude_filter=""
patch_list=PoolStringArray( )
[preset.2.options]
texture_format/s3tc=true
texture_format/etc=false
texture_format/etc2=false
binary_format/64_bits=true
custom_template/release=""
custom_template/debug=""
application/icon=""
application/file_version=""
application/product_version=""
application/company_name=""
application/product_name=""
application/file_description=""
application/copyright=""
application/trademarks=""