Rev 5640 | Go to most recent revision | Only display areas with differences | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 5640 | Rev 5651 | ||
---|---|---|---|
1 | #define MEMSIZE 0x3E80 |
1 | #define MEMSIZE 0x3E80 |
2 | #include "..\lib\kolibri.h" |
2 | #include "..\lib\kolibri.h" |
3 | #include "..\lib\gui.h" |
3 | #include "..\lib\gui.h" |
4 | #include "..\lib\strings.h" |
4 | #include "..\lib\strings.h" |
5 | #include "..\lib\random.h" |
5 | #include "..\lib\random.h" |
6 | #include "..\lib\mem.h" |
6 | #include "..\lib\mem.h" |
7 | #include "..\lib\file_system.h" |
7 | #include "..\lib\file_system.h" |
8 | 8 | ||
9 | #ifndef ru |
9 | #ifndef ru |
10 | char *BUTTONS_CAPTIONS[]={ |
10 | char *BUTTONS_CAPTIONS[]={ |
11 | "Ïåðåçàãðóçêà [Enter]"w, 13, |
11 | "Ïåðåçàãðóçêà [Enter]"w, 13, |
12 | "Âûêëþ÷åíèå [End]"w, 181, |
12 | "Âûêëþ÷åíèå [End]"w, 181, |
13 | //"ßäðî [Home]"w, 180, |
13 | //"ßäðî [Home]"w, 180, |
14 | "Îòìåíà [Esc]"w, 27, |
14 | "Îòìåíà [Esc]"w, 27, |
15 | 0}; |
15 | 0}; |
16 | #else |
16 | #else |
17 | char *BUTTONS_CAPTIONS[]={ |
17 | char *BUTTONS_CAPTIONS[]={ |
18 | " Reboot [Enter]",13, |
18 | " Reboot [Enter]",13, |
19 | " Power off [End]",181, |
19 | " Power off [End]",181, |
20 | //" Kernel [Home]",180, |
20 | //" Kernel [Home]",180, |
21 | " Close [Esc]",27, |
21 | " Close [Esc]",27, |
22 | 0}; |
22 | 0}; |
23 | #endif |
23 | #endif |
24 | 24 | ||
25 | system_colors sc; |
25 | system_colors sc; |
26 | 26 | ||
27 | unsigned char moon[6*6] = FROM "moon.raw"; |
27 | unsigned char moon[6*6] = FROM "moon.raw"; |
28 | 28 | ||
29 | int WIN_SIZE_X, WIN_SIZE_Y; |
29 | int WIN_SIZE_X, WIN_SIZE_Y; |
30 | int PANEL_X, PANEL_Y; |
30 | int PANEL_X, PANEL_Y; |
31 | 31 | ||
32 | #define NIGHT_PALEL_HEIGHT 50 |
32 | #define NIGHT_PALEL_HEIGHT 50 |
33 | #define STARS_COUNT 25 |
33 | #define STARS_COUNT 25 |
34 | 34 | ||
35 | #define PANEL_SIZE_X 260 |
35 | #define PANEL_SIZE_X 260 |
36 | #define PANEL_SIZE_Y 148 |
36 | #define PANEL_SIZE_Y 148 |
37 | 37 | ||
38 | :void ShadowScreen(dword img, w, h) |
38 | :void ShadowScreen(dword img, w, h) |
39 | { |
39 | { |
40 | dword to = w*h*3 + img; |
40 | dword to = w*h*3 + img; |
41 | for ( ; img < to; img+=4) |
41 | for ( ; img < to; img+=4) |
42 | { |
42 | { |
43 | ESDWORD[img] >>= 1; |
43 | ESDWORD[img] >>= 1; |
44 | $and ESDWORD[img], 7F7F7F7Fh |
44 | $and ESDWORD[img], 7F7F7F7Fh |
45 | } |
45 | } |
46 | //for ( ; img < to; img+=4) { ESDWORD[img] >>= 2; $and ESDWORD[img], 3F3F3F3Fh } |
46 | //for ( ; img < to; img+=4) { ESDWORD[img] >>= 2; $and ESDWORD[img], 3F3F3F3Fh } |
47 | } |
47 | } |
48 | 48 | ||
49 | 49 | ||
50 | void main() |
50 | void main() |
51 | { |
51 | { |
52 | int key; |
52 | int key; |
53 | dword s1,s2, s3, s4, sides_w,i; |
53 | dword s1,s2, s3, s4, sides_w,i; |
54 | - | ||
55 | mem_Init(); |
54 | |
56 | WIN_SIZE_X=GetScreenWidth()+1; |
55 | WIN_SIZE_X=GetScreenWidth()+1; |
57 | WIN_SIZE_Y=GetScreenHeight()+1; |
56 | WIN_SIZE_Y=GetScreenHeight()+1; |
58 | PANEL_X=WIN_SIZE_X-PANEL_SIZE_X/2; |
57 | PANEL_X=WIN_SIZE_X-PANEL_SIZE_X/2; |
59 | PANEL_Y=WIN_SIZE_Y-PANEL_SIZE_Y/2; |
58 | PANEL_Y=WIN_SIZE_Y-PANEL_SIZE_Y/2; |
60 | 59 | ||
61 | sides_w = WIN_SIZE_X-PANEL_SIZE_X/2; |
60 | sides_w = WIN_SIZE_X-PANEL_SIZE_X/2; |
62 | s1 = mem_Alloc(WIN_SIZE_X*PANEL_Y*3); |
61 | s1 = mem_Alloc(WIN_SIZE_X*PANEL_Y*3); |
63 | s2 = mem_Alloc(sides_w*PANEL_Y*3); |
62 | s2 = mem_Alloc(sides_w*PANEL_Y*3); |
64 | s3 = mem_Alloc(sides_w*PANEL_Y*3); |
63 | s3 = mem_Alloc(sides_w*PANEL_Y*3); |
65 | s4 = mem_Alloc(WIN_SIZE_X*PANEL_Y*3); |
64 | s4 = mem_Alloc(WIN_SIZE_X*PANEL_Y*3); |
66 | 65 | ||
67 | CopyScreen(s1, 0, 0, WIN_SIZE_X, PANEL_Y); |
66 | CopyScreen(s1, 0, 0, WIN_SIZE_X, PANEL_Y); |
68 | ShadowScreen(s1, WIN_SIZE_X, PANEL_Y); |
67 | ShadowScreen(s1, WIN_SIZE_X, PANEL_Y); |
69 | 68 | ||
70 | CopyScreen(s2, 0, PANEL_Y, sides_w, PANEL_SIZE_Y+1); |
69 | CopyScreen(s2, 0, PANEL_Y, sides_w, PANEL_SIZE_Y+1); |
71 | ShadowScreen(s2, sides_w, PANEL_SIZE_Y+1); |
70 | ShadowScreen(s2, sides_w, PANEL_SIZE_Y+1); |
72 | 71 | ||
73 | CopyScreen(s3, sides_w+PANEL_SIZE_X+1, PANEL_Y, sides_w-1, PANEL_SIZE_Y+1); |
72 | CopyScreen(s3, sides_w+PANEL_SIZE_X+1, PANEL_Y, sides_w-1, PANEL_SIZE_Y+1); |
74 | ShadowScreen(s3, sides_w, PANEL_SIZE_Y+1); |
73 | ShadowScreen(s3, sides_w, PANEL_SIZE_Y+1); |
75 | 74 | ||
76 | CopyScreen(s4, 0, PANEL_Y+PANEL_SIZE_Y+1, WIN_SIZE_X, PANEL_Y-1); |
75 | CopyScreen(s4, 0, PANEL_Y+PANEL_SIZE_Y+1, WIN_SIZE_X, PANEL_Y-1); |
77 | ShadowScreen(s4, WIN_SIZE_X, PANEL_Y-1); |
76 | ShadowScreen(s4, WIN_SIZE_X, PANEL_Y-1); |
78 | 77 | ||
79 | 78 | ||
80 | goto _DRAW; |
79 | goto _DRAW; |
81 | loop() |
80 | loop() |
82 | { |
81 | { |
83 | WaitEventTimeout(7); |
82 | WaitEventTimeout(7); |
84 | switch(EAX & 0xFF) |
83 | switch(EAX & 0xFF) |
85 | { |
84 | { |
86 | case evButton: |
85 | case evButton: |
87 | key=GetButtonID(); |
86 | key=GetButtonID(); |
88 | if (key==1) ExitProcess(); |
87 | if (key==1) ExitProcess(); |
89 | GOTO _BUTTON_MARK; |
88 | GOTO _BUTTON_MARK; |
90 | 89 | ||
91 | case evKey: |
90 | case evKey: |
92 | key = GetKey(); |
91 | key = GetKey(); |
93 | _BUTTON_MARK: |
92 | _BUTTON_MARK: |
94 | if (key== 13) ExitSystem(REBOOT); //ENTER |
93 | if (key== 13) ExitSystem(REBOOT); //ENTER |
95 | if (key==180) ExitSystem(KERNEL); //HOME |
94 | if (key==180) ExitSystem(KERNEL); //HOME |
96 | if (key==181) ExitSystem(TURN_OFF); //END |
95 | if (key==181) ExitSystem(TURN_OFF); //END |
97 | if (key== 27) ExitProcess(); //ESC |
96 | if (key== 27) ExitProcess(); //ESC |
98 | if (key== 19) //CTRL+S |
97 | if (key== 19) //CTRL+S |
99 | { |
98 | { |
100 | RunProgram("rdsave",0); |
99 | RunProgram("rdsave",0); |
101 | ExitProcess(); |
100 | ExitProcess(); |
102 | } |
101 | } |
103 | break; |
102 | break; |
104 | 103 | ||
105 | case evReDraw: |
104 | case evReDraw: |
106 | sc.get(); |
105 | sc.get(); |
107 | DefineAndDrawWindow(0,0,WIN_SIZE_X, WIN_SIZE_Y, 0x01, 0, 0, 0x01fffFFF); |
106 | DefineAndDrawWindow(0,0,WIN_SIZE_X, WIN_SIZE_Y, 0x01, 0, 0, 0x01fffFFF); |
108 | //_PutImage(0,0,WIN_SIZE_X,WIN_SIZE_Y,shadow_buf); |
107 | //_PutImage(0,0,WIN_SIZE_X,WIN_SIZE_Y,shadow_buf); |
109 | _PutImage(0,0,WIN_SIZE_X, PANEL_Y,s1); |
108 | _PutImage(0,0,WIN_SIZE_X, PANEL_Y,s1); |
110 | _PutImage(0,PANEL_Y,sides_w, PANEL_SIZE_Y+1,s2); |
109 | _PutImage(0,PANEL_Y,sides_w, PANEL_SIZE_Y+1,s2); |
111 | _PutImage(sides_w+PANEL_SIZE_X+1,PANEL_Y,sides_w-1, PANEL_SIZE_Y+1,s3); |
110 | _PutImage(sides_w+PANEL_SIZE_X+1,PANEL_Y,sides_w-1, PANEL_SIZE_Y+1,s3); |
112 | _PutImage(0,PANEL_Y+PANEL_SIZE_Y+1,WIN_SIZE_X, PANEL_Y-1,s4); |
111 | _PutImage(0,PANEL_Y+PANEL_SIZE_Y+1,WIN_SIZE_X, PANEL_Y-1,s4); |
113 | draw_main_area(PANEL_X, PANEL_Y, PANEL_SIZE_X, PANEL_SIZE_Y); |
112 | draw_main_area(PANEL_X, PANEL_Y, PANEL_SIZE_X, PANEL_SIZE_Y); |
114 | break; |
113 | break; |
115 | default: _DRAW: |
114 | default: _DRAW: |
116 | draw_stars(); |
115 | draw_stars(); |
117 | } |
116 | } |
118 | } |
117 | } |
119 | } |
118 | } |
120 | 119 | ||
121 | 120 | ||
122 | void draw_main_area() |
121 | void draw_main_area() |
123 | { |
122 | { |
124 | int i=0; |
123 | int i=0; |
125 | 124 | ||
126 | DrawRectangle(PANEL_X, PANEL_Y, PANEL_SIZE_X, PANEL_SIZE_Y, 0); |
125 | DrawRectangle(PANEL_X, PANEL_Y, PANEL_SIZE_X, PANEL_SIZE_Y, 0); |
127 | DrawBar(PANEL_X+1, PANEL_Y+NIGHT_PALEL_HEIGHT+1, PANEL_SIZE_X-1, PANEL_SIZE_Y-NIGHT_PALEL_HEIGHT-1, sc.work); |
126 | DrawBar(PANEL_X+1, PANEL_Y+NIGHT_PALEL_HEIGHT+1, PANEL_SIZE_X-1, PANEL_SIZE_Y-NIGHT_PALEL_HEIGHT-1, sc.work); |
128 | 127 | ||
129 | for (i=0; i<3; i++) |
128 | for (i=0; i<3; i++) |
130 | { |
129 | { |
131 | DefineButton(PANEL_X+33, i*23 + PANEL_Y+NIGHT_PALEL_HEIGHT+16, 190,19, BUTTONS_CAPTIONS[i*2+1],sc.work_button); |
130 | DefineButton(PANEL_X+33, i*23 + PANEL_Y+NIGHT_PALEL_HEIGHT+16, 190,19, BUTTONS_CAPTIONS[i*2+1],sc.work_button); |
132 | WriteText(PANEL_X+59, i*23 + PANEL_Y+NIGHT_PALEL_HEIGHT+22, 0x80,sc.work_button_text, BUTTONS_CAPTIONS[i*2]); |
131 | WriteText(PANEL_X+59, i*23 + PANEL_Y+NIGHT_PALEL_HEIGHT+22, 0x80,sc.work_button_text, BUTTONS_CAPTIONS[i*2]); |
133 | } |
132 | } |
134 | 133 | ||
135 | draw_stars(); |
134 | draw_stars(); |
136 | } |
135 | } |
137 | 136 | ||
138 | dword stars_col[4]={0xD2CF19, 0x716900, 0x002041, 0xEAE0DE}; //0x005BFF - ãîëóáîé, ðåäêî |
137 | dword stars_col[4]={0xD2CF19, 0x716900, 0x002041, 0xEAE0DE}; //0x005BFF - ãîëóáîé, ðåäêî |
139 | 138 | ||
140 | void draw_stars() |
139 | void draw_stars() |
141 | { |
140 | { |
142 | 141 | ||
143 | int i, x_pic, y_pic, col; |
142 | int i, x_pic, y_pic, col; |
144 | 143 | ||
145 | DrawBar(PANEL_X+1, PANEL_Y+1, PANEL_SIZE_X-1, NIGHT_PALEL_HEIGHT, 0x002041); |
144 | DrawBar(PANEL_X+1, PANEL_Y+1, PANEL_SIZE_X-1, NIGHT_PALEL_HEIGHT, 0x002041); |
146 | 145 | ||
147 | for (i=0; i |
146 | for (i=0; i |
148 | { |
147 | { |
149 | x_pic = random(PANEL_SIZE_X-2); |
148 | x_pic = random(PANEL_SIZE_X-2); |
150 | y_pic = random(NIGHT_PALEL_HEIGHT-2); |
149 | y_pic = random(NIGHT_PALEL_HEIGHT-2); |
151 | col = random(4); |
150 | col = random(4); |
152 | PutPixel(PANEL_X+2 +x_pic, PANEL_Y+2 +y_pic, stars_col[col]); |
151 | PutPixel(PANEL_X+2 +x_pic, PANEL_Y+2 +y_pic, stars_col[col]); |
153 | if (stars_col[col]==0xD2CF19) |
152 | if (stars_col[col]==0xD2CF19) |
154 | { |
153 | { |
155 | PutPixel(PANEL_X+2 +x_pic+1, PANEL_Y+2 +y_pic, stars_col[col+1]); |
154 | PutPixel(PANEL_X+2 +x_pic+1, PANEL_Y+2 +y_pic, stars_col[col+1]); |
156 | PutPixel(PANEL_X+2 +x_pic-1, PANEL_Y+2 +y_pic, stars_col[col+1]); |
155 | PutPixel(PANEL_X+2 +x_pic-1, PANEL_Y+2 +y_pic, stars_col[col+1]); |
157 | PutPixel(PANEL_X+2 +x_pic, PANEL_Y+2 +y_pic-1, stars_col[col+1]); |
156 | PutPixel(PANEL_X+2 +x_pic, PANEL_Y+2 +y_pic-1, stars_col[col+1]); |
158 | PutPixel(PANEL_X+2 +x_pic, PANEL_Y+2 +y_pic+1, stars_col[col+1]); |
157 | PutPixel(PANEL_X+2 +x_pic, PANEL_Y+2 +y_pic+1, stars_col[col+1]); |
159 | } |
158 | } |
160 | 159 | ||
161 | } |
160 | } |
162 | _PutImage(PANEL_X+PANEL_SIZE_X-60+random(3),PANEL_Y+10+random(3), 6,6, #moon); |
161 | _PutImage(PANEL_X+PANEL_SIZE_X-60+random(3),PANEL_Y+10+random(3), 6,6, #moon); |
163 | } |
162 | } |
164 | 163 | ||
165 | 164 | ||
166 | 165 | ||
167 | 166 | ||
168 | 167 | ||
169 | stop:3;>>> |
168 | stop:3;>>> |