115 lines
3.6 KiB
C#
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;
|
|
}
|
|
}
|
|
}
|
|
}
|