Move all C# scripts from flat structure to organized folders: - Core/ for game logic (Game, GameState, GameSettings) - UI/Menus/ and UI/Dialogs/ for user interface - Systems/ for reusable systems (Save, Localization) - Data/ for data models and configuration - Added framework for future: Gameplay/, Story/, Modding/ Update all .tscn scene files to reference new script paths. Fix timing issue in AdvancedSaveDialog focus handling.
55 lines
1.6 KiB
C#
55 lines
1.6 KiB
C#
using System;
|
|
|
|
namespace TheGame
|
|
{
|
|
public class GameSeed
|
|
{
|
|
public string SeedValue { get; set; }
|
|
public DateTime CreatedDate { get; set; }
|
|
public string DisplayName { get; set; }
|
|
|
|
public GameSeed()
|
|
{
|
|
SeedValue = GenerateNewSeed();
|
|
CreatedDate = DateTime.Now;
|
|
DisplayName = $"Game {CreatedDate:yyyy-MM-dd HH:mm}";
|
|
}
|
|
|
|
public GameSeed(string customSeed, string displayName = "")
|
|
{
|
|
SeedValue = customSeed;
|
|
CreatedDate = DateTime.Now;
|
|
DisplayName = string.IsNullOrEmpty(displayName) ? $"Game {CreatedDate:yyyy-MM-dd HH:mm}" : displayName;
|
|
}
|
|
|
|
private static string GenerateNewSeed()
|
|
{
|
|
// Generera en 8-tecken seed baserad på timestamp och random
|
|
var random = new Random();
|
|
var timestamp = DateTime.Now.Ticks;
|
|
var combined = timestamp + random.Next(1000, 9999);
|
|
|
|
// Konvertera till hexadecimal och ta första 8 tecknen
|
|
return Math.Abs(combined).ToString("X")[..8];
|
|
}
|
|
|
|
public override string ToString()
|
|
{
|
|
return $"{DisplayName} (Seed: {SeedValue})";
|
|
}
|
|
|
|
public override bool Equals(object obj)
|
|
{
|
|
if (obj is GameSeed other)
|
|
{
|
|
return SeedValue.Equals(other.SeedValue);
|
|
}
|
|
return false;
|
|
}
|
|
|
|
public override int GetHashCode()
|
|
{
|
|
return SeedValue.GetHashCode();
|
|
}
|
|
}
|
|
} |