Ejemplo n.º 1
0
        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)));
        }
Ejemplo n.º 2
0
        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);
        }
Ejemplo n.º 3
0
            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);
                }
            }
Ejemplo n.º 4
0
 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);
     }
 }
Ejemplo n.º 5
0
        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));
        }