#region Copyright & License Information /* * Copyright 2007-2016 The OpenRA Developers (see AUTHORS) * This file is part of OpenRA, which is free software. It is made * available to you under the terms of the GNU General Public License * as published by the Free Software Foundation, either version 3 of * the License, or (at your option) any later version. For more * information, see COPYING. */ #endregion using System.Collections.Generic; using OpenRA.Activities; using OpenRA.Graphics; using OpenRA.Mods.Common.Activities; using OpenRA.Mods.Common.Graphics; using OpenRA.Primitives; using OpenRA.Traits; namespace OpenRA.Mods.Common.Traits { public enum VisibilityType { Footprint, CenterPosition, GroundPosition } public enum AttackDelayType { Preparation, Attack } public interface IQuantizeBodyOrientationInfo : ITraitInfo { int QuantizedBodyFacings(ActorInfo ai, SequenceProvider sequenceProvider, string race); } public interface INotifyResourceClaimLost { void OnNotifyResourceClaimLost(Actor self, ResourceClaim claim, Actor claimer); } public interface IPlaceBuildingDecorationInfo : ITraitInfo { IEnumerable Render(WorldRenderer wr, World w, ActorInfo ai, WPos centerPosition); } [RequireExplicitImplementation] public interface INotifySold { void Selling(Actor self); void Sold(Actor self); } public interface IDemolishableInfo : ITraitInfoInterface { bool IsValidTarget(ActorInfo actorInfo, Actor saboteur); } public interface IDemolishable { void Demolish(Actor self, Actor saboteur); bool IsValidTarget(Actor self, Actor saboteur); } [RequireExplicitImplementation] public interface ICrushable { bool CrushableBy(Actor self, Actor crusher, HashSet crushClasses); } [RequireExplicitImplementation] public interface INotifyCrushed { void OnCrush(Actor self, Actor crusher, HashSet crushClasses); void WarnCrush(Actor self, Actor crusher, HashSet crushClasses); } [RequireExplicitImplementation] public interface INotifyAttack { void Attacking(Actor self, Target target, Armament a, Barrel barrel); void PreparingAttack(Actor self, Target target, Armament a, Barrel barrel); } [RequireExplicitImplementation] public interface INotifyBuildComplete { void BuildingComplete(Actor self); } [RequireExplicitImplementation] public interface INotifyDamageStateChanged { void DamageStateChanged(Actor self, AttackInfo e); } public interface INotifyBuildingPlaced { void BuildingPlaced(Actor self); } public interface INotifyRepair { void Repairing(Actor self, Actor target); } public interface INotifyBurstComplete { void FiredBurst(Actor self, Target target, Armament a); } public interface INotifyCharging { void Charging(Actor self, Target target); } public interface INotifyChat { bool OnChat(string from, string message); } public interface INotifyProduction { void UnitProduced(Actor self, Actor other, CPos exit); } public interface INotifyOtherProduction { void UnitProducedByOther(Actor self, Actor producer, Actor produced); } public interface INotifyDelivery { void IncomingDelivery(Actor self); void Delivered(Actor self); } public interface INotifyDocking { void Docked(Actor self, Actor harvester); void Undocked(Actor self, Actor harvester); } public interface INotifyParachuteLanded { void OnLanded(Actor ignore); } public interface INotifyCapture { void OnCapture(Actor self, Actor captor, Player oldOwner, Player newOwner); } public interface INotifyDiscovered { void OnDiscovered(Actor self, Player discoverer, bool playNotification); } public interface IRenderActorPreviewInfo : ITraitInfo { IEnumerable RenderPreview(ActorPreviewInitializer init); } public interface ICruiseAltitudeInfo : ITraitInfo { WDist GetCruiseAltitude(); } [RequireExplicitImplementation] public interface INotifyInfiltrated { void Infiltrated(Actor self, Actor infiltrator); } [RequireExplicitImplementation] public interface INotifyBlockingMove { void OnNotifyBlockingMove(Actor self, Actor blocking); } [RequireExplicitImplementation] public interface INotifyPassengerEntered { void OnPassengerEntered(Actor self, Actor passenger); } [RequireExplicitImplementation] public interface INotifyPassengerExited { void OnPassengerExited(Actor self, Actor passenger); } [RequireExplicitImplementation] public interface IConditionConsumerInfo : ITraitInfo { } public interface IConditionConsumer { IEnumerable Conditions { get; } void ConditionsChanged(Actor self, IReadOnlyDictionary conditions); } public interface INotifyHarvesterAction { void MovingToResources(Actor self, CPos targetCell, Activity next); void MovingToRefinery(Actor self, CPos targetCell, Activity next); void MovementCancelled(Actor self); void Harvested(Actor self, ResourceType resource); void Docked(); void Undocked(); } public interface ITechTreePrerequisiteInfo : ITraitInfo { } public interface ITechTreePrerequisite { IEnumerable ProvidesPrerequisites { get; } } public interface ITechTreeElement { void PrerequisitesAvailable(string key); void PrerequisitesUnavailable(string key); void PrerequisitesItemHidden(string key); void PrerequisitesItemVisible(string key); } public interface IProductionIconOverlay { Sprite Sprite { get; } string Palette { get; } float2 Offset(float2 iconSize); bool IsOverlayActive(ActorInfo ai); } public interface INotifyTransform { void BeforeTransform(Actor self); void OnTransform(Actor self); void AfterTransform(Actor toActor); } public interface IAcceptResourcesInfo : ITraitInfo { } public interface IAcceptResources { void OnDock(Actor harv, DeliverResources dockOrder); void GiveResource(int amount); bool CanGiveResource(int amount); CVec DeliveryOffset { get; } bool AllowDocking { get; } } public interface IProvidesAssetBrowserPalettes { IEnumerable PaletteNames { get; } } public interface ICallForTransport { WDist MinimumDistance { get; } bool WantsTransport { get; } void MovementCancelled(Actor self); void RequestTransport(Actor self, CPos destination, Activity afterLandActivity); } public interface IDeathActorInitModifier { void ModifyDeathActorInit(Actor self, TypeDictionary init); } public interface IPreventsAutoTarget { bool PreventsAutoTarget(Actor self, Actor attacker); } [RequireExplicitImplementation] interface IWallConnector { bool AdjacentWallCanConnect(Actor self, CPos wallLocation, string wallType, out CVec facing); void SetDirty(); } [RequireExplicitImplementation] public interface IActorPreviewInitModifier { void ModifyActorPreviewInit(Actor self, TypeDictionary inits); } [RequireExplicitImplementation] public interface INotifyRearm { void Rearming(Actor host, Actor other); } [RequireExplicitImplementation] public interface IRenderInfantrySequenceModifier { bool IsModifyingSequence { get; } string SequencePrefix { get; } } [RequireExplicitImplementation] public interface IDamageModifier { int GetDamageModifier(Actor attacker, Damage damage); } [RequireExplicitImplementation] public interface ISpeedModifier { int GetSpeedModifier(); } [RequireExplicitImplementation] public interface IFirepowerModifier { int GetFirepowerModifier(); } [RequireExplicitImplementation] public interface IReloadModifier { int GetReloadModifier(); } [RequireExplicitImplementation] public interface IInaccuracyModifier { int GetInaccuracyModifier(); } [RequireExplicitImplementation] public interface IRangeModifier { int GetRangeModifier(); } [RequireExplicitImplementation] public interface IRangeModifierInfo : ITraitInfoInterface { int GetRangeModifierDefault(); } [RequireExplicitImplementation] public interface IPowerModifier { int GetPowerModifier(); } }