Add IActorPreviewInitInfo interface.
This commit is contained in:
committed by
RoosterDragon
parent
e10b64d62c
commit
b2c3a55c12
@@ -198,6 +198,8 @@ namespace OpenRA.Mods.Common.Orders
|
||||
{
|
||||
if (!initialized)
|
||||
{
|
||||
var actor = rules.Actors[building];
|
||||
|
||||
var td = new TypeDictionary()
|
||||
{
|
||||
new FactionInit(faction),
|
||||
@@ -205,7 +207,11 @@ namespace OpenRA.Mods.Common.Orders
|
||||
new HideBibPreviewInit()
|
||||
};
|
||||
|
||||
var init = new ActorPreviewInitializer(rules.Actors[building], wr, td);
|
||||
foreach (var api in actor.TraitInfos<IActorPreviewInitInfo>())
|
||||
foreach (var o in api.ActorPreviewInits(actor, ActorPreviewType.PlaceBuilding))
|
||||
td.Add(o);
|
||||
|
||||
var init = new ActorPreviewInitializer(actor, wr, td);
|
||||
preview = rules.Actors[building].TraitInfos<IRenderActorPreviewInfo>()
|
||||
.SelectMany(rpi => rpi.RenderPreview(init))
|
||||
.ToArray();
|
||||
|
||||
@@ -290,4 +290,12 @@ namespace OpenRA.Mods.Common.Traits
|
||||
{
|
||||
Order IssueDeployOrder(Actor self);
|
||||
}
|
||||
|
||||
public enum ActorPreviewType { PlaceBuilding, ColorPicker, MapEditorSidebar }
|
||||
|
||||
[RequireExplicitImplementation]
|
||||
public interface IActorPreviewInitInfo : ITraitInfo
|
||||
{
|
||||
IEnumerable<object> ActorPreviewInits(ActorInfo ai, ActorPreviewType type);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -33,6 +33,9 @@ namespace OpenRA.Mods.Common.Widgets.Logic
|
||||
td.Add(new HideBibPreviewInit());
|
||||
td.Add(new OwnerInit(world.WorldActor.Owner));
|
||||
td.Add(new FactionInit(world.WorldActor.Owner.PlayerReference.Faction));
|
||||
foreach (var api in actor.TraitInfos<IActorPreviewInitInfo>())
|
||||
foreach (var o in api.ActorPreviewInits(actor, ActorPreviewType.ColorPicker))
|
||||
td.Add(o);
|
||||
|
||||
if (preview != null)
|
||||
preview.SetPreview(actor, td);
|
||||
|
||||
@@ -109,6 +109,9 @@ namespace OpenRA.Mods.Common.Widgets.Logic
|
||||
td.Add(new HideBibPreviewInit());
|
||||
td.Add(new OwnerInit(selectedOwner.Name));
|
||||
td.Add(new FactionInit(selectedOwner.Faction));
|
||||
foreach (var api in actor.TraitInfos<IActorPreviewInitInfo>())
|
||||
foreach (var o in api.ActorPreviewInits(actor, ActorPreviewType.MapEditorSidebar))
|
||||
td.Add(o);
|
||||
|
||||
try
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user