Files
LuaCsForBarotraumaEP/Barotrauma/BarotraumaShared/SharedSource/Characters/AI/Wreck/WreckAIConfig.cs
T
2023-10-02 16:43:54 +03:00

104 lines
3.7 KiB
C#

using System;
using Barotrauma.Extensions;
using Microsoft.Xna.Framework;
using System.Collections.Generic;
using System.Linq;
using System.Xml.Linq;
namespace Barotrauma
{
class WreckAIConfig : PrefabWithUintIdentifier, ISerializableEntity
{
public readonly static PrefabCollection<WreckAIConfig> Prefabs = new PrefabCollection<WreckAIConfig>();
public string Name => "Wreck AI Config";
public Dictionary<Identifier, SerializableProperty> SerializableProperties { get; private set; }
public Identifier Entity => Identifier;
[Serialize("", IsPropertySaveable.No)]
public Identifier DefensiveAgent { get; private set; }
[Serialize("", IsPropertySaveable.No)]
public string OffensiveAgent { get; private set; }
[Serialize("", IsPropertySaveable.No)]
public string Brain { get; private set; }
[Serialize("", IsPropertySaveable.No)]
public Identifier Spawner { get; private set; }
[Serialize("", IsPropertySaveable.No)]
public string BrainRoomBackground { get; private set; }
[Serialize("", IsPropertySaveable.No)]
public string BrainRoomVerticalWall { get; private set; }
[Serialize("", IsPropertySaveable.No)]
public string BrainRoomHorizontalWall { get; private set; }
[Serialize(60f, IsPropertySaveable.No)]
public float AgentSpawnDelay { get; private set; }
[Serialize(0.5f, IsPropertySaveable.No)]
public float AgentSpawnDelayRandomFactor { get; private set; }
[Serialize(1f, IsPropertySaveable.No)]
public float AgentSpawnDelayDifficultyMultiplier { get; private set; }
[Serialize(1f, IsPropertySaveable.No)]
public float AgentSpawnCountDifficultyMultiplier { get; private set; }
[Serialize(0, IsPropertySaveable.No)]
public int MinAgentsPerBrainRoom { get; private set; }
[Serialize(3, IsPropertySaveable.No)]
public int MaxAgentsPerRoom { get; private set; }
[Serialize(2, IsPropertySaveable.No)]
public int MinAgentsOutside { get; private set; }
[Serialize(5, IsPropertySaveable.No)]
public int MaxAgentsOutside { get; private set; }
[Serialize(3, IsPropertySaveable.No)]
public int MinAgentsInside { get; private set; }
[Serialize(10, IsPropertySaveable.No)]
public int MaxAgentsInside { get; private set; }
[Serialize(15, IsPropertySaveable.No)]
public int MaxAgentCount { get; private set; }
[Serialize(100f, IsPropertySaveable.No)]
public float MinWaterLevel { get; private set; }
[Serialize(true, IsPropertySaveable.No)]
public bool KillAgentsWhenEntityDies { get; private set; }
[Serialize(1f, IsPropertySaveable.No)]
public float DeadEntityColorMultiplier { get; private set; }
[Serialize(1f, IsPropertySaveable.No)]
public float DeadEntityColorFadeOutTime { get; private set; }
public readonly Identifier[] ForbiddenAmmunition;
public static WreckAIConfig GetRandom() => Prefabs.OrderBy(p => p.UintIdentifier).GetRandom(Rand.RandSync.ServerAndClient);
protected override Identifier DetermineIdentifier(XElement element)
{
return element.GetAttributeIdentifier("Entity", base.DetermineIdentifier(element));
}
public WreckAIConfig(ContentXElement element, WreckAIConfigFile file) : base(file, element)
{
SerializableProperties = SerializableProperty.DeserializeProperties(this, element);
ForbiddenAmmunition = XMLExtensions.GetAttributeIdentifierArray(element, "ForbiddenAmmunition", Array.Empty<Identifier>());
}
public override void Dispose() { }
}
}