summaryrefslogtreecommitdiff
path: root/plymouth/themes/redcore/redcore.script
blob: e8601ba58576d0c4932a9bfd3b199dec90b709fb (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
redcore_wall = Image("background.png");
screen_ratio = Window.GetHeight() / Window.GetWidth();
wall_image_ratio = redcore_wall.GetHeight() / redcore_wall.GetWidth();

if (screen_ratio > wall_image_ratio)
  {  # Screen ratio is taller than image ratio, we will match the screen height
     scale_factor =  Window.GetHeight() / redcore_wall.GetHeight();
  }
else
  {  # Screen ratio is wider than image ratio, we will match the screen width
     scale_factor =  Window.GetWidth() / redcore_wall.GetWidth();
  }

scaled_wall_image = redcore_wall.Scale(redcore_wall.GetWidth() * scale_factor, redcore_wall.GetHeight() * scale_factor);
redcore_sprite = Sprite(scaled_wall_image); 		# Create a sprite using the scaled image

redcore_sprite.SetX(Window.GetWidth()  / 2 - scaled_wall_image.GetWidth() / 2); 	# Place it in the centre
redcore_sprite.SetY(Window.GetHeight() / 2 - scaled_wall_image.GetHeight() / 2);
redcore_sprite.setZ(-100);

#----------------------------------------- Logo -----------------------------------------

logo.image = Image("redcore-logo.png");
logo.sprite = Sprite(logo.image);
logo.opacity_angle = 0;     				# enable this if blinking logo is also activated

# Those lines will position the logo in the center, with fixed opacity
# Disable for blinking logo

#logo.sprite.SetX (Window.GetX() + Window.GetWidth()  / 2 - logo.image.GetWidth()  / 2);
#logo.sprite.SetY (Window.GetY() + Window.GetHeight() / 2 - logo.image.GetHeight() / 2);

#------------------------------------- Blinking logo ------------------------------------

# Uncomment bellow, but make sure to coment the above 2 lines, for a blinking logo

fun refresh_callback ()
  {
    if (status == "normal")
      {
        logo.opacity_angle += ((2 * 3.14) / 50) * 0.3;  # 0.3 HZ
        min_opacity = 0.3;
        opacity = (Math.Cos(logo.opacity_angle) + 1) / 2;
        opacity *= 1 - min_opacity;
        opacity += min_opacity;
        logo.sprite.SetX (Window.GetX() + Window.GetWidth()  / 2 - logo.image.GetWidth()  / 2);
        logo.sprite.SetY (Window.GetY() + Window.GetHeight() / 2 - logo.image.GetHeight() / 2);
        logo.sprite.SetOpacity (opacity);
      }
    else
      {
       logo.sprite.SetX (0);
       logo.sprite.SetY (0);
       logo.sprite.SetOpacity (1);
      }
  }
  
 Plymouth.SetRefreshFunction (refresh_callback);
 status = "normal";

#--------------------------------------- Progress Bar ----------------------------------

progress_bar.original_image = Image("progress_bar.png");
progress_bar.sprite = Sprite();

progress_bar.x = Window.GetX() + Window.GetWidth()  / 2 - progress_bar.original_image.GetWidth() / 2;
progress_bar.y = Window.GetY() + Window.GetHeight() / 2 * 1.5; # Place it at 3/4 from top
progress_bar.sprite.SetPosition(progress_bar.x, progress_bar.y, 1);
progress_bar.sprite.SetOpacity (0.35);
 
fun progress_callback (duration, progress)
  {
    if (progress_bar.image.GetWidth () != Math.Int (progress_bar.original_image.GetWidth () * progress))
      {
        progress_bar.image = progress_bar.original_image.Scale(progress_bar.original_image.GetWidth(progress_bar.original_image) * progress, progress_bar.original_image.GetHeight());
        progress_bar.sprite.SetImage (progress_bar.image);
      }
  }

Plymouth.SetBootProgressFunction(progress_callback);

#----------------------------------------- Quit ----------------------------------------

fun quit_callback ()
{
  logo.sprite.SetOpacity (1);
}

Plymouth.SetQuitFunction(quit_callback);