private static ITowerModel ParserTowerInfo(ITowerInfo info, IDictionary <string, Sprite> sprites) { var infoType = info.GetType(); if (infoType == typeof(DirectFireTowerInfo)) { var directFireTowerInfo = (DirectFireTowerInfo)info; return(new DirectFireTowerModel( directFireTowerInfo.Id, sprites[directFireTowerInfo.BaseSprite], directFireTowerInfo.Levels.Select(level => ParseTowerLevel(level, sprites)).ToArray())); } if (infoType == typeof(AreaOfEffectTowerInfo)) { var areaOfEffectTowerInfo = (AreaOfEffectTowerInfo)info; return(new AreaOfEffectTowerModel( areaOfEffectTowerInfo.Id, sprites[areaOfEffectTowerInfo.BaseSprite], areaOfEffectTowerInfo.Levels.Select(level => ParseTowerLevel(level, sprites)).ToArray())); } throw new NotSupportedException(string.Format( "The tower type '{0}' is not supported.", infoType)); }
/// <summary> /// Creates a new observable property access proxy /// </summary> /// <param name="modelElement">The model instance element for which to create the property access proxy</param> public ConstructionKindProxy(ITowerInfo modelElement) : base(modelElement, "constructionKind") { }