BBGamelib.CCAnimationCache.parseVersion2 C# (CSharp) Method

parseVersion2() private method

private parseVersion2 ( NSDictionary animations ) : void
animations NSDictionary
return void
		void parseVersion2(NSDictionary animations)
		{
			CCSpriteFrameCache frameCache = CCSpriteFrameCache.sharedSpriteFrameCache;

			var enumerator = animations.GetEnumerator();
			while (enumerator.MoveNext()) {
				KeyValuePair<object, object> kv = enumerator.Current;
				string name = (string)kv.Key;
				NSDictionary animationDict = (NSDictionary)kv.Value;
				
				int loops = 0;
				object loopsObj = loops;
				if(!animationDict.TryGetValue("loops", out loopsObj)){
					loops = 1;
				}else{
					loops = (int)loopsObj;
				}
				bool restoreOriginalFrame = (bool)animationDict["restoreOriginalFrame"];
				NSArray frameArray = (NSArray)animationDict["frames"];
				
				
				if ( frameArray == null ) {
					CCDebug.Log(@"cocos2d: CCAnimationCache: Animation '%@' found in dictionary without any frames - cannot add to animation cache.", name);
					continue;
				}
				
				// Array of AnimationFrames
				List<CCAnimationFrame> array = new List<CCAnimationFrame>(frameArray.Count);
				var frameArrayEnumerator = frameArray.GetEnumerator();
				while (frameArrayEnumerator.MoveNext()) {
					NSDictionary entry = (NSDictionary)frameArrayEnumerator.Current;
					string spriteFrameName = (string)entry["spriteframe"];
					CCSpriteFrame spriteFrame = frameCache.spriteFrameByName(spriteFrameName);
					
					if(  spriteFrame==null ) {
						CCDebug.Log("cocos2d: CCAnimationCache: Animation '{0}' refers to frame '{1}' which is not currently in the CCSpriteFrameCache. This frame will not be added to the animation.", name, spriteFrameName);
						
						continue;
					}
					
					float delayUnits = float.Parse(entry["delayUnits"].ToString());
					NSDictionary userInfo = entry.objectForKey<NSDictionary>("notification");
					
					CCAnimationFrame animFrame = new CCAnimationFrame(spriteFrame, delayUnits, userInfo);
					
					array.Add(animFrame);
				}
				
				float delayPerUnit = (float)animationDict["delayPerUnit"];
				CCAnimation animation = new CCAnimation (array, delayPerUnit, (uint)loops);
				
				animation.restoreOriginalFrame=restoreOriginalFrame;
				
				CCAnimationCache.sharedAnimationCache.addAnimation(animation, name);
			}
		}