added Graphics and sound Effects and more overhauls
This commit is contained in:
parent
c887a2168c
commit
b9d4288900
214 changed files with 3378 additions and 198 deletions
90
scenes/main/galaxy.gdshader
Normal file
90
scenes/main/galaxy.gdshader
Normal file
|
|
@ -0,0 +1,90 @@
|
|||
shader_type canvas_item;
|
||||
render_mode unshaded;
|
||||
|
||||
uniform int iterations = 20;
|
||||
uniform float formuparam = 1.00;
|
||||
|
||||
uniform int volsteps = 20;
|
||||
uniform float stepsize = 0.1;
|
||||
|
||||
uniform float zoom = 0.800;
|
||||
uniform float tile = 0.5;
|
||||
uniform float speed = 0.001;
|
||||
|
||||
uniform float brightness = 0.002;
|
||||
uniform float darkmatter = 0.100;
|
||||
uniform float distfading = 0.650;
|
||||
uniform float saturation = 0.750;
|
||||
|
||||
uniform vec2 iResolution = vec2(192, 192);
|
||||
uniform vec2 iMouse = vec2(0,0);
|
||||
|
||||
float SCurve (float value) {
|
||||
|
||||
if (value < 0.5)
|
||||
{
|
||||
return value * value * value * value * value * 16.0;
|
||||
}
|
||||
|
||||
value -= 1.0;
|
||||
|
||||
return value * value * value * value * value * 16.0 + 1.0;
|
||||
}
|
||||
|
||||
void fragment()
|
||||
{
|
||||
//get coords and direction
|
||||
vec2 uv=FRAGCOORD.xy/iResolution.xy-.5;
|
||||
uv.y*=iResolution.y/iResolution.x;
|
||||
vec3 dir=vec3(uv*zoom,1.);
|
||||
float time=TIME*speed+.25;
|
||||
|
||||
//mouse rotation
|
||||
float a1=0.5+iMouse.x/iResolution.x*2.;
|
||||
float a2=0.8+iMouse.y/iResolution.y*2.;
|
||||
mat2 rot1=mat2(vec2(cos(a1),sin(a1)),vec2(-sin(a1),cos(a1)));
|
||||
mat2 rot2=mat2(vec2(cos(a2),sin(a2)),vec2(-sin(a2),cos(a2)));
|
||||
dir.xy*=rot1;
|
||||
dir.xz*=rot2;
|
||||
vec3 from=vec3(1.0,0.5,0.5);
|
||||
from-=vec3(0.0,time,0.0);
|
||||
from.xz*=rot1;
|
||||
from.xy*=rot2;
|
||||
|
||||
//volumetric rendering
|
||||
float s=0.1,fade=1.;
|
||||
vec3 v=vec3(0.);
|
||||
for (int r=0; r<volsteps; r++) {
|
||||
vec3 p=from+s*dir*0.5;
|
||||
p = abs(vec3(tile)-mod(p,vec3(tile*2.))); // tiling fold
|
||||
float pa,a=pa=0.;
|
||||
for (int i=0; i<iterations; i++) {
|
||||
p=abs(p)/dot(p,p)-formuparam; // the magic formula
|
||||
a+=abs(length(p)-pa); // absolute sum of average change
|
||||
pa=length(p);
|
||||
}
|
||||
float dm=max(0.,darkmatter-a*a*.001); //dark matter
|
||||
a = pow(a, 2.3); // add contrast
|
||||
if (r>6) fade*=1.-dm; // dark matter, don't render near
|
||||
//v+=vec3(dm,dm*.5,0.);
|
||||
v+=fade;
|
||||
v+=vec3(s,s*s,s*s*s*s)*a*brightness*fade; // coloring based on distance
|
||||
fade*=distfading; // distance fading
|
||||
s+=stepsize;
|
||||
}
|
||||
|
||||
v=mix(vec3(length(v)),v,saturation); //color adjust
|
||||
|
||||
vec4 C = vec4(v*.01,1.);
|
||||
|
||||
C.r = pow(C.r, 0.35);
|
||||
C.g = pow(C.g, 0.36);
|
||||
C.b = pow(C.b, 0.38);
|
||||
|
||||
vec4 L = C;
|
||||
|
||||
COLOR.r = mix(L.r, SCurve(C.r), 0.7);
|
||||
COLOR.g = mix(L.g, SCurve(C.g), 1.0);
|
||||
COLOR.b = mix(L.b, SCurve(C.b), 0.2);
|
||||
|
||||
}
|
||||
1
scenes/main/galaxy.gdshader.uid
Normal file
1
scenes/main/galaxy.gdshader.uid
Normal file
|
|
@ -0,0 +1 @@
|
|||
uid://b23078hfmmpc8
|
||||
|
|
@ -1,50 +1,69 @@
|
|||
extends Node2D
|
||||
@onready var obstaclesSpawnTimer = $obstaclesSpawnTimer
|
||||
|
||||
@onready var timeGhost = preload("res://scenes/spaceShip/timeGhost/timeghost.tscn")
|
||||
@onready var minigun = preload("res://scenes/weapon/minigun/minigun.tscn")
|
||||
@onready var railgun = preload("res://scenes/weapon/railgun/railgun.tscn")
|
||||
@onready var shotgun = preload("res://scenes/weapon/shotgun/shotgun.tscn")
|
||||
@onready var shotgunEnemy: PackedScene = preload("res://scenes/spaceShip/enemy/shotgunEnemy/shotgunEnemy.tscn")
|
||||
@onready var minigunEnemy: PackedScene = preload("res://scenes/spaceShip/enemy/minigunEnemy/minigunEnemy.tscn")
|
||||
@onready var railgunEnemy: PackedScene = preload("res://scenes/spaceShip/enemy/railgunEnemy/railgunEnemy.tscn")
|
||||
@onready var meteor: PackedScene = preload("res://scenes/obstacle/meteor/meteor.tscn")
|
||||
@onready var radiation: PackedScene = preload("res://scenes/obstacle/radiation/radiation.tscn")
|
||||
|
||||
@onready var obstaclePool = $obstaclePool
|
||||
@onready var enemyPool = $enemyPool
|
||||
@onready var enemySpawnTimer = $spawnTimer/enemySpawnTimer
|
||||
@onready var obstaclesSpawnTimer = $spawnTimer/obstaclesSpawnTimer
|
||||
|
||||
@onready var enemy: PackedScene = preload("res://scenes/spaceShip/enemy/enemy.tscn")
|
||||
@onready var obstacle: PackedScene = preload("res://scenes/obstacle/meteor/meteor.tscn")
|
||||
@onready var endScreen: PackedScene = preload("res://scenes/UI/loseScreen/endScreen.tscn")
|
||||
|
||||
var minigunRatio = 5
|
||||
var railgunRatio = 10
|
||||
var endedRound = false
|
||||
|
||||
@onready var player = $Player
|
||||
|
||||
func _ready() -> void:
|
||||
obstaclesSpawnTimer.autostart = true
|
||||
obstaclesSpawnTimer.start()
|
||||
Globals.setPlayer(player)
|
||||
player.changeWeapon(shotgun)
|
||||
Globals.waveComplete.connect(nextWave)
|
||||
player.destroyed.connect(endRound)
|
||||
nextWave()
|
||||
|
||||
for i in range(1, 10):
|
||||
addGhost()
|
||||
|
||||
|
||||
|
||||
|
||||
func addGhost():
|
||||
var ghost = timeGhost.instantiate()
|
||||
add_child(ghost)
|
||||
player.addTimeGhost(ghost)
|
||||
|
||||
func spawnObstacle(_obstacle: PackedScene, _position: Vector2):
|
||||
var newObstacle = _obstacle.instantiate()
|
||||
newObstacle.global_position = _position
|
||||
obstaclePool.add_child(newObstacle)
|
||||
if get_tree().get_first_node_in_group("obstaclePool") != null:
|
||||
get_tree().get_first_node_in_group("obstaclePool").add_child(newObstacle)
|
||||
|
||||
func spawnEnemy(_enemy: PackedScene, _position: Vector2):
|
||||
Globals.enemyCount += 1
|
||||
var newEnemy = _enemy.instantiate()
|
||||
newEnemy.global_position = _position
|
||||
enemyPool.add_child(newEnemy)
|
||||
if get_tree().get_first_node_in_group("enemyPool") != null:
|
||||
get_tree().get_first_node_in_group("enemyPool").add_child(newEnemy)
|
||||
|
||||
func _on_enemy_spawn_timer_timeout() -> void:
|
||||
spawnEnemy(enemy, Globals.getPlayer().getRandomSpawnPointPosition())
|
||||
for i in enemyPool.get_children():
|
||||
i.changeWeapon(shotgun)
|
||||
#newEnemy.destroyed.connect(startEnemySpawnTimer)
|
||||
|
||||
func _on_obstacles_spawn_timer_timeout() -> void:
|
||||
spawnObstacle(obstacle, Globals.getPlayer().getRandomSpawnPointPosition())
|
||||
var rng = RandomNumberGenerator.new()
|
||||
var number = rng.randi_range(0, 10)
|
||||
if number == 10:
|
||||
if Globals.getPlayer() != null:
|
||||
spawnObstacle(radiation, Globals.getPlayer().getRandomSpawnPointPosition())
|
||||
else:
|
||||
if Globals.getPlayer() != null:
|
||||
spawnObstacle(meteor, Globals.getPlayer().getRandomSpawnPointPosition())
|
||||
|
||||
|
||||
func nextWave():
|
||||
Globals.enemyCount = 0
|
||||
Globals.currentWave += 1
|
||||
if Globals.getPlayer() != null:
|
||||
for i in range(1, Globals.currentWave+1):
|
||||
if i % railgunRatio == 0:
|
||||
spawnEnemy(railgunEnemy, Globals.getPlayer().getRandomSpawnPointPosition())
|
||||
elif i % minigunRatio == 0:
|
||||
spawnEnemy(minigunEnemy, Globals.getPlayer().getRandomSpawnPointPosition())
|
||||
else:
|
||||
spawnEnemy(shotgunEnemy, Globals.getPlayer().getRandomSpawnPointPosition())
|
||||
|
||||
func endRound():
|
||||
if not endedRound:
|
||||
endedRound = true
|
||||
get_tree().get_root().add_child(endScreen.instantiate())
|
||||
self.queue_free()
|
||||
|
|
|
|||
|
|
@ -2,38 +2,26 @@
|
|||
|
||||
[ext_resource type="Script" uid="uid://cvoco1axom40" path="res://scenes/main/main.gd" id="1_kdt4m"]
|
||||
[ext_resource type="PackedScene" uid="uid://bmc2exqutt6vu" path="res://scenes/spaceShip/player/player.tscn" id="2_ia3nl"]
|
||||
[ext_resource type="PackedScene" uid="uid://dm0rd88xd5m7k" path="res://scenes/bullet/bulletPool.tscn" id="3_2s0fe"]
|
||||
[ext_resource type="Texture2D" uid="uid://cfwyw1sr6x2np" path="res://icon.svg" id="4_r8qeh"]
|
||||
[ext_resource type="Texture2D" uid="uid://beyhkcr2uvmc7" path="res://assets/space.png" id="2_l3cfh"]
|
||||
[ext_resource type="PackedScene" uid="uid://dm0rd88xd5m7k" path="res://scenes/pools/pools.tscn" id="3_2s0fe"]
|
||||
|
||||
[node name="main" type="Node2D"]
|
||||
script = ExtResource("1_kdt4m")
|
||||
|
||||
[node name="obstaclesSpawnTimer" type="Timer" parent="."]
|
||||
autostart = true
|
||||
|
||||
[node name="TextureRect" type="TextureRect" parent="."]
|
||||
modulate = Color(0.605274, 0.605274, 0.605274, 1)
|
||||
offset_left = -11272.0
|
||||
offset_top = -6736.0
|
||||
offset_right = 12152.0
|
||||
offset_bottom = 7008.0
|
||||
texture = ExtResource("4_r8qeh")
|
||||
offset_left = -147424.0
|
||||
offset_top = -96136.0
|
||||
offset_right = 176160.0
|
||||
offset_bottom = 137080.0
|
||||
texture = ExtResource("2_l3cfh")
|
||||
stretch_mode = 1
|
||||
|
||||
[node name="Pools" parent="." instance=ExtResource("3_2s0fe")]
|
||||
|
||||
[node name="Player" parent="." instance=ExtResource("2_ia3nl")]
|
||||
spawnDistance = 1000
|
||||
|
||||
[node name="bulletPool" parent="." instance=ExtResource("3_2s0fe")]
|
||||
|
||||
[node name="obstaclePool" type="Node2D" parent="."]
|
||||
|
||||
[node name="enemyPool" type="Node2D" parent="."]
|
||||
|
||||
[node name="spawnTimer" type="Node" parent="."]
|
||||
|
||||
[node name="enemySpawnTimer" type="Timer" parent="spawnTimer"]
|
||||
wait_time = 10.0
|
||||
autostart = true
|
||||
|
||||
[node name="obstaclesSpawnTimer" type="Timer" parent="spawnTimer"]
|
||||
autostart = true
|
||||
|
||||
[connection signal="timeout" from="spawnTimer/enemySpawnTimer" to="." method="_on_enemy_spawn_timer_timeout"]
|
||||
[connection signal="timeout" from="spawnTimer/obstaclesSpawnTimer" to="." method="_on_obstacles_spawn_timer_timeout"]
|
||||
[connection signal="timeout" from="obstaclesSpawnTimer" to="." method="_on_obstacles_spawn_timer_timeout"]
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue