示例#1
0
        public void Use(Agent agent, Globe globe, IDice dice)
        {
            var highestBranchs = agent.Skills.OrderBy(x => x.Value)
                                 .Where(x => x.Value >= 1);

            var agentNameGenerator = globe.agentNameGenerator;

            if (highestBranchs.Any())
            {
                var firstBranch = highestBranchs.First();

                var agentDisciple = new Agent
                {
                    Name     = agentNameGenerator.Generate(Sex.Male, 1),
                    Location = agent.Location,
                    Realm    = agent.Realm,
                    Hp       = 3
                };

                agentDisciple.Skills.Add(firstBranch.Key, firstBranch.Value / 2);

                globe.Agents.Add(agent);

                CacheHelper.AddAgentToCell(globe.AgentCells, agentDisciple.Location, agent);
            }
            else
            {
                globe.AgentCrisys++;
            }
        }
示例#2
0
        /// <summary>
        /// Выполняет перемещение агента в произвольный нас.пункт текущего государства, если это возможно.
        /// </summary>
        /// <param name="globe"> Мир. </param>
        /// <param name="dice"> Сервис случайностей. </param>
        /// <param name="agent"> Агент для перемещения. </param>
        /// <param name="currentLocality"> Текущая позиция агента. </param>
        /// <returns> Возвращает true в случае успешного перемещения. Иначе - false. </returns>
        /// <remarks>
        /// Агент перемещается, если найден подходящий нас. пункт. Иначе остаётся в текущем.
        /// </remarks>
        public static bool TransportAgentToRandomLocality(Globe globe, IDice dice, Agent agent, Locality currentLocality)
        {
            var targetLocality = RollTargetLocality(globe.Localities, dice, agent.Realm, currentLocality);

            if (targetLocality == null)
            {
                return(false);
            }

            if (currentLocality != null)
            {
                CacheHelper.RemoveAgentFromCell(globe.AgentCells, agent.Location, agent);
            }

            agent.Location = targetLocality.Cell;

            CacheHelper.AddAgentToCell(globe.AgentCells, agent.Location, agent);

            return(true);
        }