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));
        }
예제 #2
0
 /// <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")
 {
 }