65 lines
1.1 KiB
C#
65 lines
1.1 KiB
C#
using LuckerGame.Entities;
|
|
using LuckerGame.UI;
|
|
using Sandbox;
|
|
using System;
|
|
using System.IO;
|
|
using System.Linq;
|
|
using System.Numerics;
|
|
using System.Reflection.Metadata.Ecma335;
|
|
|
|
public class Racer : Pawn
|
|
{
|
|
public float Speed;
|
|
private float SpeedModifier = 1f;
|
|
private Random Random { get; set; }
|
|
private HoveringText NameTag { get; set; }
|
|
|
|
public Racer()
|
|
{
|
|
|
|
}
|
|
|
|
public Racer( Random random )
|
|
{
|
|
Random = random;
|
|
}
|
|
|
|
public override void ClientSpawn()
|
|
{
|
|
base.ClientSpawn();
|
|
NameTag = new( Name, this );
|
|
}
|
|
|
|
public void ContinueRacing()
|
|
{
|
|
SetAnimParameter( "move_x", Speed * 500f * SpeedModifier );
|
|
ModifySpeed();
|
|
Position = Position.WithY( Position.y - (Speed * SpeedModifier) );
|
|
|
|
}
|
|
|
|
private void ModifySpeed()
|
|
{
|
|
var roll = Random.NextDouble();
|
|
switch ( roll )
|
|
{
|
|
case >= .90 and < .95:
|
|
SpeedModifier = 2f;
|
|
break;
|
|
case >= .95:
|
|
SpeedModifier = 0.5f;
|
|
break;
|
|
}
|
|
}
|
|
|
|
public void StopRacing()
|
|
{
|
|
SetAnimParameter( "move_x", 0 );
|
|
}
|
|
|
|
public void GenerateSpeed( double minSpeed, double maxSpeed )
|
|
{
|
|
Speed = (float)(RandomExtensions.NextDouble( Random, minSpeed, maxSpeed ));
|
|
}
|
|
}
|