protected override void StartAttribute(AnimAttribute attr) { if (attr.Name == "typeText") { charactersWritten = 0; lastTextUpdate = 0; } else if (attr.Name == "eraseText") { charactersWritten = Definition.Value.Length; lastTextUpdate = 0; } else if (attr.Name == "init") { if (attr.Properties.ContainsKey("text")) { TextString = attr.Properties["text"]; } base.StartAttribute(attr); } else { base.StartAttribute(attr); } }
/// <summary> /// Initialize the specified attribute /// </summary> /// <param name="attr"></param> protected virtual void StartAttribute(AnimAttribute attr) { if (attr.Name == "init") { if (attr.Properties.ContainsKey("alpha")) { Alpha = float.Parse(attr.Properties["alpha"], System.Globalization.CultureInfo.InvariantCulture); } } }
protected override bool UpdateAttribute(AnimAttribute attr) { bool needToUpdate = false; if (attr.Name == "typeText") { int delay = int.Parse(attr.Properties["delay"]); bool reverse = bool.Parse(attr.Properties["reverse"]); if (totalCurrentMs >= lastTextUpdate + delay) { if (charactersWritten <= Definition.Value.Length) { if (!reverse) { TextString = Definition.Value.Substring(0, charactersWritten); } else { StringBuilder str = new StringBuilder(); for (int i = 0; i < Definition.Value.Length - (charactersWritten); i++) { str.Append(@"^" + Definition.Value[i]); } str.Append(Definition.Value.Substring(Definition.Value.Length - (charactersWritten))); TextString = str.ToString(); } charactersWritten++; needToUpdate = true; } else { attr.Finished = true; } lastTextUpdate = totalCurrentMs; } } else if (attr.Name == "eraseText") { int delay = int.Parse(attr.Properties["delay"]); bool reverse = bool.Parse(attr.Properties["reverse"]); if (totalCurrentMs >= lastTextUpdate + delay) { if (charactersWritten >= 0) { if (!reverse) { TextString = Definition.Value.Substring(0, charactersWritten); } else { StringBuilder str = new StringBuilder(); for (int i = 0; i < Definition.Value.Length - (charactersWritten); i++) { str.Append(@"^" + Definition.Value[i]); } str.Append(Definition.Value.Substring(Definition.Value.Length - (charactersWritten))); TextString = str.ToString(); // fill first characters //TextString = //GetCharString(' ', Definition.Value.Length - (charactersWritten - 1)) + Definition.Value.Substring(Definition.Value.Length - (charactersWritten - 1)); } charactersWritten--; needToUpdate = true; } else { attr.Finished = true; } lastTextUpdate = totalCurrentMs; } } else { needToUpdate = base.UpdateAttribute(attr); } return(needToUpdate); }
protected virtual bool UpdateAttribute(AnimAttribute attr) { bool needToUpdate = false; if (attr.Name == "moveTo") { int moveX = int.Parse(attr.Properties["x"]); int moveY = int.Parse(attr.Properties["y"]); // take duration, if not specified take total time int duration; if (attr.Properties.ContainsKey("duration")) { duration = int.Parse(attr.Properties["duration"]); } else { duration = TotalTime; } float perc = (float)((float)(totalCurrentMs - StartMs) / (float)duration); if (perc >= 0 && perc <= 1) { int oldx = x; int oldy = y; x = origx + (int)((moveX - origx) * perc); y = origy + (int)((moveY - origy) * perc); if (oldx != x || oldy != y) // only update if necessary { needToUpdate = true; } } else { attr.Finished = true; } } else if (attr.Name == "fade") { float start = float.Parse(attr.Properties["start"], System.Globalization.CultureInfo.InvariantCulture); float end = float.Parse(attr.Properties["end"], System.Globalization.CultureInfo.InvariantCulture); int duration; if (attr.Properties.ContainsKey("duration")) { duration = int.Parse(attr.Properties["duration"]); } else { // totaltime is animation length! duration = TotalTime; } float perc = (float)((float)(totalCurrentMs - StartMs - attr.StartMs) / (float)duration); if (perc >= 0 && perc < 1) { alpha = start + ((end - start) * perc); needToUpdate = true; } else { attr.Finished = true; } } return(needToUpdate); }