public PlaceBuildingOrderGenerator(ProductionQueue queue, string name, WorldRenderer worldRenderer) { var world = queue.Actor.World; this.queue = queue; placeBuildingInfo = queue.Actor.Owner.PlayerActor.Info.TraitInfo <PlaceBuildingInfo>(); buildingInfluence = world.WorldActor.Trait <BuildingInfluence>(); viewport = worldRenderer.Viewport; // Clear selection if using Left-Click Orders if (Game.Settings.Game.UseClassicMouseStyle) { world.Selection.Clear(); } actorInfo = world.Map.Rules.Actors[name]; buildingInfo = actorInfo.TraitInfo <BuildingInfo>(); var previewGeneratorInfo = actorInfo.TraitInfoOrDefault <IPlaceBuildingPreviewGeneratorInfo>(); if (previewGeneratorInfo != null) { var faction = actorInfo.TraitInfo <BuildableInfo>().ForceFaction; if (faction == null) { var mostLikelyProducer = queue.MostLikelyProducer(); faction = mostLikelyProducer.Trait != null ? mostLikelyProducer.Trait.Faction : queue.Actor.Owner.Faction.InternalName; } var td = new TypeDictionary() { new FactionInit(faction), new OwnerInit(queue.Actor.Owner), }; foreach (var api in actorInfo.TraitInfos <IActorPreviewInitInfo>()) { foreach (var o in api.ActorPreviewInits(actorInfo, ActorPreviewType.PlaceBuilding)) { td.Add(o); } } preview = previewGeneratorInfo.CreatePreview(worldRenderer, queue.Actor, actorInfo, td); } }
public VariantWrapper(WorldRenderer wr, ProductionQueue queue, ActorInfo ai) { ActorInfo = ai; BuildingInfo = ActorInfo.TraitInfo <BuildingInfo>(); PlugInfo = ActorInfo.TraitInfoOrDefault <PlugInfo>(); LineBuildInfo = ActorInfo.TraitInfoOrDefault <LineBuildInfo>(); var previewGeneratorInfo = ActorInfo.TraitInfoOrDefault <IPlaceBuildingPreviewGeneratorInfo>(); if (previewGeneratorInfo != null) { string faction; var buildableInfo = ActorInfo.TraitInfoOrDefault <BuildableInfo>(); if (buildableInfo != null && buildableInfo.ForceFaction != null) { faction = buildableInfo.ForceFaction; } else { var mostLikelyProducer = queue.MostLikelyProducer(); faction = mostLikelyProducer.Trait != null ? mostLikelyProducer.Trait.Faction : queue.Actor.Owner.Faction.InternalName; } var td = new TypeDictionary() { new FactionInit(faction), new OwnerInit(queue.Actor.Owner), }; foreach (var api in ActorInfo.TraitInfos <IActorPreviewInitInfo>()) { foreach (var o in api.ActorPreviewInits(ActorInfo, ActorPreviewType.PlaceBuilding)) { td.Add(o); } } Preview = previewGeneratorInfo.CreatePreview(wr, ActorInfo, td); } }