Aetheria/Assets/Scripts/ServerShared/Behaviors/Behaviors.cs
hyperion51 70100a48ef Population Personality Property Production Performance
Personality now affects production quality
You can now assign population points to infrastructure
Production influences personality
Automated production has a quality variable, imitating population affinity
New properties panel field type for incrementing/decrementing integers
2020-06-08 01:01:33 +01:00

109 lines
No EOL
2.7 KiB
C#

using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using JsonKnownTypes;
using MessagePack;
using Newtonsoft.Json;
using Unity.Mathematics;
using static Unity.Mathematics.math;
using static Unity.Mathematics.noise;
public interface IBehavior
{
bool Update(float delta);
BehaviorData Data { get; }
}
// public interface IActivatedBehavior : IBehavior
// {
// bool Activate();
// void Deactivate();
// }
public interface IAnalogBehavior : IBehavior
{
float Axis { get; set; }
}
public interface IDisposableBehavior
{
void Dispose();
}
public interface IInitializableBehavior
{
void Initialize();
}
public interface IAlwaysUpdatedBehavior
{
void AlwaysUpdate(float delta);
}
public interface IPersistentBehavior//<T> where T : IBehavior
{
PersistentBehaviorData Store();
void Restore(PersistentBehaviorData data);
}
public interface IPopulationAssignment
{
int AssignedPopulation { get; set; }
}
public interface IController
{
bool Available { get; }
TaskType TaskType { get; }
Guid Zone { get; }
void AssignTask(Guid task);
}
[MessagePackObject,
Union(0, typeof(FactoryPersistence)),
JsonObject(MemberSerialization.OptIn),
JsonConverter(typeof(JsonKnownTypesConverter<PersistentBehaviorData>))]
public abstract class PersistentBehaviorData
{
}
[InspectableField,
Union(0, typeof(ProjectileWeaponData)),
Union(1, typeof(LauncherData)),
Union(2, typeof(ReactorData)),
Union(3, typeof(RadiatorData)),
Union(4, typeof(StatModifierData)),
Union(5, typeof(SensorData)),
Union(6, typeof(ReflectorData)),
Union(7, typeof(ShieldData)),
Union(8, typeof(ThrusterData)),
Union(9, typeof(TurningData)),
Union(10, typeof(VelocityConversionData)),
Union(11, typeof(VelocityLimitData)),
Union(12, typeof(FactoryData)),
Union(13, typeof(PatrolControllerData)),
Union(14, typeof(TowingControllerData)),
Union(15, typeof(CooldownData)),
Union(16, typeof(HeatData)),
Union(17, typeof(HitscanData)),
Union(18, typeof(ItemUsageData)),
Union(19, typeof(RadianceData)),
Union(20, typeof(SwitchData)),
Union(21, typeof(TriggerData)),
Union(22, typeof(VisibilityData)),
Union(23, typeof(ThermotoggleData)),
Union(24, typeof(EnergyDrawData)),
Union(25, typeof(MiningControllerData)),
Union(26, typeof(MiningToolData)),
Union(27, typeof(SurveyControllerData)),
Union(28, typeof(ResourceScannerData)),
Union(29, typeof(WanderControllerData)),
JsonConverter(typeof(JsonKnownTypesConverter<BehaviorData>)), JsonObject(MemberSerialization.OptIn)]
public abstract class BehaviorData
{
[InspectableField, JsonProperty("group"), Key(0)]
public int Group;
public abstract IBehavior CreateInstance(GameContext context, Entity entity, Gear item);
}