Rewrote CommandQueue
This commit is contained in:
parent
91f939d9fc
commit
ef17945a59
4 changed files with 53 additions and 32 deletions
52
base/scripts/player/command_queue.gd
Normal file
52
base/scripts/player/command_queue.gd
Normal file
|
@ -0,0 +1,52 @@
|
|||
extends RefCounted
|
||||
|
||||
## Queue that represents player's hand interactions with game mechanics
|
||||
class_name CommandQueue
|
||||
|
||||
## Commands that can be pushed to queue
|
||||
enum Command {
|
||||
NONE,
|
||||
TAKE_WEAPON,
|
||||
SHOOT,
|
||||
RELOAD,
|
||||
HOLSTER_WEAPON,
|
||||
TAKE_ZAZA,
|
||||
LIGHT_ZAZA,
|
||||
SMOKE
|
||||
}
|
||||
|
||||
signal command_pushed(Side, Command)
|
||||
signal command_popped(Side, Command)
|
||||
|
||||
## Human-readable hand numbers. You could even make extra hands with it, if you wish
|
||||
enum Side { LEFT, RIGHT }
|
||||
|
||||
## Used anywhere you could get null
|
||||
const DEFAULT_COMMAND = Command.NONE
|
||||
|
||||
## Dictionary filled with queues for each side
|
||||
var command_queue: Dictionary = {}
|
||||
|
||||
func _init() -> void:
|
||||
for side in Side.values():
|
||||
var arr: Array[Command] = []
|
||||
command_queue[side] = arr
|
||||
|
||||
func push(commands: Array[Command], sides: Array[Side]):
|
||||
for i in range(len(commands)):
|
||||
command_queue[sides[i]].push_back(commands[i])
|
||||
command_pushed.emit(sides[i], commands[i])
|
||||
|
||||
func pop():
|
||||
# Checking if stack is actually empty (arrays must have same size)
|
||||
if command_queue[Side.LEFT].size() == 0:
|
||||
return
|
||||
for side in Side.values():
|
||||
var command = command_queue[side].pop_front()
|
||||
command_popped.emit(side, command)
|
||||
|
||||
func current_command(side: Side):
|
||||
var command = command_queue[side].front()
|
||||
if command == null:
|
||||
return DEFAULT_COMMAND
|
||||
return command
|
Loading…
Add table
Add a link
Reference in a new issue