Source: app01a/app.js

/**
 * @author    Wolfgang Kowarschick <kowa@hs-augsburg.de>
 * @copyright 2017 - 2018
 * @license   CC-BY-NC-SA-4.0
 */

/**
 * @module app01a/app
 */

import                    '/css/app.css';
import wait          from '/wk/util/wait';
import GameLoop      from '/wk/game/GameLoop';
import {Application} from 'pixi.js';

import ModelStage    from './model/ModelStage';
import ModelCircle   from './model/ModelCircle';
import Updater       from './model/Updater';

import ViewCircle    from './view/ViewCircle';
import Renderer      from './view/Renderer';

const
  c_view_stage
    = document.getElementById('stage'),

  c_pixi_app =
    new Application
        ( document.documentElement.clientWidth,
          document.documentElement.clientHeight,
          { transparent: true,
            view:        c_view_stage
          }
        ),

  c_model_stage =
    new ModelStage
        ({ "left":   0,
           "right":  document.documentElement.clientWidth,
           "top":    0,
           "bottom": document.documentElement.clientHeight
        }),

  c_model_ball =
    new ModelCircle
        ({ "r":   75,
           "x":   75,
           "y":   75,
           "vx": 400,
           "vy": 300
        }),

  c_view_ball =
    new ViewCircle
        ( c_pixi_app,
          c_model_ball,
          { "border":      5,
            "borderColor": "#666666",
            "color":       "#FF77AA"
          }
        ),

  f_update =
    new Updater({stage: c_model_stage, ball: c_model_ball}).update,

  f_render =
    new Renderer([c_view_ball]).render;

async function init()
{ c_view_stage.classList.remove('hidden');
  await wait(500);
  new GameLoop({update: f_update, render: f_render}).start();
}

window.addEventListener('load', init);