Example #1
0
 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);
     }
 }
Example #2
0
 /// <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);
         }
     }
 }
Example #3
0
        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);
        }
Example #4
0
        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);
        }