bool AcceptsPlug(CPos cell, PlugInfo plug) { var host = buildingInfluence.GetBuildingAt(cell); if (host == null) { return(false); } var location = host.Location; return(host.TraitsImplementing <Pluggable>().Any(p => location + p.Info.Offset == cell && p.AcceptsPlug(host, plug.Type))); }
bool AcceptsPlug(CPos cell, PlugInfo plug) { foreach (var a in world.ActorMap.GetActorsAt(cell)) { foreach (var p in a.TraitsImplementing <Pluggable>()) { if (p.AcceptsPlug(plug.Type)) { return(true); } } } return(false); }
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); } }
private void AddPlugEntry(PlugInfo anInfo, ListBox aBox) { if (this.InvokeRequired) { this.Invoke(new AddPlugEntryCallback(this.AddPlugEntry), new object[] { anInfo, aBox }); } else { aBox.Items.Add(anInfo); } }
bool AcceptsPlug(CPos cell, PlugInfo plug) { var host = buildingInfluence.GetBuildingAt(cell); if (host == null) return false; var location = host.Location; return host.TraitsImplementing<Pluggable>().Any(p => location + p.Info.Offset == cell && p.AcceptsPlug(host, plug.Type)); }