87 lines
2.1 KiB
C#
87 lines
2.1 KiB
C#
using System;
|
|
using GamecraftModdingAPI.Utility;
|
|
|
|
namespace Leadercraft.Scoring
|
|
{
|
|
internal static class State
|
|
{
|
|
public static bool IsInGame { get; private set; }= false;
|
|
|
|
public static bool IsPlayingGame { get; private set; } = false;
|
|
|
|
public static DateTime GameEnterTime { get; private set; }
|
|
|
|
public static DateTime GameStartTime { get; private set; }
|
|
|
|
public static TimeSpan GamePlayTime { get; private set; }
|
|
|
|
public static float[] PlayerLocation { get; private set; }
|
|
|
|
public static ulong GameId { get; private set; }
|
|
|
|
public static int Score { get; private set; }
|
|
|
|
public static bool IsGameComplete { get; private set; }
|
|
|
|
public static bool IsGameSynced { get; private set; }
|
|
|
|
public static void EnterGame()
|
|
{
|
|
if (IsInGame) return;
|
|
Logging.MetaDebugLog("Entering game");
|
|
IsInGame = true;
|
|
IsGameSynced = false;
|
|
IsGameComplete = false;
|
|
GameId = Server.Tools.GameId;
|
|
GameEnterTime = DateTime.UtcNow;
|
|
}
|
|
|
|
public static void ExitGame()
|
|
{
|
|
if (!IsInGame) return;
|
|
Logging.MetaDebugLog("Exiting game");
|
|
IsInGame = false;
|
|
}
|
|
|
|
public static void StartPlayingGame()
|
|
{
|
|
if (IsPlayingGame) return;
|
|
Logging.MetaDebugLog("Starting to play game");
|
|
Score = 0;
|
|
IsPlayingGame = true;
|
|
GameStartTime = DateTime.UtcNow;
|
|
}
|
|
|
|
public static void StopPlayingGame()
|
|
{
|
|
if (!IsPlayingGame) return;
|
|
GamePlayTime = DateTime.UtcNow - GameStartTime;
|
|
Logging.MetaDebugLog("Stopping game");
|
|
IsPlayingGame = false;
|
|
}
|
|
|
|
public static void SetLocation(float x, float y, float z)
|
|
{
|
|
PlayerLocation = new float[] { x, y, z };
|
|
}
|
|
|
|
public static void AddScore(int points)
|
|
{
|
|
Score += points;
|
|
}
|
|
|
|
public static Server.CriteriaStruct Criteria()
|
|
{
|
|
IsGameSynced = true;
|
|
return new Server.CriteriaStruct
|
|
{
|
|
Location = new float[][] { PlayerLocation, PlayerLocation },
|
|
Time = Convert.ToInt32(Math.Round(GamePlayTime.TotalSeconds, MidpointRounding.AwayFromZero)),
|
|
GameID = GameId,
|
|
PlayerID = 0,
|
|
Complete = IsGameComplete,
|
|
Points = Score,
|
|
};
|
|
}
|
|
}
|
|
}
|