Initial commit (1/2)

This commit is contained in:
Алкесей Мирнеков 2023-11-05 16:23:18 +03:00 committed by GitHub
commit 3411c5796d
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
66 changed files with 2261 additions and 0 deletions

60
scripts/MSEngine.gd Normal file
View file

@ -0,0 +1,60 @@
extends Node2D
class_name ShipEngine
@export var MaxSpeed : float = 200 #максимальная скорость без турбо режима
@export var MaxTurboSpeed : float = 300 #максимальная скорость в турбо режиме
@export var SpeedAcceleration : float = 50 #ускорение
@export var TurboFuelConsumption : float = 100 #потребление топлива в турбо режиме за секунду
@export var RotationSpeed : int = 90 #максимальная скорость поворота
@onready var Ship = get_parent()
var Speed = 0 #текущая скорость
var MinSpeed = MaxSpeed / -4 #минимальная скорость
var TurboEnabled = false
var AlternativeMovement = false
var DestinationAngle : float
var DestinationDifference : float
@onready var Hull = $"../Hull"
func _physics_process(delta):
if DestinationAngle - Ship.rotation_degrees == clamp(DestinationAngle - Ship.rotation_degrees, -180, 180):
DestinationDifference = DestinationAngle - Ship.rotation_degrees
else:
DestinationDifference = Ship.rotation_degrees - DestinationAngle
if DestinationDifference != clamp(DestinationDifference, -1, 1):
Ship.rotation_degrees += sign(DestinationDifference) * RotationSpeed * delta
else:
Ship.rotation_degrees = DestinationAngle
if !AlternativeMovement:
if Ship is MainShip: DestinationAngle = rad_to_deg(Ship.global_position.angle_to_point(get_global_mouse_position()))
else:
var RotationInput = Input.get_axis("rotateleft","rotateright")
DestinationAngle += RotationInput * RotationSpeed * delta
if DestinationAngle > 180: DestinationAngle = -180
if DestinationAngle < -180: DestinationAngle = 180
if Vector2.ZERO.distance_to(global_position) >= 5800: DestinationAngle = rad_to_deg(global_position.angle_to_point(Vector2.ZERO))
TurboEnabled = clamp(Input.get_action_raw_strength("turbo") * Hull.Fuel, 0, 1) if Ship is MainShip else (Ship.State == "runaway" and Hull.Fuel > 0)
var AccelerationInput = Input.get_axis("deccelerate", "accelerate") if Ship is MainShip else 1.0
if !TurboEnabled:
Speed = clamp(Speed + AccelerationInput * SpeedAcceleration * delta, MinSpeed, max(MaxSpeed, Speed))
if Speed > MaxSpeed:
Speed -= SpeedAcceleration * delta if AccelerationInput != -1 else 0
else:
if Hull.Fuel > 0:
Speed = clamp(Speed + SpeedAcceleration * delta, MinSpeed, MaxTurboSpeed)
if Speed > MaxSpeed:
Hull.Fuel -= TurboFuelConsumption * delta
if Hull.Fuel < 0:
Hull.Fuel = 0
Ship.velocity = Vector2.from_angle(Ship.rotation) * Speed
Ship.move_and_slide()
if Input.is_action_just_released("alternatemovement") and Ship is MainShip:
AlternativeMovement = !AlternativeMovement