void Parse(string animationSpec) { List <AnimationItem> parsedItems = new List <AnimationItem> (); string[] items = animationSpec.Split(';'); AnimationItem last = null; foreach (var item in items) { int i = item.IndexOf(':'); var tname = i != -1 ? item.Substring(0, i) : item; int pause; Type type; AnimationItem aitem = null; if (animationItems.TryGetValue(tname, out type)) { aitem = (AnimationItem)Activator.CreateInstance(type); aitem.Parse(item); } else if (int.TryParse(item, out pause)) { aitem = new PauseItem() { Pause = pause }; } else { // It must be an image var id = ImageService.GetStockId(addin, item, size); var img = ImageService.GetPixbuf(id, size); if (img == null) { continue; } aitem = new ImageItem() { Image = img }; } if (last != null) { last.NextItem = aitem; } aitem.PreviousItem = last; parsedItems.Add(aitem); last = aitem; } if (parsedItems.Count > 0) { // Close the chain parsedItems[0].PreviousItem = parsedItems [parsedItems.Count - 1]; parsedItems [parsedItems.Count - 1].NextItem = parsedItems [0]; } images = new List <Gdk.Pixbuf> (); pauses = new List <int> (); bool lastWasImage = false; foreach (var aitem in parsedItems) { foreach (var frame in aitem.GetFrames()) { if (frame is Gdk.Pixbuf) { if (lastWasImage) { pauses.Add(defaultPause); } images.Add((Gdk.Pixbuf)frame); lastWasImage = true; } else { if (!lastWasImage) { if (pauses.Count > 0) { pauses [pauses.Count - 1] = pauses [pauses.Count - 1] + (int)frame; } else { // Pause before any image. Add a dummy image images.Add(ImageService.GetPixbuf("md-empty")); pauses.Add((int)frame); } } else { pauses.Add((int)frame); } lastWasImage = false; } } } if (pauses.Count < images.Count) { pauses.Add(defaultPause); } }
void Parse (string animationSpec) { List<AnimationItem> parsedItems = new List<AnimationItem> (); string[] items = animationSpec.Split (';'); AnimationItem last = null; foreach (var item in items) { int i = item.IndexOf (':'); var tname = i != -1 ? item.Substring (0, i) : item; int pause; Type type; AnimationItem aitem = null; if (animationItems.TryGetValue (tname, out type)) { aitem = (AnimationItem) Activator.CreateInstance (type); aitem.Parse (item); } else if (int.TryParse (item, out pause)) { aitem = new PauseItem () { Pause = pause }; } else { // It must be an image var id = ImageService.GetStockId (addin, item, size); var img = ImageService.GetPixbuf (id, size); if (img == null) continue; aitem = new ImageItem () { Image = img }; } if (last != null) last.NextItem = aitem; aitem.PreviousItem = last; parsedItems.Add (aitem); last = aitem; } if (parsedItems.Count > 0) { // Close the chain parsedItems[0].PreviousItem = parsedItems [parsedItems.Count - 1]; parsedItems [parsedItems.Count - 1].NextItem = parsedItems [0]; } images = new List<Gdk.Pixbuf> (); pauses = new List<int> (); bool lastWasImage = false; foreach (var aitem in parsedItems) { foreach (var frame in aitem.GetFrames ()) { if (frame is Gdk.Pixbuf) { if (lastWasImage) pauses.Add (defaultPause); images.Add ((Gdk.Pixbuf)frame); lastWasImage = true; } else { if (!lastWasImage) { if (pauses.Count > 0) pauses [pauses.Count - 1] = pauses [pauses.Count - 1] + (int) frame; else { // Pause before any image. Add a dummy image images.Add (ImageService.GetPixbuf ("md-empty")); pauses.Add ((int) frame); } } else pauses.Add ((int)frame); lastWasImage = false; } } } if (pauses.Count < images.Count) pauses.Add (defaultPause); }
void Update() { if (fade.IsFade) { return; } if (isTranslation) { return; } if (isPause) { if (SwitchInput.GetButtonDown(0, SwitchButton.Pause)) { SeManager.GetInstance().Play(SeEnum.Decision); StartCoroutine(ReturnGame()); } else { PauseItem nextItem = null; if (SwitchInput.GetButtonDown(0, SwitchButton.Ok)) { isPause = false; SeManager.GetInstance().Play(SeEnum.Decision); currentItem.transform.localScale = Vector3.Scale(defaultScale , new Vector3(1 + SizeRange, 1 + SizeRange, 1.0f)); currentItem.Execute(); } else if (SwitchInput.GetButtonDown(0, SwitchButton.SelectUp)) { nextItem = currentItem.up; } else if (SwitchInput.GetButtonDown(0, SwitchButton.SelectDown)) { nextItem = currentItem.down; } else if (SwitchInput.GetButtonDown(0, SwitchButton.SelectRight)) { nextItem = currentItem.right; } else if (SwitchInput.GetButtonDown(0, SwitchButton.SelectLeft)) { nextItem = currentItem.left; } if (nextItem != null) { currentItem.transform.localScale = defaultScale; currentItem = nextItem; timeCount = 0.0f; } float addScale = (Mathf.Sin(timeCount) + 1) / 2; float scale = 1 + addScale * SizeRange; currentItem.transform.localScale = Vector3.Scale(defaultScale , new Vector3(scale, scale, 1.0f)); timeCount += Time.unscaledDeltaTime * 2.0f; } } else { if (Time.timeScale == 0.0f) { return; } if (SwitchInput.GetButtonDown(0, SwitchButton.Pause)) { currentItem = pauseItems[0]; foreach (var pauseItem in pauseItems) { pauseItem.transform.localScale = defaultScale; } StartCoroutine(ToPause()); } } }