gdjs.LoadingScreenPixiRenderer = function(runtimeGamePixiRenderer, loadingScreenSetup) {
  this._pixiRenderer = runtimeGamePixiRenderer.getPIXIRenderer();
  if (!this._pixiRenderer) {
    // A PIXI Renderer can be missing during tests, when creating a runtime game
    // without a canvas.
    return;
  }

  this._loadingScreen = new PIXI.Container();

  this._progressText = new PIXI.Text(' ', {
    fontSize: '30px',
    fontFamily: 'Arial',
    fill: '#FFFFFF',
    align: 'center',
  });
  this._loadingScreen.addChild(this._progressText);

  if (loadingScreenSetup && loadingScreenSetup.showGDevelopSplash) {
    this._madeWithText = new PIXI.Text('Made with', {
      fontSize: '30px',
      fontFamily: 'Arial',
      fill: '#FFFFFF',
      align: 'center',
    });
    this._madeWithText.position.y = this._pixiRenderer.height / 2 - 130;
    this._websiteText = new PIXI.Text('gdevelop-app.com', {
      fontSize: '30px',
      fontFamily: 'Arial',
      fill: '#FFFFFF',
      align: 'center',
    });
    this._websiteText.position.y = this._pixiRenderer.height / 2 + 100;

    this._splashImage = new PIXI.Sprite.fromImage(gdjs.splashImage);
    this._splashImage.position.x = this._pixiRenderer.width / 2;
    this._splashImage.position.y = this._pixiRenderer.height / 2;
    this._splashImage.anchor.x = 0.5;
    this._splashImage.anchor.y = 0.5;
    this._splashImage.scale.x = this._pixiRenderer.width / 800;
    this._splashImage.scale.y = this._pixiRenderer.width / 800;
    this._loadingScreen.addChild(this._splashImage);
    this._loadingScreen.addChild(this._madeWithText);
    this._loadingScreen.addChild(this._websiteText);
  }
};

gdjs.LoadingScreenRenderer = gdjs.LoadingScreenPixiRenderer; //Register the class to let the engine use it.

gdjs.LoadingScreenPixiRenderer.prototype.render = function(percent) {
  if (!this._pixiRenderer) {
    return;
  }

  var screenBorder = 10;

  if (this._madeWithText) {
    this._madeWithText.position.x =
      this._pixiRenderer.width / 2 - this._madeWithText.width / 2;
    this._madeWithText.position.y =
      this._pixiRenderer.height / 2 -
      this._splashImage.height / 2 -
      this._madeWithText.height -
      20;
  }
  if (this._websiteText) {
    this._websiteText.position.x =
      this._pixiRenderer.width - this._websiteText.width - screenBorder;
    this._websiteText.position.y =
      this._pixiRenderer.height - this._websiteText.height - screenBorder;
  }

  this._progressText.text = percent + '%';
  this._progressText.position.x = screenBorder;
  this._progressText.position.y =
    this._pixiRenderer.height - this._progressText.height - screenBorder;

  this._pixiRenderer.render(this._loadingScreen);
};

gdjs.LoadingScreenPixiRenderer.prototype.unload = function() {
  // Nothing to do
};
