MouseControl.cs
using Sandbox;
using System.Windows;
using System.Drawing;
using System.Linq;
using System.Net.NetworkInformation;
using System;
using System.Globalization;
public sealed class MouseControl : Component
{
[Property] bool lockXAxis;
[Property] bool lockYAxis;
[Property] float border = 130;
[Property] bool isBot = false;
GameObject ball;
GameManager gameManager;
protected override void OnEnabled()
{
base.OnEnabled();
ball = Scene.FindAllWithTag( "ball" ).FirstOrDefault();
gameManager = Scene.Get<GameManager>();
SetColor();
}
protected override void OnStart()
{
base.OnStart();
if ( gameManager.sceneName == "game" )
{
lockXAxis = true;
lockYAxis = false;
if (Networking.IsHost)
{
var spawnPoint = Scene.FindAllWithTags( ["spawnpoint", "right"] ).FirstOrDefault();
WorldPosition = spawnPoint.WorldPosition;
WorldRotation = spawnPoint.WorldRotation;
}
else if (!Networking.IsHost)
{
var spawnPoint = Scene.FindAllWithTags( ["spawnpoint", "left"] ).FirstOrDefault();
WorldPosition = spawnPoint.WorldPosition;
WorldRotation = spawnPoint.WorldRotation;
}
}
else if ( Scene.Name == "game4" )
{
if ( Networking.IsHost )
{
lockXAxis = false;
lockYAxis = true;
var spawnPoint = Scene.FindAllWithTags( ["spawnpoint", "bottom"] ).FirstOrDefault();
WorldPosition = spawnPoint.WorldPosition;
}
}
}
protected override void OnUpdate()
{
if ( IsProxy ) return;
if (!isBot)
{
WorldPosition += new Vector3(
lockXAxis ? 0 : Input.MouseDelta.x * GameSettings.Sensitivity,
lockYAxis ? 0 : -Input.MouseDelta.y * GameSettings.Sensitivity,
0 );
}
else
{
WorldPosition = new Vector3( -275, ball.WorldPosition.y, WorldPosition.z );
}
if ( lockXAxis && WorldPosition.y >= border )
{
WorldPosition = new Vector3( WorldPosition.x, border, WorldPosition.z );
}
if ( lockXAxis && WorldPosition.y <= -border )
{
WorldPosition = new Vector3( WorldPosition.x, -border, WorldPosition.z );
}
if ( lockYAxis && WorldPosition.x >= border )
{
WorldPosition = new Vector3( border, WorldPosition.y, WorldPosition.z );
}
if ( lockYAxis && WorldPosition.x <= -border )
{
WorldPosition = new Vector3( -border, WorldPosition.y, WorldPosition.z );
}
}
void SetColor()
{
if ( IsProxy ) return;
if ( isBot )
{
GetComponent<ModelRenderer>().Tint = Color.White;
return;
}
GetComponent<ModelRenderer>().Tint = GameSettings.Color switch
{
"blue" => new Color( 0, 0, 170 ),
"green" => new Color( 0, 170, 0 ),
"darkcyan" => new Color( 0, 170, 170 ),
"red" => new Color( 20, 0, 0 ),
"purple" => new Color( 8388736 ).WithAlpha(1),
"saddlebrown" => new Color( 3607296 ).WithAlpha(1).AdjustHue(-220),
"gray" => Color.Gray,
"lightblue" => Color.FromRgba( UInt32.Parse( "F47EFff", NumberStyles.HexNumber ) ),
"lightgreen" => Color.FromRgba(UInt32.Parse( "4bd14eff", NumberStyles.HexNumber ) ),
"cyan" => Color.FromRgba(UInt32.Parse( "00FFFFff", NumberStyles.HexNumber ) ),
"lightcoral" => Color.FromRgba( UInt32.Parse( "EA3434ff", NumberStyles.HexNumber ) ),
"violet" => Color.FromRgba( UInt32.Parse( "EB3DEBff", NumberStyles.HexNumber ) ),
"yellow" => Color.FromRgba( UInt32.Parse( "FFFF00ff", NumberStyles.HexNumber ) ),
"white" => Color.White,
_ => new Color( 255, 255, 255 )
};
Network.Refresh();
}
}