예제 #1
0
        /// <summary>
        /// ITypicalAction
        /// </summary>
        public override void CalculateFeedbacks()
        {
            base.CalculateFeedbacks();

            Subject.CurrentActionFeedback += new ActionFeedback(() =>
            {
                //Realisation for tree
                if (Subject is AgentTree)
                {
                    Agent newAgentToAdd = new AgentItemFoodFruit();
                    newAgentToAdd.Name  = "Fruit " + Subject.Inventory.NumberOfAgentsByType(typeof(AgentItemFoodFruit)) + " from " + Subject.Name;
                    Subject.Inventory.AddAgentToStorage(newAgentToAdd);

                    if (World.AskWorldForAddition(this, newAgentToAdd))
                    {
                        (Subject as AgentTree).CurrentState.Prolificacy.CurrentPercentValue = 100;
                    }
                    else
                    {
                        Subject.Inventory.PopAgent(newAgentToAdd);
                    }
                }
            });

            logger.Info("Action {0}. Fruit grown for {1}", this.Name, Subject.Name);
        }
예제 #2
0
파일: World.cs 프로젝트: Kopachelli/Indigo
        /// <summary>
        /// Here we basicly create world.
        /// </summary>
        public void Initialise()
        {
            Agent currentAddingAgent;                     //Agent, that is adding to the world now. This variable is necessary to configure the agent

            Agents        = new List <Agent>();
            Actions       = new List <ActionAbstract>();
            worldCommands = new List <worldCommand>();

            GenerateForest(new Point(-5, -5), new Size(10, 10), 0.50);
            GenerateForest(new Point(-15, 5), new Size(20, 20), 0.20);

            /*//Terrific test init (for hard and cruel test)
             * for (int i = 0; i < 3; ++i)
             * {
             *      currentAddingAgent = new AgentLivingIndigo();
             *      currentAddingAgent.Name = string.Format("Indigo{0}",i);
             *      currentAddingAgent.Location = new Point((i+1)*10, (i+1)*10);
             *      currentAddingAgent.CurrentState.Health.MaxValue = 100;
             *      currentAddingAgent.CurrentState.Health.CurrentUnitValue = 100;
             *      (currentAddingAgent as AgentLivingIndigo).AgentsRangeOfView = 100;
             *      currentAddingAgent.Inventory.StorageSize = 3;
             *      AddAgent(currentAddingAgent);
             * }*/


            //Basic test init
            currentAddingAgent                 = new AgentLivingIndigo();
            currentAddingAgent.Name            = "Indigo1";
            currentAddingAgent.CurrentLocation = new Location(10, 10);
            currentAddingAgent.CurrentState.Health.MaxValue             = 100;
            currentAddingAgent.CurrentState.Health.CurrentUnitValue     = 100;
            (currentAddingAgent as AgentLivingIndigo).AgentsRangeOfView = 20;
            currentAddingAgent.Inventory.StorageSize = 3;
            AddAgent(currentAddingAgent);

            currentAddingAgent                 = new AgentLivingIndigo();
            currentAddingAgent.Name            = "Indigo2";
            currentAddingAgent.CurrentLocation = new Location(10, 15);
            currentAddingAgent.CurrentState.Health.MaxValue             = 100;
            currentAddingAgent.CurrentState.Health.CurrentUnitValue     = 100;
            (currentAddingAgent as AgentLivingIndigo).AgentsRangeOfView = 20;
            currentAddingAgent.Inventory.StorageSize = 3;
            AddAgent(currentAddingAgent);

            currentAddingAgent                 = new AgentLivingIndigo();
            currentAddingAgent.Name            = "Indigo3";
            currentAddingAgent.CurrentLocation = new Location(15, 15);
            currentAddingAgent.CurrentState.Health.MaxValue             = 100;
            currentAddingAgent.CurrentState.Health.CurrentUnitValue     = 100;
            (currentAddingAgent as AgentLivingIndigo).AgentsRangeOfView = 20;
            currentAddingAgent.Inventory.StorageSize = 3;
            AddAgent(currentAddingAgent);

            currentAddingAgent                 = new AgentLivingIndigo();
            currentAddingAgent.Name            = "Indigo4";
            currentAddingAgent.CurrentLocation = new Location(-20, 0);
            currentAddingAgent.CurrentState.Health.MaxValue             = 100;
            currentAddingAgent.CurrentState.Health.CurrentUnitValue     = 100;
            (currentAddingAgent as AgentLivingIndigo).AgentsRangeOfView = 10;
            currentAddingAgent.Inventory.StorageSize = 3;
            AddAgent(currentAddingAgent);

            currentAddingAgent                 = new AgentItemFoodFruit();
            currentAddingAgent.Name            = "Fruit1";
            currentAddingAgent.CurrentLocation = new Location(0, 2);
            currentAddingAgent.CurrentState.Health.MaxValue         = 100;
            currentAddingAgent.CurrentState.Health.CurrentUnitValue = 100;
            AddAgent(currentAddingAgent);

            currentAddingAgent                 = new AgentItemFoodFruit();
            currentAddingAgent.Name            = "Fruit2";
            currentAddingAgent.CurrentLocation = new Location(2, 0);
            currentAddingAgent.CurrentState.Health.MaxValue         = 100;
            currentAddingAgent.CurrentState.Health.CurrentUnitValue = 100;
            AddAgent(currentAddingAgent);

            currentAddingAgent                 = new AgentPuddle();
            currentAddingAgent.Name            = "Puddle1";
            currentAddingAgent.CurrentLocation = new Location(-2, -2);
            currentAddingAgent.CurrentState.Health.MaxValue         = 200;
            currentAddingAgent.CurrentState.Health.CurrentUnitValue = 200;
            AddAgent(currentAddingAgent);

            currentAddingAgent                 = new AgentPuddle();
            currentAddingAgent.Name            = "Puddle2";
            currentAddingAgent.CurrentLocation = new Location(-15, 0);
            currentAddingAgent.CurrentState.Health.MaxValue         = 200;
            currentAddingAgent.CurrentState.Health.CurrentUnitValue = 200;
            AddAgent(currentAddingAgent);

            currentAddingAgent                 = new AgentPuddle();
            currentAddingAgent.Name            = "Puddle3";
            currentAddingAgent.CurrentLocation = new Location(-10, 16);
            currentAddingAgent.CurrentState.Health.MaxValue         = 200;
            currentAddingAgent.CurrentState.Health.CurrentUnitValue = 200;
            AddAgent(currentAddingAgent);

            currentAddingAgent      = new AgentItemResLog();
            currentAddingAgent.Name = "Log1";
            AddAgent(currentAddingAgent);

            currentAddingAgent                 = new AgentItemResLog();
            currentAddingAgent.Name            = "Log2";
            currentAddingAgent.CurrentLocation = new Location(3, 4);
            AddAgent(currentAddingAgent);

            currentAddingAgent                 = new AgentItemResLog();
            currentAddingAgent.Name            = "Log3";
            currentAddingAgent.CurrentLocation = new Location(-3, 4);
            AddAgent(currentAddingAgent);

            currentAddingAgent                 = new AgentItemResLog();
            currentAddingAgent.Name            = "Log4";
            currentAddingAgent.CurrentLocation = new Location(-3, -4);
            AddAgent(currentAddingAgent);

            currentAddingAgent                 = new AgentTree();
            currentAddingAgent.Name            = "Tree_at_" + 1.ToString() + "_" + 1.ToString();
            currentAddingAgent.CurrentLocation = new Location(1, 1);
            AddAgent(currentAddingAgent);
        }