Files
LuaCsForBarotraumaEP/Barotrauma/BarotraumaShared/SharedSource/Items/ItemEventData.cs
Juan Pablo Arce 4206f6db42 Unstable 0.17.3.0
2022-03-22 14:44:56 -03:00

115 lines
3.6 KiB
C#

using System;
using Barotrauma.Items.Components;
using Barotrauma.Networking;
using Microsoft.Xna.Framework;
namespace Barotrauma
{
partial class Item
{
public enum EventType
{
ComponentState = 0,
InventoryState = 1,
Treatment = 2,
ChangeProperty = 3,
Combine = 4,
Status = 5,
AssignCampaignInteraction = 6,
ApplyStatusEffect = 7,
Upgrade = 8,
MinValue = 0,
MaxValue = 6
}
public interface IEventData : NetEntityEvent.IData
{
public EventType EventType { get; }
}
public struct ComponentStateEventData : IEventData
{
public EventType EventType => EventType.ComponentState;
public readonly ItemComponent Component;
public readonly ItemComponent.IEventData ComponentData;
public ComponentStateEventData(ItemComponent component, ItemComponent.IEventData componentData)
{
Component = component;
ComponentData = componentData;
}
}
public readonly struct InventoryStateEventData : IEventData
{
public EventType EventType => EventType.InventoryState;
public readonly ItemContainer Component;
public InventoryStateEventData(ItemContainer component)
{
Component = component;
}
}
public readonly struct ChangePropertyEventData : IEventData
{
public EventType EventType => EventType.ChangeProperty;
public readonly SerializableProperty SerializableProperty;
public ChangePropertyEventData(SerializableProperty serializableProperty)
{
SerializableProperty = serializableProperty;
}
}
private readonly struct ItemStatusEventData : IEventData
{
public EventType EventType => EventType.Status;
}
private readonly struct AssignCampaignInteractionEventData : IEventData
{
public EventType EventType => EventType.AssignCampaignInteraction;
}
public readonly struct ApplyStatusEffectEventData : IEventData
{
public EventType EventType => EventType.ApplyStatusEffect;
public readonly ActionType ActionType;
public readonly ItemComponent TargetItemComponent;
public readonly Character TargetCharacter;
public readonly Limb TargetLimb;
public readonly Entity UseTarget;
public readonly Vector2? WorldPosition;
public ApplyStatusEffectEventData(
ActionType actionType,
ItemComponent targetItemComponent = null,
Character targetCharacter = null,
Limb targetLimb = null,
Entity useTarget = null,
Vector2? worldPosition = null)
{
ActionType = actionType;
TargetItemComponent = targetItemComponent;
TargetCharacter = targetCharacter;
TargetLimb = targetLimb;
UseTarget = useTarget;
WorldPosition = worldPosition;
}
}
private readonly struct UpgradeEventData : IEventData
{
public EventType EventType => EventType.Upgrade;
public readonly Upgrade Upgrade;
public UpgradeEventData(Upgrade upgrade)
{
Upgrade = upgrade;
}
}
}
}