AkurAI Build
Menu

BifrOSt

public

Latest change 9cfe2016fbf1878ce207be2c8033c38d11ec899e - Release BifrOSt 0.2.0 by Ólafur Búi Ólafsson

Window.SetBackgroundTopColor(0.027, 0.067, 0.122);
Window.SetBackgroundBottomColor(0.051, 0.133, 0.200);

logo.image = Image("watermark.png");
logo.sprite = Sprite(logo.image);
logo.sprite.SetPosition(
    Window.GetX() + Window.GetWidth() / 2 - logo.image.GetWidth() / 2,
    Window.GetY() + Window.GetHeight() * 0.40 - logo.image.GetHeight() / 2,
    10
);

progress.track.image = Image("progress-track.png");
progress.track.sprite = Sprite(progress.track.image);
progress.x = Window.GetX() + Window.GetWidth() / 2 - progress.track.image.GetWidth() / 2;
progress.y = Window.GetY() + Window.GetHeight() * 0.67;
progress.track.sprite.SetPosition(progress.x, progress.y, 10);

progress.fill.original = Image("progress-fill.png");
progress.fill.sprite = Sprite();
progress.fill.sprite.SetPosition(progress.x + 2, progress.y + 1, 11);
progress.target = 0.015;
progress.visible = 0.015;
progress.width = 0;
status = "normal";

fun refresh_callback()
  {
    if (status == "normal")
      {
        progress.visible += (progress.target - progress.visible) * 0.12;
        local.width = Math.Int(progress.fill.original.GetWidth() * progress.visible);
        if (local.width < 1)
          local.width = 1;
        if (local.width != progress.width)
          {
            progress.width = local.width;
            progress.fill.image = progress.fill.original.Scale(local.width, progress.fill.original.GetHeight());
            progress.fill.sprite.SetImage(progress.fill.image);
          }
      }
  }

Plymouth.SetRefreshFunction(refresh_callback);

fun progress_callback(duration, fraction)
  {
    if (fraction > progress.target)
      progress.target = fraction;
  }

Plymouth.SetBootProgressFunction(progress_callback);

fun dialog_setup()
  {
    dialog.prompt.image = Image("password-prompt.png");
    dialog.prompt.sprite = Sprite(dialog.prompt.image);
    dialog.prompt.sprite.SetPosition(
        Window.GetX() + Window.GetWidth() / 2 - dialog.prompt.image.GetWidth() / 2,
        Window.GetY() + Window.GetHeight() * 0.59,
        100
    );
  }

fun dialog_opacity(opacity)
  {
    if (dialog.prompt.sprite)
      dialog.prompt.sprite.SetOpacity(opacity);
  }

fun display_normal_callback()
  {
    status = "normal";
    dialog_opacity(0);
    progress.track.sprite.SetOpacity(1);
    progress.fill.sprite.SetOpacity(1);
  }

fun display_password_callback(prompt, bullets)
  {
    status = "password";
    if (!dialog.prompt.sprite)
      dialog_setup();

    # The field deliberately does not echo typed characters.

    dialog_opacity(1);
    progress.track.sprite.SetOpacity(0);
    progress.fill.sprite.SetOpacity(0);
  }

Plymouth.SetDisplayNormalFunction(display_normal_callback);
Plymouth.SetDisplayPasswordFunction(display_password_callback);

message.sprite = Sprite();
message.sprite.SetPosition(Window.GetX() + 24, Window.GetY() + 24, 1000);

fun display_message_callback(text)
  {
    message.image = Image.Text(text, 0.75, 0.86, 0.91);
    message.sprite.SetImage(message.image);
  }

fun hide_message_callback(text)
  {
    message.sprite.SetImage(Image.Text("", 1, 1, 1));
  }

Plymouth.SetDisplayMessageFunction(display_message_callback);
Plymouth.SetHideMessageFunction(hide_message_callback);

fun quit_callback()
  {
    progress.target = 1;
  }

Plymouth.SetQuitFunction(quit_callback);