Skip to content

Commit d8cfa8b

Browse files
committed
levels OK with game state
1 parent ad88527 commit d8cfa8b

14 files changed

+283
-61
lines changed

GameState.gd

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -25,9 +25,10 @@ var max_burners_upgrade = 0
2525
var max_cutters_upgrade = 0
2626
var max_factories_upgrade = 0
2727
var max_assemblies_upgrade = 0
28-
var extractor_speed_upgrade = 0
29-
var burner_speed_upgrade = 0
30-
var cutter_speed_upgrade = 0
31-
var factories_speed_upgrade = 0
32-
var assemblies_speed_upgrade = 0
33-
var belt_speed_upgrade = 0
28+
29+
var extractor_power_upgrade = 0
30+
var burner_power_upgrade = 0
31+
var cutter_power_upgrade = 0
32+
var factories_power_upgrade = 0
33+
var assemblies_power_upgrade = 0
34+
var belt_power_upgrade = 0

Tiles/Extractors/ExtractorTile.gd

Lines changed: 6 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ func _process(delta):
1111
animationPlayer.play("Enabled")
1212

1313
func _on_TileTimer_timeout():
14+
tile_timer.start(speed)
1415
var target_tile = null
1516
if direction == Facing.RIGHT:
1617
target_tile = WorldTiles.get_at(global_position + Vector2(8, 0))
@@ -19,39 +20,32 @@ func _on_TileTimer_timeout():
1920
for y in range(-2, 2):
2021
spots.append(global_position + Vector2(4, y))
2122
spots.shuffle()
22-
spots = spots.slice(0, efficiency - 1)
23-
for pos in spots:
24-
attempt_send_ore(target_tile, pos)
23+
attempt_send_ore(target_tile, spots[0])
24+
2525
elif direction == Facing.LEFT:
2626
target_tile = WorldTiles.get_at(global_position + Vector2(-8, 0))
2727
if target_tile != null:
2828
var spots = []
2929
for y in range(-2, 2):
3030
spots.append(global_position + Vector2(-4, y))
3131
spots.shuffle()
32-
spots = spots.slice(0, efficiency - 1)
33-
for pos in spots:
34-
attempt_send_ore(target_tile, pos)
32+
attempt_send_ore(target_tile, spots[0])
3533
elif direction == Facing.UP:
3634
target_tile = WorldTiles.get_at(global_position + Vector2(0, -8))
3735
if target_tile != null:
3836
var spots = []
3937
for x in range(-2, 2):
4038
spots.append(global_position + Vector2(x, -5))
4139
spots.shuffle()
42-
spots = spots.slice(0, efficiency - 1)
43-
for pos in spots:
44-
attempt_send_ore(target_tile, pos)
40+
attempt_send_ore(target_tile, spots[0])
4541
elif direction == Facing.DOWN:
4642
target_tile = WorldTiles.get_at(global_position + Vector2(0, 8))
4743
if target_tile != null:
4844
var spots = []
4945
for x in range(-2, 2):
5046
spots.append(global_position + Vector2(x, 4))
5147
spots.shuffle()
52-
spots = spots.slice(0, efficiency - 1)
53-
for pos in spots:
54-
attempt_send_ore(target_tile, pos)
48+
attempt_send_ore(target_tile, spots[0])
5549

5650

5751
func attempt_send_ore(tile, pos):

Tiles/Tile.gd

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,3 +47,18 @@ func destroy():
4747
var tile = WorldTiles.get_at(global_position)
4848
WorldTiles.destroy(tile)
4949
queue_free()
50+
51+
func set_power(pwr):
52+
power = pwr
53+
match power:
54+
Constants.Power.LOWEST:
55+
speed = 1
56+
Constants.Power.LOW:
57+
speed = 0.8
58+
Constants.Power.MEDIUM:
59+
speed = 0.6
60+
Constants.Power.HIGH:
61+
speed = 0.4
62+
Constants.Power.HIGHEST:
63+
speed = 0.2
64+
print("speed set to " + str(speed))

UI.gd

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ func set_active(value):
1515
# Selector
1616
func show_selector_modal():
1717
set_active(true)
18+
tile_selector_modal.refresh_ui()
1819
selector_animator.play("SlideUp")
1920

2021
func _on_selector_slide_up_complete():
@@ -31,8 +32,9 @@ func _on_TileSelectorCloseButton_click(el):
3132
selector_animator.play("SlideDown")
3233

3334
func _on_TileSelectorAcceptButton_click(el):
34-
selector_animator.play("SlideDown")
35-
emit_signal("create_tile", tile_selector_modal.current_type)
35+
if not tile_selector_modal.is_disabled:
36+
selector_animator.play("SlideDown")
37+
emit_signal("create_tile", tile_selector_modal.current_type)
3638

3739
# View modal
3840
func show_view_modal(tile):

UI/ClickableButton.gd

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,24 @@ enum {DEFAULT, HOVER, PRESS}
44
var state = DEFAULT
55

66
export (bool) var move_on_click = true
7+
export (bool) var disabled = false
78

89
signal click(el)
910

11+
func _ready():
12+
if disabled:
13+
disable()
14+
15+
func disable():
16+
var mat = get_material()
17+
mat.set_shader_param("grayscale", true)
18+
disabled = true
19+
20+
func enable():
21+
var mat = get_material()
22+
mat.set_shader_param("grayscale", false)
23+
disabled = false
24+
1025
func _on_ClickableButton_gui_input(event):
1126
if event is InputEventMouseButton:
1227
if event.pressed and state == HOVER:
@@ -17,12 +32,13 @@ func _on_ClickableButton_gui_input(event):
1732
if move_on_click:
1833
rect_global_position.y -= 1
1934
state = HOVER
20-
emit_signal("click", self)
35+
if not disabled:
36+
emit_signal("click", self)
2137

2238
func _on_ClickableButton_mouse_entered():
2339
state = HOVER
2440

2541
func _on_ClickableButton_mouse_exited():
26-
if state == PRESS and move_on_click:
42+
if state == PRESS and move_on_click and not disabled:
2743
rect_global_position.y -= 1
2844
state = DEFAULT

UI/ClickableButton.tscn

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,14 @@
1-
[gd_scene load_steps=2 format=2]
1+
[gd_scene load_steps=4 format=2]
22

33
[ext_resource path="res://UI/ClickableButton.gd" type="Script" id=1]
4+
[ext_resource path="res://UI/Grayscale.shader" type="Shader" id=2]
5+
6+
[sub_resource type="ShaderMaterial" id=1]
7+
shader = ExtResource( 2 )
8+
shader_param/grayscale = false
49

510
[node name="ClickableButton" type="TextureRect"]
11+
material = SubResource( 1 )
612
margin_right = 40.0
713
margin_bottom = 40.0
814
script = ExtResource( 1 )

UI/Grayscale.shader

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
shader_type canvas_item;
2+
3+
uniform bool grayscale = false;
4+
5+
void fragment() {
6+
if (grayscale) {
7+
COLOR = texture(TEXTURE, UV);
8+
float lumi = (COLOR.r + COLOR.g + COLOR.b) / 3.0;
9+
COLOR.rgb = vec3(lumi);
10+
} else {
11+
COLOR = texture(TEXTURE, UV);
12+
}
13+
}

UI/TileSelectorModal.gd

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,9 @@ onready var tile_sprite = $SelectionPanel/Panel/TileSprite
88
onready var visual_queue = $SelectionPanel/Panel/VisualQueue
99
onready var quantity_label = $SelectionPanel/Panel/QuantityLabel
1010
onready var selection_panel = $SelectionPanel
11+
onready var animation_player = $AnimationPlayer
12+
13+
var is_disabled = false
1114

1215
func _ready():
1316
refresh_ui()
@@ -16,21 +19,32 @@ func refresh_ui():
1619
tile_sprite.frame = current_type
1720
visual_queue.frame = current_type
1821
quantity_label.visible = true
22+
is_disabled = false
1923
match current_type:
20-
Constants.TileType.BELT:
24+
Constants.TileType.BELT, Constants.TileType.LBELT, Constants.TileType.TBELT:
2125
quantity_label.visible = false
2226
Constants.TileType.ASSEMBLY:
2327
quantity_label.text = "%d/%d" % [GameState.nb_assemblies, GameState.max_assemblies]
28+
is_disabled = GameState.nb_assemblies == GameState.max_assemblies
2429
Constants.TileType.CUTTER:
2530
quantity_label.text = "%d/%d" % [GameState.nb_cutters, GameState.max_cutters]
31+
is_disabled = GameState.nb_cutters == GameState.max_cutters
2632
Constants.TileType.FACTORY:
2733
quantity_label.text = "%d/%d" % [GameState.nb_factories, GameState.max_factories]
34+
is_disabled = GameState.nb_factories == GameState.max_factories
2835
Constants.TileType.FURNACE:
2936
quantity_label.text = "%d/%d" % [GameState.nb_burners, GameState.max_burners]
30-
Constants.TileType.GOLD, Constants.TileType.IRON, Constants.TileType.SILICON, Constants.TileType.GOLD:
37+
is_disabled = GameState.nb_burners == GameState.max_burners
38+
Constants.TileType.GOLD, Constants.TileType.IRON, Constants.TileType.SILICON, Constants.TileType.SILVER:
3139
quantity_label.text = "%d/%d" % [GameState.nb_extractors, GameState.max_extractors]
40+
is_disabled = GameState.nb_extractors == GameState.max_extractors
3241
Constants.TileType.RESELLER:
3342
quantity_label.text = "%d/%d" % [GameState.nb_sellers, GameState.max_sellers]
43+
is_disabled = GameState.nb_sellers == GameState.max_sellers
44+
if is_disabled:
45+
animation_player.play("Disabled")
46+
else:
47+
animation_player.play("Enabled")
3448

3549
func _on_LeftButton_click(el):
3650
current_type -= 1

UI/TileSelectorModal.tscn

Lines changed: 92 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
[gd_scene load_steps=13 format=2]
1+
[gd_scene load_steps=16 format=2]
22

33
[ext_resource path="res://UI/right-button.png" type="Texture" id=1]
44
[ext_resource path="res://UI/TileSelectorModal.gd" type="Script" id=2]
@@ -7,14 +7,98 @@
77
[ext_resource path="res://UI/left-button.png" type="Texture" id=5]
88
[ext_resource path="res://UI/close-button.png" type="Texture" id=6]
99
[ext_resource path="res://UI/buy-button.png" type="Texture" id=7]
10+
[ext_resource path="res://UI/Grayscale.shader" type="Shader" id=8]
1011
[ext_resource path="res://UI/ClickableButton.tscn" type="PackedScene" id=9]
1112
[ext_resource path="res://UI/equipment.png" type="Texture" id=10]
1213
[ext_resource path="res://UI/visual-queue.png" type="Texture" id=11]
1314

1415
[sub_resource type="Theme" id=1]
1516

16-
[sub_resource type="StreamTexture" id=2]
17-
load_path = "res://.import/disabled-button.png-c0385e3c98043f2caa4e495b905f703a.stex"
17+
[sub_resource type="ShaderMaterial" id=3]
18+
shader = ExtResource( 8 )
19+
shader_param/grayscale = false
20+
21+
[sub_resource type="Animation" id=5]
22+
resource_name = "Disabled"
23+
length = 0.1
24+
loop = true
25+
tracks/0/type = "value"
26+
tracks/0/path = NodePath("SelectionPanel/Panel/AcceptButton:move_on_click")
27+
tracks/0/interp = 1
28+
tracks/0/loop_wrap = true
29+
tracks/0/imported = false
30+
tracks/0/enabled = true
31+
tracks/0/keys = {
32+
"times": PoolRealArray( 0 ),
33+
"transitions": PoolRealArray( 1 ),
34+
"update": 1,
35+
"values": [ false ]
36+
}
37+
tracks/1/type = "value"
38+
tracks/1/path = NodePath("SelectionPanel/Panel/AcceptButton:material:shader_param/grayscale")
39+
tracks/1/interp = 1
40+
tracks/1/loop_wrap = true
41+
tracks/1/imported = false
42+
tracks/1/enabled = true
43+
tracks/1/keys = {
44+
"times": PoolRealArray( 0 ),
45+
"transitions": PoolRealArray( 1 ),
46+
"update": 1,
47+
"values": [ true ]
48+
}
49+
tracks/2/type = "value"
50+
tracks/2/path = NodePath("SelectionPanel/Panel/AcceptButton/ItemPrice:modulate")
51+
tracks/2/interp = 1
52+
tracks/2/loop_wrap = true
53+
tracks/2/imported = false
54+
tracks/2/enabled = true
55+
tracks/2/keys = {
56+
"times": PoolRealArray( 0 ),
57+
"transitions": PoolRealArray( 1 ),
58+
"update": 0,
59+
"values": [ Color( 0.662745, 0.662745, 0.662745, 1 ) ]
60+
}
61+
62+
[sub_resource type="Animation" id=4]
63+
resource_name = "Enabled"
64+
length = 0.1
65+
loop = true
66+
tracks/0/type = "value"
67+
tracks/0/path = NodePath("SelectionPanel/Panel/AcceptButton:material:shader_param/grayscale")
68+
tracks/0/interp = 1
69+
tracks/0/loop_wrap = true
70+
tracks/0/imported = false
71+
tracks/0/enabled = true
72+
tracks/0/keys = {
73+
"times": PoolRealArray( 0 ),
74+
"transitions": PoolRealArray( 1 ),
75+
"update": 1,
76+
"values": [ false ]
77+
}
78+
tracks/1/type = "value"
79+
tracks/1/path = NodePath("SelectionPanel/Panel/AcceptButton/ItemPrice:modulate")
80+
tracks/1/interp = 1
81+
tracks/1/loop_wrap = true
82+
tracks/1/imported = false
83+
tracks/1/enabled = true
84+
tracks/1/keys = {
85+
"times": PoolRealArray( 0 ),
86+
"transitions": PoolRealArray( 1 ),
87+
"update": 0,
88+
"values": [ Color( 1, 1, 1, 1 ) ]
89+
}
90+
tracks/2/type = "value"
91+
tracks/2/path = NodePath("SelectionPanel/Panel/AcceptButton:move_on_click")
92+
tracks/2/interp = 1
93+
tracks/2/loop_wrap = true
94+
tracks/2/imported = false
95+
tracks/2/enabled = true
96+
tracks/2/keys = {
97+
"times": PoolRealArray( 0 ),
98+
"transitions": PoolRealArray( 1 ),
99+
"update": 1,
100+
"values": [ true ]
101+
}
18102

19103
[node name="TileSelectorModal" type="Control"]
20104
anchor_right = 1.0
@@ -89,6 +173,7 @@ margin_bottom = 14.0
89173
texture = ExtResource( 1 )
90174

91175
[node name="AcceptButton" parent="SelectionPanel/Panel" instance=ExtResource( 9 )]
176+
material = SubResource( 3 )
92177
margin_left = 37.0
93178
margin_top = 16.0
94179
margin_right = 61.0
@@ -109,30 +194,6 @@ __meta__ = {
109194
"_edit_use_anchors_": false
110195
}
111196

112-
[node name="DisabledButton" type="TextureRect" parent="SelectionPanel/Panel"]
113-
visible = false
114-
margin_left = 34.0
115-
margin_top = 37.0
116-
margin_right = 58.0
117-
margin_bottom = 50.0
118-
texture = SubResource( 2 )
119-
__meta__ = {
120-
"_edit_use_anchors_": false
121-
}
122-
123-
[node name="ItemPrice" type="Label" parent="SelectionPanel/Panel/DisabledButton"]
124-
margin_left = -1.0
125-
margin_top = -2.0
126-
margin_right = 25.0
127-
margin_bottom = 15.0
128-
custom_colors/font_color = Color( 0.882353, 0.882353, 0.882353, 1 )
129-
text = "$200"
130-
align = 1
131-
uppercase = true
132-
__meta__ = {
133-
"_edit_use_anchors_": false
134-
}
135-
136197
[node name="QuantityLabel" type="Label" parent="SelectionPanel/Panel"]
137198
margin_left = 38.0
138199
margin_right = 60.0
@@ -142,5 +203,9 @@ align = 1
142203
__meta__ = {
143204
"_edit_use_anchors_": false
144205
}
206+
207+
[node name="AnimationPlayer" type="AnimationPlayer" parent="."]
208+
anims/Disabled = SubResource( 5 )
209+
anims/Enabled = SubResource( 4 )
145210
[connection signal="click" from="SelectionPanel/Panel/LeftButton" to="." method="_on_LeftButton_click"]
146211
[connection signal="click" from="SelectionPanel/Panel/RightButton" to="." method="_on_RightButton_click"]

0 commit comments

Comments
 (0)