summaryrefslogtreecommitdiff
path: root/scenes/microgames/fishin/fishin.gd
blob: c3d6c783574e4e8478e48fb2516f28d4c0e06b5f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
extends Node2D
class_name Fishin

enum FishType {
	GAR,
	SALMON,
	BASS,
	HUMUHUMUNUKUNUKUAPUA_A,
	CATFSIH,
	DOGFISH,
	ANGLERFISH,
	MOBY_DICK,
	LEAPING_SMACKEREL,
}

signal win(fish_type: FishType)
signal fish_chosen(fish_sprite: Sprite2D, fish_name: String)

const IN_GAME_WAIT_TIME = 10

var pulling: Sprite2D
var mash: Label
var you: Sprite2D
var sad: Sprite2D
var happy: Sprite2D
var mouse: Sprite2D
var shake: ShakePivot
var shake2: ShakePivot
var shake3: ShakePivot
var start_game_timer: Timer
var in_game_timer: Timer
# This used to mean "success/failure" but now means "you succ, failure"
var succfail_timer: Timer 
var success_timer: Timer

var fish_choice
var gar 
var salmon 
var bass
var humuhumunukunukuapua_a
var catfsih
var dogfish
var pupperfish
var anglerfish
var moby_dick
var leaping_smackerel

var in_minigame = false
var num_clicks = 0

var fishes = [FishType.GAR, FishType.SALMON, FishType.BASS, FishType.HUMUHUMUNUKUNUKUAPUA_A, FishType.CATFSIH, FishType.DOGFISH, FishType.ANGLERFISH, FishType.MOBY_DICK, FishType.LEAPING_SMACKEREL]

# Called when the node enters the scene tree for the first time.
func _ready() -> void:
	pulling = $ShakePivot/pulling
	you = $"you!"
	mash = $ShakePivot2/MASH
	mouse = $ShakePivot3/Mouse
	shake = $ShakePivot
	shake2 = $ShakePivot2
	shake3 = $ShakePivot3
	sad = $SAD
	happy = $Happy
	start_game_timer = $StartGame
	in_game_timer = $InGame
	succfail_timer = $SuccessFail
	success_timer = $Success
	
	get_window().title = "Relaxing Fishing Game 🙂"

	gar = $Happy/Gar
	salmon = $Happy/SockeyeSalmon
	bass = $Happy/LargemouthBass
	humuhumunukunukuapua_a = $"Happy/Humuhumunukunukuapua'a"
	catfsih = $Happy/Catfsih
	dogfish = $Happy/Dogfish
	pupperfish = $Happy/Pupperfish
	anglerfish  = $Happy/Anglerfish
	moby_dick = $"Happy/Moby-Dick"
	leaping_smackerel = $Happy/LeapingSmackerel
	

# Called every frame. 'delta' is the elapsed time since the previous frame.
func _process(delta: float) -> void:
	pass


func _on_texture_button_button_up() -> void:
	shake.shake()
	shake2.shake()
	shake3.shake()
	
	if in_minigame:
		num_clicks -= 1
		
		# YOU WIN
		if num_clicks == 0:
			in_minigame = false
			
			# hide non-happy cats
			pulling.visible = false
			mash.visible = false
			mouse.visible = false
			sad.visible = false
			you.visible = false
			
			# show happy cat
			happy.visible = true
			
			# show fish
			fish_choice = randi_range(0,len(fishes))
			
			match fish_choice:
				FishType.GAR: 
					gar.visible = true
					fish_chosen.emit(gar.get_node("GarSprite"), "Gar :)")
					$"Yippee!".play()
				FishType.SALMON: 
					salmon.visible = true
					fish_chosen.emit(salmon.get_node("SalmonSprite"), "Sockeye Salmon")
					$"Yippee!".play()
				FishType.BASS: 
					bass.visible = true
					fish_chosen.emit(bass.get_node("LargemouthBassSprite"), "Largemouth Bass")
					$"Yippee!".play()
				FishType.HUMUHUMUNUKUNUKUAPUA_A: 
					humuhumunukunukuapua_a.visible = true
					fish_chosen.emit(humuhumunukunukuapua_a.get_node("Sprite2D"), "Humuhumunukunukuapua'a")
					$"Yippee!".play()
				FishType.CATFSIH: 
					catfsih.visible = true
					fish_chosen.emit(catfsih.get_node("CatfishSprite"), "Catfish :3")
					$Meow.play()
				FishType.DOGFISH: 
					dogfish.visible = true
					fish_chosen.emit(dogfish.get_node("DogfishSprite"), "Dogfish 🐶")
					$Bark.play()
				FishType.ANGLERFISH: 
					anglerfish.visible = true
					fish_chosen.emit(anglerfish.get_node("AnglerfishSprirtre"), "Anglerfish")
					$"Yippee!".play()
				FishType.MOBY_DICK: 
					moby_dick.visible = true
					fish_chosen.emit(moby_dick.get_node("Moby-DickSprite"), "Moby Dick")
					$"Moby Dick".play()
					success_timer.wait_time *= 2
				FishType.LEAPING_SMACKEREL: 
					leaping_smackerel.visible = true
					fish_chosen.emit(leaping_smackerel.get_node("LeapingSmackerelSprite"), "LEAPING SMACKEREL! WAHOO!")
					$"THE LEAPING SMACKEREL!".play()
					success_timer.wait_time *= 2
			
			in_game_timer.stop()
			in_game_timer.wait_time = IN_GAME_WAIT_TIME
			success_timer.start()
			
			get_window().title = "Yippee!"
			


func _on_start_game_timeout() -> void:
	if randf() < 0.2:
		start_game_timer.stop()
		in_game_timer.start()
		
		in_minigame = true
		
		# hide passive cats
		you.visible = false
		sad.visible = false
		happy.visible = false
		
		# show active cat
		pulling.visible = true
		mash.visible = true
		mouse.visible = true
		
		num_clicks = randi_range(5,10)
		#num_clicks = 21
		
		get_window().title = "MASH MASH MASH MASH MASH"


# YOU LOSE
func _on_in_game_timeout() -> void:
	in_minigame = false
	
	# hide non-sad cats
	you.visible = false
	happy.visible = false
	pulling.visible = false
	mash.visible = false
	mouse.visible = false
	
	# show sad cat
	sad.visible = true
	
	in_game_timer.stop()
	succfail_timer.start()
	$"Fart".play()
	
	get_window().title = "🙂👎"


func _on_success_fail_timeout() -> void:
	gar.visible = false
	salmon.visible = false
	bass.visible = false
	humuhumunukunukuapua_a.visible = false
	catfsih.visible = false
	dogfish.visible = false
	pupperfish.visible = false
	anglerfish.visible = false
	moby_dick.visible = false
	leaping_smackerel.visible = false
	sad.visible = false
	happy.visible = false
	you.visible = true
	succfail_timer.stop()
	start_game_timer.start()
	
	get_window().title = "Relaxing Fishing Game 🙂"


func _on_success_timeout() -> void:
	win.emit(fish_choice)