Demote entity blueprints to construction
This commit is contained in:
parent
dab29839a2
commit
7b605f049c
17 changed files with 73 additions and 96 deletions
|
|
@ -38,7 +38,7 @@ public class Faction : INamedEntry
|
|||
[Inspectable]
|
||||
public int InfluenceDistance = 4;
|
||||
|
||||
[RangedFloat(0, 1)]
|
||||
[InspectableRangedFloat(0, 1)]
|
||||
public Dictionary<Guid, float> Allegiance = new Dictionary<Guid, float>();
|
||||
|
||||
[InspectableSoundBank]
|
||||
|
|
|
|||
|
|
@ -4,20 +4,20 @@ using System.Collections.Generic;
|
|||
using System.Linq;
|
||||
using Unity.Mathematics;
|
||||
|
||||
public static class RuntimeEntityBlueprintProjector
|
||||
public static class EntityConstructionBlueprintProjector
|
||||
{
|
||||
public static RuntimeEntityBlueprint CaptureBlueprint(Entity entity)
|
||||
public static EntityConstructionBlueprint CaptureBlueprint(Entity entity)
|
||||
{
|
||||
RuntimeEntityBlueprint blueprint;
|
||||
EntityConstructionBlueprint blueprint;
|
||||
if (entity is OrbitalEntity orbital)
|
||||
blueprint = new RuntimeOrbitalEntityBlueprint
|
||||
blueprint = new OrbitalEntityConstructionBlueprint
|
||||
{
|
||||
Orbit = orbital.OrbitId,
|
||||
SecurityLevel = orbital.SecurityLevel,
|
||||
SecurityRadius = orbital.SecurityRadius
|
||||
};
|
||||
else if (entity is Ship ship)
|
||||
blueprint = new RuntimeShipBlueprint
|
||||
blueprint = new ShipConstructionBlueprint
|
||||
{
|
||||
Position = ship.Position,
|
||||
Direction = ship.Direction,
|
||||
|
|
@ -41,19 +41,19 @@ public static class RuntimeEntityBlueprintProjector
|
|||
return blueprint;
|
||||
}
|
||||
|
||||
public static Entity InstantiateFromBlueprint(ItemManager itemManager, Zone zone, RuntimeEntityBlueprint blueprint, bool instantiate = false)
|
||||
public static Entity InstantiateFromBlueprint(ItemManager itemManager, Zone zone, EntityConstructionBlueprint blueprint, bool instantiate = false)
|
||||
{
|
||||
blueprint.Settings ??= itemManager.GameplaySettings.DefaultEntitySettings.Copy();
|
||||
return blueprint switch
|
||||
{
|
||||
RuntimeShipBlueprint shipBlueprint => InstantiateFromBlueprint(itemManager, zone, shipBlueprint, instantiate),
|
||||
RuntimeOrbitalEntityBlueprint orbitalBlueprint => InstantiateFromBlueprint(itemManager, zone, orbitalBlueprint, instantiate),
|
||||
ShipConstructionBlueprint shipBlueprint => InstantiateFromBlueprint(itemManager, zone, shipBlueprint, instantiate),
|
||||
OrbitalEntityConstructionBlueprint orbitalBlueprint => InstantiateFromBlueprint(itemManager, zone, orbitalBlueprint, instantiate),
|
||||
_ => null
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
private static Ship InstantiateFromBlueprint(ItemManager itemManager, Zone zone, RuntimeShipBlueprint blueprint, bool instantiate = false)
|
||||
private static Ship InstantiateFromBlueprint(ItemManager itemManager, Zone zone, ShipConstructionBlueprint blueprint, bool instantiate = false)
|
||||
{
|
||||
|
||||
var entity = new Ship(itemManager, zone, instantiate ? (EquippableItem) itemManager.Instantiate(blueprint.Hull) : blueprint.Hull, blueprint.Settings);
|
||||
|
|
@ -64,7 +64,7 @@ public static class RuntimeEntityBlueprintProjector
|
|||
return entity;
|
||||
}
|
||||
|
||||
private static OrbitalEntity InstantiateFromBlueprint(ItemManager itemManager, Zone zone, RuntimeOrbitalEntityBlueprint blueprint, bool instantiate = false)
|
||||
private static OrbitalEntity InstantiateFromBlueprint(ItemManager itemManager, Zone zone, OrbitalEntityConstructionBlueprint blueprint, bool instantiate = false)
|
||||
{
|
||||
var entity = new OrbitalEntity(itemManager, zone, instantiate ? (EquippableItem) itemManager.Instantiate(blueprint.Hull) : blueprint.Hull, blueprint.Orbit, blueprint.Settings);
|
||||
Restore(itemManager, zone, blueprint, entity, instantiate);
|
||||
|
|
@ -74,7 +74,7 @@ public static class RuntimeEntityBlueprintProjector
|
|||
return entity;
|
||||
}
|
||||
|
||||
private static void Restore(ItemManager itemManager, Zone zone, RuntimeEntityBlueprint blueprint, Entity entity, bool instantiate = false)
|
||||
private static void Restore(ItemManager itemManager, Zone zone, EntityConstructionBlueprint blueprint, Entity entity, bool instantiate = false)
|
||||
{
|
||||
entity.Name = blueprint.Name;
|
||||
entity.Faction = zone?.Galaxy?.ResolveFaction(blueprint.Faction);
|
||||
|
|
@ -112,14 +112,14 @@ public static class RuntimeEntityBlueprintProjector
|
|||
}
|
||||
}
|
||||
|
||||
public class RuntimeShipBlueprint : RuntimeEntityBlueprint
|
||||
public class ShipConstructionBlueprint : EntityConstructionBlueprint
|
||||
{
|
||||
public float3 Position;
|
||||
public float2 Direction;
|
||||
public bool IsPlayerShip;
|
||||
}
|
||||
|
||||
public class RuntimeOrbitalEntityBlueprint : RuntimeEntityBlueprint
|
||||
public class OrbitalEntityConstructionBlueprint : EntityConstructionBlueprint
|
||||
{
|
||||
public Guid Orbit;
|
||||
public int Story = -1;
|
||||
|
|
@ -127,7 +127,7 @@ public class RuntimeOrbitalEntityBlueprint : RuntimeEntityBlueprint
|
|||
public float SecurityRadius;
|
||||
}
|
||||
|
||||
public abstract class RuntimeEntityBlueprint
|
||||
public abstract class EntityConstructionBlueprint
|
||||
{
|
||||
public string Name;
|
||||
public EquippableItem Hull;
|
||||
|
|
@ -137,7 +137,7 @@ public abstract class RuntimeEntityBlueprint
|
|||
public int[] DockingBayAssignments;
|
||||
public (int2 position, ItemInstance item)[][] CargoContents;
|
||||
public (int2 position, ItemInstance item)[][] DockingBayContents;
|
||||
public RuntimeEntityBlueprint[] Children;
|
||||
public EntityConstructionBlueprint[] Children;
|
||||
public EntitySettings Settings;
|
||||
public Guid Faction;
|
||||
public int[][] WeaponGroups;
|
||||
|
|
@ -55,7 +55,7 @@ public class LoadoutGenerator
|
|||
// PriceExponent = priceExponent;
|
||||
// }
|
||||
|
||||
public RuntimeEntityBlueprint GenerateShipLoadout(Predicate<AetheriaRuntimeCatalogItem> hullFilter = null)
|
||||
public EntityConstructionBlueprint GenerateShipLoadout(Predicate<AetheriaRuntimeCatalogItem> hullFilter = null)
|
||||
{
|
||||
var hullRow = RandomHull(HullType.Ship, hullFilter);
|
||||
if(hullRow==null)
|
||||
|
|
@ -69,10 +69,10 @@ public class LoadoutGenerator
|
|||
var entity = new Ship(ItemManager, null, hull, ItemManager.GameplaySettings.DefaultEntitySettings);
|
||||
entity.Faction = Faction;
|
||||
OutfitEntity(entity);
|
||||
return RuntimeEntityBlueprintProjector.CaptureBlueprint(entity);
|
||||
return EntityConstructionBlueprintProjector.CaptureBlueprint(entity);
|
||||
}
|
||||
|
||||
public RuntimeOrbitalEntityBlueprint GenerateTurretLoadout()
|
||||
public OrbitalEntityConstructionBlueprint GenerateTurretLoadout()
|
||||
{
|
||||
var hullRow = RandomHull(HullType.Turret);
|
||||
if(hullRow==null)
|
||||
|
|
@ -84,10 +84,10 @@ public class LoadoutGenerator
|
|||
var entity = new OrbitalEntity(ItemManager, null, hull, Guid.Empty, ItemManager.GameplaySettings.DefaultEntitySettings);
|
||||
entity.Faction = Faction;
|
||||
OutfitEntity(entity);
|
||||
return RuntimeEntityBlueprintProjector.CaptureBlueprint(entity) as RuntimeOrbitalEntityBlueprint;
|
||||
return EntityConstructionBlueprintProjector.CaptureBlueprint(entity) as OrbitalEntityConstructionBlueprint;
|
||||
}
|
||||
|
||||
public RuntimeOrbitalEntityBlueprint GenerateStationLoadout()
|
||||
public OrbitalEntityConstructionBlueprint GenerateStationLoadout()
|
||||
{
|
||||
var hullRow = RandomHull(HullType.Station);
|
||||
if(hullRow==null)
|
||||
|
|
@ -130,7 +130,7 @@ public class LoadoutGenerator
|
|||
|
||||
entity.CanTow = hullRow.HullCanTow;
|
||||
|
||||
return RuntimeEntityBlueprintProjector.CaptureBlueprint(entity) as RuntimeOrbitalEntityBlueprint;
|
||||
return EntityConstructionBlueprintProjector.CaptureBlueprint(entity) as OrbitalEntityConstructionBlueprint;
|
||||
}
|
||||
|
||||
public AetheriaRuntimeCatalogItem RandomHull(HullType type, Predicate<AetheriaRuntimeCatalogItem> hullFilter = null)
|
||||
|
|
|
|||
|
|
@ -79,7 +79,7 @@ public class Zone
|
|||
|
||||
foreach (var entityBlueprint in blueprint.Entities)
|
||||
{
|
||||
var entity = RuntimeEntityBlueprintProjector.InstantiateFromBlueprint(_itemManager, this, entityBlueprint);
|
||||
var entity = EntityConstructionBlueprintProjector.InstantiateFromBlueprint(_itemManager, this, entityBlueprint);
|
||||
Entities.Add(entity);
|
||||
entity.Activate();
|
||||
if (entity is Ship {IsPlayerShip: false} ship)
|
||||
|
|
@ -102,11 +102,6 @@ public class Zone
|
|||
return agent;
|
||||
}
|
||||
|
||||
public void AddOrbit(OrbitData orbit)
|
||||
{
|
||||
Orbits.Add(orbit.ID, new Orbit(Settings, orbit));
|
||||
}
|
||||
|
||||
public void Update(float deltaTime)
|
||||
{
|
||||
_time += deltaTime;
|
||||
|
|
|
|||
|
|
@ -15,7 +15,7 @@ public class ZoneConstructionBlueprint
|
|||
{
|
||||
public List<BodyData> Planets = new List<BodyData>();
|
||||
public List<OrbitData> Orbits = new List<OrbitData>();
|
||||
public List<RuntimeEntityBlueprint> Entities = new List<RuntimeEntityBlueprint>();
|
||||
public List<EntityConstructionBlueprint> Entities = new List<EntityConstructionBlueprint>();
|
||||
public float Radius = 2000;
|
||||
public float Mass = 10000;
|
||||
public double Time;
|
||||
|
|
|
|||
Loading…
Reference in a new issue