package gameplay.Characters.Blue;

import engine.Engine;
import engine.math.Vector3f;
import engine.object.Hitbox;
import engine.object.ObjectGl;
import gameplay.frames.Frame;
import gameplay.hitboxes.*;

import java.lang.reflect.Array;
import java.util.ArrayList;

public class BlueBaseFrames {

        /*
        TO COPY PASTE FOR EASY frame function generation :

        private static Frame ExampleFrame(){
                //movement data
                double moveX = 0.0;
                double moveY = 0.0;

                //cancelData
                boolean normalC = false;
                boolean specialC = false;
                boolean jumpC = false;
                boolean moveC = false;
                boolean dashC = false;

                //hitbox lists
                ArrayList<Active_HitBox> ahb = new ArrayList<Active_HitBox>();
                ArrayList<Active_throw_Hitbox> athb = new ArrayList<Active_throw_Hitbox>;
                ArrayList<Passive_HitBox> phb = new ArrayList<Passive_HitBox>();
                ArrayList<Passive_throw_HitBox> pthb = new ArrayList<Passive_throw_HitBox>();

                //generate hitboxes here and then use ArrayList add method to add them to the correct list
                Push_HitBox bStandPB1 = new Push_HitBox(70,70,150,500);

                Frame f = new Frame(moveX,moveY,phb,ahb,pthb,athb,bStandPB1,normalC,specialC,jumpC,moveC,dashC);

                //set sprite data on sheet
                f.setSpriteWrap(0,0,138,138);
                return f;
        }
         */
        private static Frame generateStandFrame1(){
                Passive_HitBox bStandPHB1 = new Passive_HitBox(70,70,150,500);
                Passive_throw_HitBox bStandPTHB1 = new Passive_throw_HitBox(70,400,150,100);
                Push_HitBox bStandPB1 = new Push_HitBox(70,70,150,500);
                ArrayList<Passive_HitBox> phb = new ArrayList<Passive_HitBox>();
                ArrayList<Passive_throw_HitBox> pthb = new ArrayList<Passive_throw_HitBox>();
                phb.add(bStandPHB1);
                pthb.add(bStandPTHB1);
                Frame blueStandframe1 = new Frame(0.0,0.0,phb,new ArrayList<Active_HitBox>(),pthb,new ArrayList<Active_throw_Hitbox>(),
                        bStandPB1,true,true,true,true,true);
                blueStandframe1.setSpriteWrap(0,0,138,138);
                return blueStandframe1;
        }

        private static Frame generateStandFrame2(){
                Passive_HitBox bStandPHB1 = new Passive_HitBox(70,70,75,300);
                Passive_throw_HitBox bStandPTHB1 = new Passive_throw_HitBox(70,400,150,100);
                Push_HitBox bStandPB1 = new Push_HitBox(70,70,150,500);
                ArrayList<Passive_HitBox> phb = new ArrayList<Passive_HitBox>();
                ArrayList<Passive_throw_HitBox> pthb = new ArrayList<Passive_throw_HitBox>();
                phb.add(bStandPHB1);
                pthb.add(bStandPTHB1);
                Frame blueStandframe1 = new Frame(0.0,0.0,phb,new ArrayList<Active_HitBox>(),pthb,new ArrayList<Active_throw_Hitbox>(),
                        bStandPB1,true,true,true,true,true);
                blueStandframe1.setSpriteWrap(138,0,138,138);
                return blueStandframe1;
        }

        protected static Frame[] blueStandFrames() {
                Frame[] sf = new Frame[6];
                sf[0] = generateStandFrame1();
                sf[1] = generateStandFrame1();
                sf[2] = generateStandFrame1();
                sf[3] = generateStandFrame2();
                sf[4] = generateStandFrame2();
                sf[5] = generateStandFrame2();
                return sf;
        }

        private static Frame generateCrouchFrame1(){
                Passive_HitBox bStandPHB1 = new Passive_HitBox(70,70,150,500);
                Passive_throw_HitBox bStandPTHB1 = new Passive_throw_HitBox(70,400,150,100);
                Push_HitBox bStandPB1 = new Push_HitBox(70,70,150,500);
                ArrayList<Passive_HitBox> phb = new ArrayList<Passive_HitBox>();
                ArrayList<Passive_throw_HitBox> pthb = new ArrayList<Passive_throw_HitBox>();
                phb.add(bStandPHB1);
                pthb.add(bStandPTHB1);
                Frame blueStandframe1 = new Frame(0.0,0.0,phb,new ArrayList<Active_HitBox>(),pthb,new ArrayList<Active_throw_Hitbox>(),
                        bStandPB1,true,true,true,true,true);
                blueStandframe1.setSpriteWrap(138,138*3,138,138);
                return blueStandframe1;
        }

        protected static Frame[] blueCrouchFrames() {
                Frame[] cF = {generateCrouchFrame1()};
                return cF;
        }

        private static Frame generateNeutralJumpFrame1(){
                Passive_HitBox bStandPHB1 = new Passive_HitBox(70,70,150,500);
                Passive_throw_HitBox bStandPTHB1 = new Passive_throw_HitBox(70,400,150,100);
                Push_HitBox bStandPB1 = new Push_HitBox(70,70,150,500);
                ArrayList<Passive_HitBox> phb = new ArrayList<Passive_HitBox>();
                ArrayList<Passive_throw_HitBox> pthb = new ArrayList<Passive_throw_HitBox>();
                phb.add(bStandPHB1);
                pthb.add(bStandPTHB1);
                Frame blueStandframe1 = new Frame(18.0,0.0,phb,new ArrayList<Active_HitBox>(),pthb,new ArrayList<Active_throw_Hitbox>(),
                        bStandPB1,false,false,false,false,false);
                blueStandframe1.setSpriteWrap(138*7,0,138,138);
                return blueStandframe1;
        }

        private static Frame generateNeutralJumpFrame2(){
                Passive_HitBox bStandPHB1 = new Passive_HitBox(70,70,150,500);
                Passive_throw_HitBox bStandPTHB1 = new Passive_throw_HitBox(70,400,150,100);
                Push_HitBox bStandPB1 = new Push_HitBox(70,70,150,500);
                ArrayList<Passive_HitBox> phb = new ArrayList<Passive_HitBox>();
                ArrayList<Passive_throw_HitBox> pthb = new ArrayList<Passive_throw_HitBox>();
                phb.add(bStandPHB1);
                pthb.add(bStandPTHB1);
                Frame blueStandframe1 = new Frame(-18.0,0.0,phb,new ArrayList<Active_HitBox>(),pthb,new ArrayList<Active_throw_Hitbox>(),
                        bStandPB1,false,false,false,false,false);
                blueStandframe1.setSpriteWrap(138*7,0,138,138);
                return blueStandframe1;
        }

        protected static Frame[] blueNeutralJump() {
                Frame[] jF = new Frame[40];
                for(int i = 0; i < jF.length/2; i++) {
                        jF[i] = generateNeutralJumpFrame1();
                }
                for(int i = jF.length/2; i < jF.length; i++) {
                        jF[i] = generateNeutralJumpFrame2();
                }
                return jF;
        }

        private static Frame GenerateForwardJumpFrame1(){
                Passive_HitBox bStandPHB1 = new Passive_HitBox(70,70,150,500);
                Passive_throw_HitBox bStandPTHB1 = new Passive_throw_HitBox(70,400,150,100);
                Push_HitBox bStandPB1 = new Push_HitBox(70,70,150,500);
                ArrayList<Passive_HitBox> phb = new ArrayList<Passive_HitBox>();
                ArrayList<Passive_throw_HitBox> pthb = new ArrayList<Passive_throw_HitBox>();
                phb.add(bStandPHB1);
                pthb.add(bStandPTHB1);
                Frame blueStandframe1 = new Frame(18.0,10.0,phb,new ArrayList<Active_HitBox>(),pthb,new ArrayList<Active_throw_Hitbox>(),
                        bStandPB1,false,false,false,false,false);
                blueStandframe1.setSpriteWrap(138*6,0,138,138);
                return blueStandframe1;
        }

        private static Frame GenerateForwardJumpFrame2(){
                Passive_HitBox bStandPHB1 = new Passive_HitBox(70,70,150,500);
                Passive_throw_HitBox bStandPTHB1 = new Passive_throw_HitBox(70,400,150,100);
                Push_HitBox bStandPB1 = new Push_HitBox(70,70,150,500);
                ArrayList<Passive_HitBox> phb = new ArrayList<Passive_HitBox>();
                ArrayList<Passive_throw_HitBox> pthb = new ArrayList<Passive_throw_HitBox>();
                phb.add(bStandPHB1);
                pthb.add(bStandPTHB1);
                Frame blueStandframe1 = new Frame(9.0,10.0,phb,new ArrayList<Active_HitBox>(),pthb,new ArrayList<Active_throw_Hitbox>(),
                        bStandPB1,false,false,false,false,false);
                blueStandframe1.setSpriteWrap(138*7,0,138,138);
                return blueStandframe1;
        }

        private static Frame GenerateForwardJumpFrame3(){
                Passive_HitBox bStandPHB1 = new Passive_HitBox(70,70,150,500);
                Passive_throw_HitBox bStandPTHB1 = new Passive_throw_HitBox(70,400,150,100);
                Push_HitBox bStandPB1 = new Push_HitBox(70,70,150,500);
                ArrayList<Passive_HitBox> phb = new ArrayList<Passive_HitBox>();
                ArrayList<Passive_throw_HitBox> pthb = new ArrayList<Passive_throw_HitBox>();
                phb.add(bStandPHB1);
                pthb.add(bStandPTHB1);
                Frame blueStandframe1 = new Frame(-9.0,10.0,phb,new ArrayList<Active_HitBox>(),pthb,new ArrayList<Active_throw_Hitbox>(),
                        bStandPB1,false,false,false,false,false);
                blueStandframe1.setSpriteWrap(138*7,0,138,138);
                return blueStandframe1;
        }

        private static Frame GenerateForwardJumpFrame4(){
                Passive_HitBox bStandPHB1 = new Passive_HitBox(70,70,150,500);
                Passive_throw_HitBox bStandPTHB1 = new Passive_throw_HitBox(70,400,150,100);
                Push_HitBox bStandPB1 = new Push_HitBox(70,70,150,500);
                ArrayList<Passive_HitBox> phb = new ArrayList<Passive_HitBox>();
                ArrayList<Passive_throw_HitBox> pthb = new ArrayList<Passive_throw_HitBox>();
                phb.add(bStandPHB1);
                pthb.add(bStandPTHB1);
                Frame blueStandframe1 = new Frame(-18.0,10.0,phb,new ArrayList<Active_HitBox>(),pthb,new ArrayList<Active_throw_Hitbox>(),
                        bStandPB1,false,false,false,false,false);
                blueStandframe1.setSpriteWrap(138*6,0,138,138);
                return blueStandframe1;
        }

        protected static Frame[] blueForwardJump() {
                Frame[] jF = new Frame[40];
                for(int i = 0; i < jF.length/4; i++) {
                        jF[i] = GenerateForwardJumpFrame1();
                }
                for(int i = jF.length/4; i < jF.length/2; i++) {
                        jF[i] = GenerateForwardJumpFrame2();
                }
                for(int i = jF.length/2; i < jF.length * 0.75; i++) {
                        jF[i] = GenerateForwardJumpFrame3();
                }
                for(int i = (int) (jF.length * 0.75); i < jF.length; i++) {
                        jF[i] = GenerateForwardJumpFrame4();
                }
                return jF;
        }

        private static Frame BackJumpFrame1(){
                Passive_HitBox bStandPHB1 = new Passive_HitBox(70,70,150,500);
                Passive_throw_HitBox bStandPTHB1 = new Passive_throw_HitBox(70,400,150,100);
                Push_HitBox bStandPB1 = new Push_HitBox(70,70,150,500);
                ArrayList<Passive_HitBox> phb = new ArrayList<Passive_HitBox>();
                ArrayList<Passive_throw_HitBox> pthb = new ArrayList<Passive_throw_HitBox>();
                phb.add(bStandPHB1);
                pthb.add(bStandPTHB1);
                Frame blueStandframe1 = new Frame(18.0,-10.0,phb,new ArrayList<Active_HitBox>(),pthb,new ArrayList<Active_throw_Hitbox>(),
                        bStandPB1,false,false,false,false,false);
                blueStandframe1.setSpriteWrap(138*6,0,138,138);
                return blueStandframe1;
        }

        private static Frame BackJumpFrame2(){
                Passive_HitBox bStandPHB1 = new Passive_HitBox(70,70,150,500);
                Passive_throw_HitBox bStandPTHB1 = new Passive_throw_HitBox(70,400,150,100);
                Push_HitBox bStandPB1 = new Push_HitBox(70,70,150,500);
                ArrayList<Passive_HitBox> phb = new ArrayList<Passive_HitBox>();
                ArrayList<Passive_throw_HitBox> pthb = new ArrayList<Passive_throw_HitBox>();
                phb.add(bStandPHB1);
                pthb.add(bStandPTHB1);
                Frame blueStandframe1 = new Frame(9.0,-10.0,phb,new ArrayList<Active_HitBox>(),pthb,new ArrayList<Active_throw_Hitbox>(),
                        bStandPB1,false,false,false,false,false);
                blueStandframe1.setSpriteWrap(138*7,0,138,138);
                return blueStandframe1;
        }

        private static Frame BackJumpFrame3(){
                Passive_HitBox bStandPHB1 = new Passive_HitBox(70,70,150,500);
                Passive_throw_HitBox bStandPTHB1 = new Passive_throw_HitBox(70,400,150,100);
                Push_HitBox bStandPB1 = new Push_HitBox(70,70,150,500);
                ArrayList<Passive_HitBox> phb = new ArrayList<Passive_HitBox>();
                ArrayList<Passive_throw_HitBox> pthb = new ArrayList<Passive_throw_HitBox>();
                phb.add(bStandPHB1);
                pthb.add(bStandPTHB1);
                Frame blueStandframe1 = new Frame(-9.0,-10.0,phb,new ArrayList<Active_HitBox>(),pthb,new ArrayList<Active_throw_Hitbox>(),
                        bStandPB1,false,false,false,false,false);
                blueStandframe1.setSpriteWrap(138*7,0,138,138);
                return blueStandframe1;
        }

        private static Frame BackJumpFrame4(){
                Passive_HitBox bStandPHB1 = new Passive_HitBox(70,70,150,500);
                Passive_throw_HitBox bStandPTHB1 = new Passive_throw_HitBox(70,400,150,100);
                Push_HitBox bStandPB1 = new Push_HitBox(70,70,150,500);
                ArrayList<Passive_HitBox> phb = new ArrayList<Passive_HitBox>();
                ArrayList<Passive_throw_HitBox> pthb = new ArrayList<Passive_throw_HitBox>();
                phb.add(bStandPHB1);
                pthb.add(bStandPTHB1);
                Frame blueStandframe1 = new Frame(-18.0,-10.0,phb,new ArrayList<Active_HitBox>(),pthb,new ArrayList<Active_throw_Hitbox>(),
                        bStandPB1,false,false,false,false,false);
                blueStandframe1.setSpriteWrap(138*6,0,138,138);
                return blueStandframe1;
        }

        protected static Frame[] blueBackJump() {
                Frame[] jF = new Frame[40];
                for(int i = 0; i < jF.length/4; i++) {
                        jF[i] = BackJumpFrame1();
                }
                for(int i = jF.length/4; i < jF.length/2; i++) {
                        jF[i] = BackJumpFrame2();
                }
                for(int i = jF.length/2; i < jF.length * 0.75; i++) {
                        jF[i] = BackJumpFrame3();
                }
                for(int i = (int) (jF.length * 0.75); i < jF.length; i++) {
                        jF[i] = BackJumpFrame4();
                }
                return jF;
        }


        private static Frame walkForwardFrame1(){
                Passive_HitBox bStandPHB1 = new Passive_HitBox(70,70,150,500);
                Passive_throw_HitBox bStandPTHB1 = new Passive_throw_HitBox(70,400,150,100);
                Push_HitBox bStandPB1 = new Push_HitBox(70,70,150,500);
                ArrayList<Passive_HitBox> phb = new ArrayList<Passive_HitBox>();
                ArrayList<Passive_throw_HitBox> pthb = new ArrayList<Passive_throw_HitBox>();
                phb.add(bStandPHB1);
                pthb.add(bStandPTHB1);
                Frame blueStandframe1 = new Frame(0.0,8.0,phb,new ArrayList<Active_HitBox>(),pthb,new ArrayList<Active_throw_Hitbox>(),
                        bStandPB1,true,true,true,true,true);
                blueStandframe1.setSpriteWrap(138*3,0,138,138);
                return blueStandframe1;
        }

        private static Frame walkForwardFrame2(){
                Passive_HitBox bStandPHB1 = new Passive_HitBox(70,70,150,500);
                Passive_throw_HitBox bStandPTHB1 = new Passive_throw_HitBox(70,400,150,100);
                Push_HitBox bStandPB1 = new Push_HitBox(70,70,150,500);
                ArrayList<Passive_HitBox> phb = new ArrayList<Passive_HitBox>();
                ArrayList<Passive_throw_HitBox> pthb = new ArrayList<Passive_throw_HitBox>();
                phb.add(bStandPHB1);
                pthb.add(bStandPTHB1);
                Frame blueStandframe1 = new Frame(0.0,8.0,phb,new ArrayList<Active_HitBox>(),pthb,new ArrayList<Active_throw_Hitbox>(),
                        bStandPB1,true,true,true,true,true);
                blueStandframe1.setSpriteWrap(138*3,0,138,138);
                return blueStandframe1;
        }

        private static Frame walkForwardFrame3(){
                Passive_HitBox bStandPHB1 = new Passive_HitBox(70,70,150,500);
                Passive_throw_HitBox bStandPTHB1 = new Passive_throw_HitBox(70,400,150,100);
                Push_HitBox bStandPB1 = new Push_HitBox(70,70,150,500);
                ArrayList<Passive_HitBox> phb = new ArrayList<Passive_HitBox>();
                ArrayList<Passive_throw_HitBox> pthb = new ArrayList<Passive_throw_HitBox>();
                phb.add(bStandPHB1);
                pthb.add(bStandPTHB1);
                Frame blueStandframe1 = new Frame(0.0,8.0,phb,new ArrayList<Active_HitBox>(),pthb,new ArrayList<Active_throw_Hitbox>(),
                        bStandPB1,true,true,true,true,true);
                blueStandframe1.setSpriteWrap(138*4,0,138,138);
                return blueStandframe1;
        }

        private static Frame walkForwardFrame4(){
                Passive_HitBox bStandPHB1 = new Passive_HitBox(70,70,150,500);
                Passive_throw_HitBox bStandPTHB1 = new Passive_throw_HitBox(70,400,150,100);
                Push_HitBox bStandPB1 = new Push_HitBox(70,70,150,500);
                ArrayList<Passive_HitBox> phb = new ArrayList<Passive_HitBox>();
                ArrayList<Passive_throw_HitBox> pthb = new ArrayList<Passive_throw_HitBox>();
                phb.add(bStandPHB1);
                pthb.add(bStandPTHB1);
                Frame blueStandframe1 = new Frame(0.0,8.0,phb,new ArrayList<Active_HitBox>(),pthb,new ArrayList<Active_throw_Hitbox>(),
                        bStandPB1,true,true,true,true,true);
                blueStandframe1.setSpriteWrap(138*5,0,138,138);
                return blueStandframe1;
        }

        protected static Frame[] blueFWalk() {
                Frame[] f = new Frame[12];
                f[0] = walkForwardFrame1();
                f[1] = walkForwardFrame1();
                f[2] = walkForwardFrame1();
                f[3] = walkForwardFrame2();
                f[4] = walkForwardFrame2();
                f[5] = walkForwardFrame2();
                f[6] = walkForwardFrame3();
                f[7] = walkForwardFrame3();
                f[8] = walkForwardFrame3();
                f[9] = walkForwardFrame4();
                f[10] = walkForwardFrame4();
                f[11] = walkForwardFrame4();

                return f;
        }


        private static Frame walkBackFrame4(){
                Passive_HitBox bStandPHB1 = new Passive_HitBox(70,70,150,500);
                Passive_throw_HitBox bStandPTHB1 = new Passive_throw_HitBox(70,400,150,100);
                Push_HitBox bStandPB1 = new Push_HitBox(70,70,150,500);
                ArrayList<Passive_HitBox> phb = new ArrayList<Passive_HitBox>();
                ArrayList<Passive_throw_HitBox> pthb = new ArrayList<Passive_throw_HitBox>();
                phb.add(bStandPHB1);
                pthb.add(bStandPTHB1);
                Frame blueStandframe1 = new Frame(0.0,-8.0,phb,new ArrayList<Active_HitBox>(),pthb,new ArrayList<Active_throw_Hitbox>(),
                        bStandPB1,true,true,true,true,true);
                blueStandframe1.setSpriteWrap(138*5,0,138,138);
                return blueStandframe1;
        }

        private static Frame walkBackFrame3(){
                Passive_HitBox bStandPHB1 = new Passive_HitBox(70,70,150,500);
                Passive_throw_HitBox bStandPTHB1 = new Passive_throw_HitBox(70,400,150,100);
                Push_HitBox bStandPB1 = new Push_HitBox(70,70,150,500);
                ArrayList<Passive_HitBox> phb = new ArrayList<Passive_HitBox>();
                ArrayList<Passive_throw_HitBox> pthb = new ArrayList<Passive_throw_HitBox>();
                phb.add(bStandPHB1);
                pthb.add(bStandPTHB1);
                Frame blueStandframe1 = new Frame(0.0,-8.0,phb,new ArrayList<Active_HitBox>(),pthb,new ArrayList<Active_throw_Hitbox>(),
                        bStandPB1,true,true,true,true,true);
                blueStandframe1.setSpriteWrap(138*4,0,138,138);
                return blueStandframe1;
        }

        private static Frame walkBackFrame2(){
                Passive_HitBox bStandPHB1 = new Passive_HitBox(70,70,150,500);
                Passive_throw_HitBox bStandPTHB1 = new Passive_throw_HitBox(70,400,150,100);
                Push_HitBox bStandPB1 = new Push_HitBox(70,70,150,500);
                ArrayList<Passive_HitBox> phb = new ArrayList<Passive_HitBox>();
                ArrayList<Passive_throw_HitBox> pthb = new ArrayList<Passive_throw_HitBox>();
                phb.add(bStandPHB1);
                pthb.add(bStandPTHB1);
                Frame blueStandframe1 = new Frame(0.0,-8.0,phb,new ArrayList<Active_HitBox>(),pthb,new ArrayList<Active_throw_Hitbox>(),
                        bStandPB1,true,true,true,true,true);
                blueStandframe1.setSpriteWrap(138*3,0,138,138);
                return blueStandframe1;
        }

        private static Frame walkBackFrame1(){
                Passive_HitBox bStandPHB1 = new Passive_HitBox(70,70,150,500);
                Passive_throw_HitBox bStandPTHB1 = new Passive_throw_HitBox(70,400,150,100);
                Push_HitBox bStandPB1 = new Push_HitBox(70,70,150,500);
                ArrayList<Passive_HitBox> phb = new ArrayList<Passive_HitBox>();
                ArrayList<Passive_throw_HitBox> pthb = new ArrayList<Passive_throw_HitBox>();
                phb.add(bStandPHB1);
                pthb.add(bStandPTHB1);
                Frame blueStandframe1 = new Frame(0.0,-8.0,phb,new ArrayList<Active_HitBox>(),pthb,new ArrayList<Active_throw_Hitbox>(),
                        bStandPB1,true,true,true,true,true);
                blueStandframe1.setSpriteWrap(138*3,0,138,138);
                return blueStandframe1;
        }

        protected static Frame[] blueBWalk() {
                Frame[] f = new Frame[4];
                f[0] = walkBackFrame1();
                f[1] = walkBackFrame2();
                f[2] = walkBackFrame3();
                f[3] = walkBackFrame4();
                return f;
        }


        public static void main(String[] args) {
                Engine engine = new Engine(640, 480, new Vector3f(4.0f, 3.0f));
                engine.init();

                Vector3f BLUE = new Vector3f(0f,0f,1f); //passive_hit
                Vector3f RED = new Vector3f(1f,0f,0f); //active_hit
                Vector3f GREEN = new Vector3f(0f,1f,0f); //passive_throw
                Vector3f YELLOW = new Vector3f(1f,1f,0f); //Active throw
                Vector3f PURPLE = new Vector3f(1f,0f,1f); //pushbox


                String path = "textures/Sprite_sans_grille_9comp.png";
                String pathToBG = "textures/arena1.png";

                Frame f = generateStandFrame1();


                ObjectGl blue = new ObjectGl(0f, 138f, 138f, 4f, path, null);
                blue.setTextureWrap(f.getSprite()[0], f.getSprite()[1], f.getSprite()[2], f.getSprite()[3]);

                int posX = -750;
                int posY = 200;

                blue.translate(new Vector3f(posX,posY,0));

                engine.add_objectGl(blue);
                float posZ = 11f;

                for(Passive_HitBox h: f.getPassHitBox()){
                        Hitbox hh = new Hitbox(posZ,h.getSize_x(),h.getSize_y(),1f,BLUE);
                        engine.add_objectGl(hh);
                        hh.translate(new Vector3f(posX+h.getPosX(),posY+h.getPosY()));
                        posZ++;
                }
                for(Active_HitBox h: f.getActHitBox()){
                        Hitbox hh = new Hitbox(posZ,h.getSize_x(),h.getSize_y(),1f,RED);
                        engine.add_objectGl(hh);
                        hh.translate(new Vector3f(posX+h.getPosX(),posY+h.getPosY()));
                        posZ++;
                }
                for(Passive_throw_HitBox h: f.getPassThrowHitBox()){
                        Hitbox hh = new Hitbox(posZ,h.getSize_x(),h.getSize_y(),1f,GREEN);
                        engine.add_objectGl(hh);
                        hh.translate(new Vector3f(posX+h.getPosX(),posY+h.getPosY()));
                        posZ++;
                }
                for(Active_throw_Hitbox h: f.getActThrowHitBox()){
                        Hitbox hh = new Hitbox(posZ,h.getSize_x(),h.getSize_y(),1f,YELLOW);
                        engine.add_objectGl(hh);
                        hh.translate(new Vector3f(posX+h.getPosX(),posY+h.getPosY()));
                        posZ++;
                }

                Push_HitBox phb = f.getPushHitBox();
                Hitbox hh = new Hitbox(posZ,phb.getSize_x(),phb.getSize_y(),1f,PURPLE);
                engine.add_objectGl(hh);
                hh.translate(new Vector3f(posX+phb.getPosX(),posY+phb.getPosY()));

                engine.update();
                engine.render();

                double ts1 = System.currentTimeMillis();
                double ts2 = System.currentTimeMillis();
                while(ts2 - ts1 < 60000) {
                        ts2 = System.currentTimeMillis();
                }

        }

}