Initial Commit
This commit is contained in:
80
scripts/game_engine.gd
Normal file
80
scripts/game_engine.gd
Normal file
@ -0,0 +1,80 @@
|
||||
extends Node
|
||||
class_name GameEngine
|
||||
|
||||
enum OPS {ADD,SUB,MUL,DIV}
|
||||
|
||||
static var gameEngineInstance: GameEngine = null
|
||||
static var idaArray: Array
|
||||
var idaCount: int
|
||||
var gameSpeed: float = 3.0
|
||||
var mainCamera: Camera3D = null
|
||||
static var idaPack: Node3D = null
|
||||
var idaBase: PackedScene = (load("res://Objects/playerClone.tscn") as PackedScene)
|
||||
static var idaPrime: Node3D = null
|
||||
var controlBox: Node3D = null
|
||||
var gateSpawner: Node3D = null
|
||||
var gateMovementSpeed: float = 10.0
|
||||
var gateSpawnTime: float = 2.0
|
||||
var gateSpawnChance: int = 3
|
||||
|
||||
func setupEngine() -> void:
|
||||
idaArray.clear()
|
||||
idaCount = 0
|
||||
|
||||
static func getGE() -> GameEngine:
|
||||
if gameEngineInstance == null:
|
||||
gameEngineInstance = GameEngine.new()
|
||||
gameEngineInstance.setupEngine()
|
||||
return gameEngineInstance
|
||||
|
||||
func moveIda(ida: Node3D, delta: float, prime: bool) -> void:
|
||||
if prime:
|
||||
idaPack.position.x = idaPack.position.move_toward(getGE().controlBox.getMoveToLocation(), getGE().getGameSpeed(delta)).x
|
||||
|
||||
ida.look_at(getGE().controlBox.getMoveToLocation(), Vector3(0,1,0), true)
|
||||
|
||||
func _process(delta: float) -> void:
|
||||
moveIda(idaPrime, delta, true)
|
||||
for ida in idaArray:
|
||||
moveIda(ida, delta, false)
|
||||
|
||||
func getGameSpeed(delta: float) -> float:
|
||||
return gameSpeed * delta
|
||||
|
||||
func calculateIdas(value: int) -> void:
|
||||
var newValue: int = idaCount + value
|
||||
if newValue < 0:
|
||||
newValue = 0
|
||||
|
||||
idaCount = clampi(idaCount + value, 0, 2000)
|
||||
var idaOffset: int = idaArray.size() - idaCount
|
||||
print(str(idaCount) + " - " + str(idaOffset))
|
||||
|
||||
for i in range(abs(idaOffset)):
|
||||
if idaOffset < 0:
|
||||
var newIda = idaBase.instantiate()
|
||||
newIda.position = (idaPrime.position + (Vector3(-1.5 + randf() * 3, 0, -1.5 + randf() * 1.5)))
|
||||
idaPack.add_child(newIda)
|
||||
idaArray.push_back(newIda)
|
||||
elif idaOffset > 0:
|
||||
var currentIda = idaArray.pop_at(randi() % idaArray.size())
|
||||
currentIda.queue_free()
|
||||
|
||||
func modifyIdas(value: int, operation: OPS) -> void:
|
||||
var baseVal: int = 0
|
||||
match operation:
|
||||
OPS.ADD:
|
||||
baseVal += value
|
||||
OPS.SUB:
|
||||
baseVal -= value
|
||||
OPS.MUL:
|
||||
var newVal = ceil((1 + idaCount) * value) - idaCount
|
||||
baseVal += newVal - 1
|
||||
OPS.DIV:
|
||||
if idaCount != 0:
|
||||
var newVal = floor(float(1 + idaCount) / value)
|
||||
baseVal -= idaCount - (newVal - 1)
|
||||
else:
|
||||
baseVal = 0
|
||||
|
||||
calculateIdas(baseVal)
|
Reference in New Issue
Block a user