Save/Load and Main Menu Submenus
Redid all of the property panel UI prefabs (oof) Implemented saving and loading of the game state Moved sector generation to sector constructor (along with loading from save file) Entity settings now separate from player settings Player settings (incl. saved run) now statically accessible from game manager Added animations and submenus to the main menu Unified main menu settings and properties panel styles for prefab reusability
This commit is contained in:
parent
549811f403
commit
b6828a975a
63 changed files with 2007 additions and 1158 deletions
83
Assets/Scripts/ServerShared/SavedGame.cs
Normal file
83
Assets/Scripts/ServerShared/SavedGame.cs
Normal file
|
|
@ -0,0 +1,83 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using MessagePack;
|
||||
using Unity.Mathematics;
|
||||
using static Unity.Mathematics.math;
|
||||
|
||||
[MessagePackObject]
|
||||
public class SavedGame
|
||||
{
|
||||
[Key(0)]
|
||||
public SavedZone[] Zones;
|
||||
|
||||
[Key(1)]
|
||||
public Guid[] Factions;
|
||||
|
||||
[Key(2)]
|
||||
public Dictionary<int, int> HomeZones;
|
||||
|
||||
[Key(3)]
|
||||
public Dictionary<int, int> BossZones;
|
||||
|
||||
[Key(4)]
|
||||
public int Entrance;
|
||||
|
||||
[Key(5)]
|
||||
public int Exit;
|
||||
|
||||
[Key(6)]
|
||||
public int CurrentZone;
|
||||
|
||||
[Key(7)]
|
||||
public int CurrentZoneEntity;
|
||||
|
||||
public SavedGame() { }
|
||||
|
||||
public SavedGame(Sector sector)
|
||||
{
|
||||
Factions = sector.HomeZones.Keys.Select(f => f.ID).ToArray();
|
||||
|
||||
HomeZones = sector.HomeZones.ToDictionary(
|
||||
x => Array.IndexOf(Factions, x.Key.ID),
|
||||
x => Array.IndexOf(sector.Zones, x.Value));
|
||||
BossZones = sector.BossZones.ToDictionary(
|
||||
x => Array.IndexOf(Factions, x.Key.ID),
|
||||
x => Array.IndexOf(sector.Zones, x.Value));
|
||||
|
||||
Zones = sector.Zones.Select(zone=> new SavedZone
|
||||
{
|
||||
Name = zone.Name,
|
||||
Position = zone.Position,
|
||||
AdjacentZones = zone.AdjacentZones.Select(az=> Array.IndexOf(sector.Zones, az)).ToArray(),
|
||||
Factions = zone.Factions.Select(f=> Array.IndexOf(Factions, f.ID)).ToArray(),
|
||||
Contents = zone.Contents.Pack(),
|
||||
Owner = Array.IndexOf(Factions, zone.Owner.ID)
|
||||
}).ToArray();
|
||||
|
||||
Entrance = Array.IndexOf(sector.Zones, sector.Entrance);
|
||||
Exit = Array.IndexOf(sector.Zones, sector.Exit);
|
||||
}
|
||||
}
|
||||
|
||||
[MessagePackObject]
|
||||
public class SavedZone
|
||||
{
|
||||
[Key(0)]
|
||||
public string Name;
|
||||
|
||||
[Key(1)]
|
||||
public float2 Position;
|
||||
|
||||
[Key(2)]
|
||||
public int[] AdjacentZones;
|
||||
|
||||
[Key(3)]
|
||||
public int[] Factions;
|
||||
|
||||
[Key(4)]
|
||||
public int Owner;
|
||||
|
||||
[Key(5)]
|
||||
public ZonePack Contents;
|
||||
}
|
||||
Loading…
Reference in a new issue