allow setting different backgrounds

This commit is contained in:
Arnaud Vergnet 2021-05-06 11:40:24 +02:00
parent 2b74499051
commit 29b571317f
7 changed files with 63 additions and 28 deletions

View file

@ -3,6 +3,7 @@ extends Node
signal game_over signal game_over
onready var foreground := $foreground onready var foreground := $foreground
onready var background := $background
onready var spawner := $spawner onready var spawner := $spawner
onready var player := $player onready var player := $player
onready var scoreUI := $scoreUI onready var scoreUI := $scoreUI
@ -35,14 +36,14 @@ func setup(mode: String, goal: int, difficulty: String, next_lose: String, next_
game_goal = goal game_goal = goal
if(difficulty == "hard"): if(difficulty == "hard"):
game_difficulty = "hard" game_difficulty = "hard"
game_speed = 2
else: else:
game_difficulty = "easy" game_difficulty = "easy"
game_version = version game_version = version
print("setup minigame: " + mode + " " + next_lose + " " + next_win) print("setup minigame: " + mode + " " + next_lose + " " + next_win + " | version: " + String(version))
set_mode(mode) set_mode(mode)
foreground.init(game_speed) background.init(game_version)
spawner.init(game_speed) foreground.init(game_speed, game_version)
spawner.init(game_difficulty, game_version)
scoreUI.init(mode, goal) scoreUI.init(mode, goal)
next_timeline_lose = next_lose next_timeline_lose = next_lose
next_timeline_win = next_win next_timeline_win = next_win
@ -76,7 +77,7 @@ func start():
yield(t, "timeout") yield(t, "timeout")
yield(t, "timeout") yield(t, "timeout")
start_timer_UI.hide() start_timer_UI.hide()
spawner.start(game_difficulty, game_version) spawner.start()
if game_mode == "score": if game_mode == "score":
scoreUI.start(0) scoreUI.start(0)
else: else:

View file

@ -2,8 +2,11 @@ extends Sprite
export var scroll_speed = 9 export var scroll_speed = 9
export(Array, Texture) var textures := []
var speed_offset : float = 0 var speed_offset : float = 0
var moving = false var moving = false
var game_version := 0 setget set_game_version
signal viewport_entered(object) signal viewport_entered(object)
signal viewport_exited(object) signal viewport_exited(object)
@ -26,6 +29,14 @@ func move():
position.x -= scroll_speed + speed_offset position.x -= scroll_speed + speed_offset
func set_game_version(new_value: int):
game_version = new_value
if game_version < textures.size():
texture = textures[game_version]
else:
texture = textures[0]
func _on_VisibilityNotifier2D_viewport_entered(viewport: Viewport) -> void: func _on_VisibilityNotifier2D_viewport_entered(viewport: Viewport) -> void:
emit_signal("viewport_entered", self) emit_signal("viewport_entered", self)

View file

@ -1,7 +1,8 @@
[gd_scene load_steps=5 format=2] [gd_scene load_steps=6 format=2]
[ext_resource path="res://mini-game/ressources/backgrounds/road3.png" type="Texture" id=1] [ext_resource path="res://mini-game/ressources/backgrounds/road3.png" type="Texture" id=1]
[ext_resource path="res://mini-game/scenes/decor/ForegroundSprite.gd" type="Script" id=2] [ext_resource path="res://mini-game/scenes/decor/ForegroundSprite.gd" type="Script" id=2]
[ext_resource path="res://mini-game/ressources/backgrounds/road.png" type="Texture" id=3]
[sub_resource type="Shader" id=1] [sub_resource type="Shader" id=1]
code = "shader_type canvas_item; code = "shader_type canvas_item;
@ -28,6 +29,7 @@ script = ExtResource( 2 )
__meta__ = { __meta__ = {
"_editor_description_": "" "_editor_description_": ""
} }
textures = [ ExtResource( 1 ), ExtResource( 3 ) ]
[node name="VisibilityNotifier2D" type="VisibilityNotifier2D" parent="."] [node name="VisibilityNotifier2D" type="VisibilityNotifier2D" parent="."]
position = Vector2( 1930, 540 ) position = Vector2( 1930, 540 )

View file

@ -0,0 +1,12 @@
extends Control
export(Array, Texture) var textures := []
var game_version := 0
func init(version: int):
game_version = version
if version < textures.size():
$TextureRect.texture = textures[version]
else:
$TextureRect.texture = textures[0]

View file

@ -1,13 +1,17 @@
[gd_scene load_steps=2 format=2] [gd_scene load_steps=4 format=2]
[ext_resource path="res://mini-game/ressources/backgrounds/city.png" type="Texture" id=1] [ext_resource path="res://mini-game/ressources/backgrounds/city.png" type="Texture" id=1]
[ext_resource path="res://mini-game/scenes/decor/background.gd" type="Script" id=2]
[ext_resource path="res://mini-game/ressources/backgrounds/background.png" type="Texture" id=3]
[node name="background" type="Control"] [node name="background" type="Control"]
anchor_right = 1.0 anchor_right = 1.0
anchor_bottom = 1.0 anchor_bottom = 1.0
script = ExtResource( 2 )
__meta__ = { __meta__ = {
"_edit_use_anchors_": false "_edit_use_anchors_": false
} }
textures = [ ExtResource( 1 ), ExtResource( 3 ) ]
[node name="TextureRect" type="TextureRect" parent="."] [node name="TextureRect" type="TextureRect" parent="."]
anchor_right = 1.0 anchor_right = 1.0

View file

@ -2,35 +2,39 @@ extends Node2D
var sprite_scene = preload("res://mini-game/scenes/decor/ForegroundSprite.tscn") var sprite_scene = preload("res://mini-game/scenes/decor/ForegroundSprite.tscn")
var textures := [] var sprites := []
var game_version := 0
var moving := false var moving := false
var speed_offset : float = 0 setget set_speed_offset var speed_offset : float = 0 setget set_speed_offset
func _ready(): func _ready():
textures.append($ForegroundSprite) sprites.append($ForegroundSprite)
stop() stop()
func init(speed: float): func init(speed: float, version: int):
game_version = version
for s in sprites:
s.game_version = game_version
set_speed_offset(speed) set_speed_offset(speed)
func set_speed_offset(new_value: float): func set_speed_offset(new_value: float):
speed_offset = new_value speed_offset = new_value
for t in textures: for t in sprites:
t.speed_offset = speed_offset t.speed_offset = speed_offset
func stop(): func stop():
moving = false moving = false
for t in textures: for t in sprites:
t.stop() t.stop()
func start(): func start():
moving = true moving = true
for t in textures: for t in sprites:
t.start() t.start()
@ -42,10 +46,11 @@ func _on_ForegroundSprite_viewport_entered(object: Sprite) -> void:
new_sprite.connect("viewport_exited", self, "_on_ForegroundSprite_viewport_exited") new_sprite.connect("viewport_exited", self, "_on_ForegroundSprite_viewport_exited")
if moving: if moving:
new_sprite.start() new_sprite.start()
new_sprite.game_version = game_version
add_child(new_sprite) add_child(new_sprite)
textures.append(new_sprite) sprites.append(new_sprite)
func _on_ForegroundSprite_viewport_exited(object: Sprite) -> void: func _on_ForegroundSprite_viewport_exited(object: Sprite) -> void:
textures.remove(textures.find(object)) sprites.remove(sprites.find(object))
object.queue_free() object.queue_free()

View file

@ -17,9 +17,19 @@ onready var items := $items
var last_timer_random : float = 1 var last_timer_random : float = 1
func init(speed: float): func init(difficulty: String, version: int):
match difficulty:
"easy":
timer_speed = 1
random_threshold = 40
"hard":
timer_speed = 0.9
random_threshold = 25
_:
pass
scenes_offset = version
update_timer() update_timer()
set_speed_offset(speed) set_speed_offset(0)
func set_speed_offset(new_value: float): func set_speed_offset(new_value: float):
@ -53,17 +63,7 @@ func update_timer():
timer.wait_time = timer_speed + random timer.wait_time = timer_speed + random
func start(difficulty, version): func start():
match difficulty:
"easy":
timer_speed = 1
random_threshold = 40
"hard":
timer_speed = 0.9
random_threshold = 25
_:
pass
scenes_offset = version
timer.start() timer.start()