public AnimationTool()
 {
     testingRectangle = new GameRectangle(400, 200, 100, 100);
     color = Color.CadetBlue;
     left = new ArmTool();
     right = new ArmTool();
     lleft = new ArmTool();
     lright = new ArmTool();
     textBox = new FileTextBox();
     textBox.SetX(500);
     textBox.SetY(200);
 }
        public void SetBodyAnimation(String animationFile)
        {
            this.animation = animationFile;
            BodyAnimation ba = SaveFileSystem.LoadObjectFromFile<BodyAnimation>("Animations" + Path.DirectorySeparatorChar + animationFile, new GameLoader());

            left = ba.GetLeft();
            left.EndEditing();
            right = ba.GetRight();
            right.EndEditing();
            leg_left = ba.GetLegLeft();
            leg_left.EndEditing();
            leg_right = ba.GetLegRight();
            leg_right.EndEditing();
            this.frame = 0;
            this.max_frames = ba.GetFrames();
        }
        private void BuildArm()
        {
            ArmTool arm = new ArmTool();

            arm.SetPoints(convertArray<short>((Object[])variablesToBuild.Peek()["Points"]));
            buildStack.Push(arm);
            currentClass.Pop();
            variablesToBuild.Pop();
        }
 public BodyAnimation(ArmTool left, ArmTool right, ArmTool leg_left, ArmTool leg_right, int frames)
 {
     this.leg_left = leg_left;
     this.left = left;
     this.right = right;
     this.leg_right = leg_right;
     this.frames = frames;
 }
        public void Update(InputHandler handler)
        {
            try
            {
                if (done)
                {
                    done = false;
                    return;
                }

                if (modeB)
                {

                    if(frames == 0)
                    {
                        ff = 0;
                        modeB = false;
                        return;
                    }
                    ff++;
                    ff %= frames;
                    left.LoadFrame(ff);
                    right.LoadFrame(ff);
                    lright.LoadFrame(ff);
                    lleft.LoadFrame(ff);
                }

                DragDropInterface.UpdateTextBox(textBox, handler);
                if (textBox.GetSelected()) return;
                if (fileMode != 0)
                {
                    if (fileMode == 1)
                    {
                        SaveFileSystem.SaveObjectToFile(new BodyAnimation(left, right, lleft, lright, frames), "Animations" + Path.DirectorySeparatorChar + textBox.GetText() + ".taj");
                        textBox.SetText("");

                    }
                    else if (fileMode == 2)
                    {
                        BodyAnimation a = SaveFileSystem.LoadObjectFromFile<BodyAnimation>("Animations" + Path.DirectorySeparatorChar + textBox.GetText() + ".taj", new GameLoader());
                        this.left = a.GetLeft();
                        this.lleft = a.GetLegLeft();
                        this.lright = a.GetLegRight();
                        this.right = a.GetRight();

                        this.frames = a.GetFrames();

                        this.ff = 0;
                        textBox.SetText("");
                    }
                    fileMode = 0;
                }

                left.Update(handler, testingRectangle.GetX(), testingRectangle.GetY() + 20);
                right.Update(handler, testingRectangle.GetX() + testingRectangle.GetWidth(), testingRectangle.GetY() + 20);
                lleft.Update(handler, testingRectangle.GetX() + 20, testingRectangle.GetY() + testingRectangle.GetHeight());
                lright.Update(handler, testingRectangle.GetX() - 20 + testingRectangle.GetWidth(), testingRectangle.GetY() + testingRectangle.GetHeight());

                if (!dragging && handler.CheckJustPressedKey(Keys.M))
                {
                    mode = !mode;
                }

                if (handler.CheckJustPressedKey(Keys.Escape) || handler.CheckJustPressedKey(Keys.A))
                {
                    done = true;
                }

                if (handler.CheckJustPressedKey(Keys.OemSemicolon))
                {
                    if (frames == 0) return;
                    modeB = !modeB;
                }

                if (handler.CheckJustPressedKey(Keys.D1))
                {
                    textBox.TellSelected(true);
                    fileMode = 1;

                }

                if (handler.CheckJustPressedKey(Keys.D2))
                {

                    textBox.TellSelected(true);
                    fileMode = 2;

                }

                if (handler.CheckJustPressedKey(Keys.S))
                {
                    left.SaveArm();
                    right.SaveArm();
                    lright.SaveArm();
                    lleft.SaveArm();
                    frames++;
                    ff++;
                }

                if (handler.CheckJustPressedKey(Keys.D))
                {
                    left.Clear(ff);
                    right.Clear(ff);
                    lright.Clear(ff);
                    lleft.Clear(ff);
                    frames = ff;

                }

                if (handler.CheckJustPressedKey(Keys.C))
                {
                    if (frames == 0) return;
                    if (left.Using())
                    {
                        left.SaveAt(ff, true);
                    }

                    if (right.Using())
                    {
                        right.SaveAt(ff, true);
                    }
                    if (lleft.Using())
                    {
                        lleft.SaveAt(ff, true);
                    }
                    if (lright.Using())
                    {
                        lright.SaveAt(ff, true);
                    }

                    ff++;

                    ff %= frames;
                    left.LoadFrame(ff);
                    right.LoadFrame(ff);
                    lright.LoadFrame(ff);
                    lleft.LoadFrame(ff);
                }

                if (handler.CheckJustPressedKey(Keys.V))
                {
                    if (frames == 0) return;

                    if (left.Using())
                    {
                        left.SaveAt(ff, false);
                    }

                    if (right.Using())
                    {
                        right.SaveAt(ff, false);
                    }
                    if (lleft.Using())
                    {
                        lleft.SaveAt(ff, false);
                    }
                    if (lright.Using())
                    {
                        lright.SaveAt(ff, false);
                    }

                    ff++;

                    ff %= frames;
                    left.LoadFrame(ff);
                    right.LoadFrame(ff);
                    lright.LoadFrame(ff);
                    lleft.LoadFrame(ff);
                }

                if (handler.CheckJustPressedKey(Keys.B))
                {
                    dragBody = !dragBody;
                }

                if (handler.CheckJustPressedKey(Keys.Z))
                {
                    squareOrCircle = !squareOrCircle;
                }

                if (handler.CheckJustPressedKey(Keys.OemPlus))
                {
                    ff++;
                    ff %= frames;
                    left.LoadFrame(ff);
                    right.LoadFrame(ff);
                    lright.LoadFrame(ff);
                    lleft.LoadFrame(ff);

                }

                if (handler.CheckJustPressedKey(Keys.OemMinus))
                {
                    ff--;
                    if (ff < 0) ff = 0;
                    left.LoadFrame(ff);
                    right.LoadFrame(ff);
                    lright.LoadFrame(ff);
                    lleft.LoadFrame(ff);
                }

                if (handler.CheckPressedKey(Keys.LeftShift) || handler.CheckPressedKey(Keys.RightShift))
                {
                    if (handler.CheckPressedKey(Keys.Down))
                    {
                        testingRectangle.ModifyHeight(SPEED);
                    }

                    if (handler.CheckPressedKey(Keys.Up))
                    {
                        testingRectangle.ModifyHeight(-SPEED);
                    }

                    if (handler.CheckPressedKey(Keys.Left))
                    {
                        testingRectangle.ModifyWidth(-SPEED);
                    }

                    if (handler.CheckPressedKey(Keys.Right))
                    {
                        testingRectangle.ModifyWidth(SPEED);
                    }
                }
                else
                {
                    if (handler.CheckPressedKey(Keys.Down))
                    {
                        testingRectangle.ModifyY(SPEED);
                    }

                    if (handler.CheckPressedKey(Keys.Up))
                    {
                        testingRectangle.ModifyY(-SPEED);
                    }

                    if (handler.CheckPressedKey(Keys.Left))
                    {
                        testingRectangle.ModifyX(-SPEED);
                    }

                    if (handler.CheckPressedKey(Keys.Right))
                    {
                        testingRectangle.ModifyX(SPEED);
                    }
                }

                #region Check if the mouse is in the body.
                if (dragBody)
                    if (handler.CheckMouseIn(testingRectangle))
                    {

                        if (handler.CheckLeftMousePressed())
                        {
                            if (!dragging && handler.LeftMouseDraggedBy().X == 0 && handler.LeftMouseDraggedBy().Y == 0)
                            {
                                this.originalPoint = testingRectangle.GetPoint();
                                if (mode) this.originalPoint = testingRectangle.GetSize();
                                dragging = true;
                            }

                        }
                        else
                        {
                            color = Color.Red;
                            dragging = false;
                        }

                    }
                    else
                    {
                        color = Color.DarkGray;
                    }

                if (dragging)
                {
                    color = Color.DarkRed;
                    Point fix = originalPoint + handler.LeftMouseDraggedBy();
                    if (mode)
                    {
                        testingRectangle.SetSize(ref fix);

                    }
                    else
                    {

                        testingRectangle.SetPoint(ref fix);
                    }
                }

                #endregion

                blink++;
            } catch (Exception ex)
            {
                Logger.WriteLine(ex.ToString());
                fileMode = 0;
            }
        }