/// <summary> /// Получает эффекты воздействия этого феномена на точку пространства. /// Использует метаданные попавшей под воздействия формы жизни для корректировки /// эффектов. /// </summary> /// <param name="point">Точка пространства</param> /// <param name="lifeFormMetadata">Метаданные формы жизни</param> /// <returns></returns> public List <StateMetadata> GetEffects(Point point, LifeFormMetadata lifeFormMetadata) { List <StateMetadata> stateMetadata = new List <StateMetadata> { }; //Реализация GetEffects(Point point, LifeFormMetadata lifeFormMetadata) return(stateMetadata); }
/// <summary> /// Определяет, оказывает ли феномен воздействие на форму жизни и возвращает /// результат этого воздействия /// </summary> /// <param name="point">Точка</param> /// <param name="lifeFormMetadataMetadata">метаданные форммы жизни, находящейся в этой точке</param> /// <returns>Эффект воздействия феномена</returns> public List <StateMetadata> GetEffects(Point point, LifeFormMetadata lifeFormMetadataMetadata) { log.Trace(LogPhenomenMessages.PhenomenGetEffects, "SunPhenomen", point.X, point.Y); if (point == null) { ArgumentException ex = new ArgumentNullException(nameof(point)); log.Error(LogPhenomenMessages.NullArgument, "Point", ex); throw ex; } if (lifeFormMetadataMetadata == null) { ArgumentNullException ex = new ArgumentNullException(nameof(lifeFormMetadataMetadata)); log.Error(LogPhenomenMessages.NullArgument, "LifeFormMetadata", ex); throw ex; } if (!isIn(point)) { ArgumentException ex = new ArgumentException("Point isn't in phenomen area.", nameof(point)); log.Error(LogPhenomenMessages.PointNotFound); throw ex; } if (!lifeFormMetadataMetadata.ContainsKey("GenotypeState")) { ArgumentException ex = new ArgumentException("life form metadata isn't contains Genotype state metadata", nameof(lifeFormMetadataMetadata)); log.Error(LogPhenomenMessages.GenotypeStateNotFound); throw ex; } if (!lifeFormMetadataMetadata["GenotypeState"].ContainsKey("Action") || lifeFormMetadataMetadata["GenotypeState"]["Action"] != ActionPhotosynthesisName) { log.Info(LogPhenomenMessages.GenotypeStateAction); return(new List <StateMetadata>(0)); } double depthFactor = 1 / (1 + (point.Y - _place[0].Y) / _place[1].Y); log.Info(LogPhenomenMessages.DepthFactorCalc, depthFactor.ToString()); StateMetadata stateMetadata = new StateMetadata("EnergyState", BaseIntensity * _powerFactor * depthFactor, null); List <StateMetadata> ret = new List <StateMetadata>(1); ret.Add(stateMetadata); log.Trace(LogPhenomenMessages.EndMethod, "SunPhenomen.GetEffects"); return(ret); }
/// <inheritdoc /> /// <summary> /// Инициализирует форму жизни "бот" из ее метаданных /// </summary> /// <param name="metadata">Метаданные Бота</param> public BotLifeForm(LifeFormMetadata metadata) : base(metadata) { //TODO check metadata. }
public List <StateMetadata> GetEffects(Point point, LifeFormMetadata lifeFormMetadata) { throw new NotImplementedException(); }