@Override
    public void run() {
        while (t != null) {
            for (SubSystem system : systems) {
                system.processOneGameTick(0);
                System.out.println(system.getSimpleName());
            }
            renderingSystem.processOneGameTick(0);
            repaint();
            try {
                Thread.sleep(1000/60);
            } catch (InterruptedException ex) {
                Logger.getLogger(LLP.class.getName()).log(Level.SEVERE, null, ex);
            }
            if(GAME_STATE != CHANGE_STATE){
                switch(CHANGE_STATE){
                    case 0:
                        loadStart();
                        break;
                    case 1:
                        loadLevel();
                        break;
                    case 2:
                        loadRestart();
                        break;
                    case 3:
                        loadWin();
                        break;
                }
            }
        }
    }