/// <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); }
/// <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); }