Esempio n. 1
0
        public override bool IsFeasible(Creature agent)
        {
            if (EntityToKill == null)
            {
                return(false);
            }
            else
            {
                if (EntityToKill.IsDead)
                {
                    return(false);
                }

                Creature ai = EntityToKill.GetChildrenOfTypeRecursive <Creature>().FirstOrDefault();
                switch (Mode)
                {
                case KillType.Attack:
                {
                    if (!agent.Faction.AttackDesignations.Contains(EntityToKill))
                    {
                        return(false);
                    }
                    return(true);

                    break;
                }

                case KillType.Chop:
                {
                    if (!agent.Faction.ChopDesignations.Contains(EntityToKill))
                    {
                        return(false);
                    }
                    return(true);

                    break;
                }

                case KillType.Auto:
                {
                    return(true);
                }
                }


                if (ai == null)
                {
                    return(true);
                }

                Relationship relation = Alliance.Relationships[new Alliance.AlliancePair
                                                               {
                                                                   AllianceA = ai.Allies, AllianceB = agent.Allies
                                                               }];

                return(relation == Relationship.Hates || relation == Relationship.Indifferent);
            }
        }
Esempio n. 2
0
        private void SetDisplayColor(Body body, Color color)
        {
            List <Tinter> sprites = body.GetChildrenOfTypeRecursive <Tinter>();

            foreach (Tinter sprite in sprites)
            {
                sprite.VertexColorTint = color;
            }
        }
Esempio n. 3
0
        public override bool IsFeasible(Creature agent)
        {
            if (EntityToKill == null)
            {
                return(false);
            }
            else
            {
                if (EntityToKill.IsDead)
                {
                    return(false);
                }

                Creature ai = EntityToKill.GetChildrenOfTypeRecursive <Creature>().FirstOrDefault();
                switch (Mode)
                {
                case KillType.Attack:
                {
                    if (!agent.Faction.AttackDesignations.Contains(EntityToKill))
                    {
                        return(false);
                    }
                    return(true);

                    break;
                }

                case KillType.Chop:
                {
                    if (!agent.Faction.ChopDesignations.Contains(EntityToKill))
                    {
                        return(false);
                    }
                    return(true);

                    break;
                }

                case KillType.Auto:
                {
                    return(true);
                }
                }


                if (ai == null)
                {
                    return(true);
                }
                Relationship relation =
                    PlayState.Diplomacy.GetPolitics(ai.Faction, agent.Faction).GetCurrentRelationship();
                return(relation == Relationship.Hateful || relation == Relationship.Indifferent);
            }
        }
Esempio n. 4
0
        public override bool IsFeasible(Creature agent)
        {
            if (EntityToKill == null || EntityToKill.IsDead)
            {
                return(false);
            }
            else
            {
                Creature ai = EntityToKill.GetChildrenOfTypeRecursive <Creature>().FirstOrDefault();
                switch (Mode)
                {
                case KillType.Attack:
                {
                    if (!agent.Faction.AttackDesignations.Contains(EntityToKill))
                    {
                        return(false);
                    }
                    return(true);
                }

                case KillType.Chop:
                {
                    if (!agent.Faction.ChopDesignations.Contains(EntityToKill))
                    {
                        return(false);
                    }
                    return(true);
                }

                case KillType.Auto:
                {
                    return(true);
                }
                }

                Voxel target    = new Voxel();
                bool  voxExists = PlayState.ChunkManager.ChunkData.GetVoxel(EntityToKill.Position, ref target);
                if (!voxExists || !PlanAct.PathExists(agent.Physics.CurrentVoxel, target, agent.AI))
                {
                    return(false);
                }


                if (ai == null)
                {
                    return(true);
                }
                Relationship relation =
                    PlayState.ComponentManager.Diplomacy.GetPolitics(ai.Faction, agent.Faction).GetCurrentRelationship();
                return(relation == Relationship.Hateful || relation == Relationship.Indifferent);
            }
        }