Mine: slightly update UI

KolibriN Installer: translation, add complete frame

git-svn-id: svn://kolibrios.org@7661 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
Kirill Lipatov (Leency) 2019-05-21 18:04:27 +00:00
parent e1a32382fd
commit 4b31a55f25
6 changed files with 98 additions and 47 deletions

View File

@ -3,9 +3,17 @@
#include "../lib/io.h" #include "../lib/io.h"
#include "../lib/gui.h" #include "../lib/gui.h"
#include "../lib/copyf.h" #include "../lib/copyf.h"
#include "../lib/obj/libini.h" #include "../lib/obj/libini.h"
#include "../lib/obj/libio.h"
#include "../lib/obj/libimg.h"
#include "../lib/patterns/restart_process.h" #include "../lib/patterns/restart_process.h"
#ifndef AUTOBUILD
#include "lang.h--"
#endif
char logo[] = " char logo[] = "
ÛÛÛÛ ÛÛÛÛ ÛÛÛÛÛÛÛÛÛÛ ÛÛÛÛ ÛÛÛÛ ÛÛÛÛÛÛÛÛÛÛÛ ÛÛÛÛ ÛÛÛÛ ÛÛÛÛÛÛÛÛÛÛ ÛÛÛÛ ÛÛÛÛ ÛÛÛÛÛÛÛÛÛÛÛ
ÛÛÛÛ ÛÛ ÛÛÛ ÛÛÛ ÛÛÛ ÛÛ ÛÛÛ ÛÛ ÛÛÛÛ ÛÛ ÛÛÛ ÛÛÛ ÛÛÛ ÛÛ ÛÛÛ ÛÛ
@ -16,14 +24,28 @@ char logo[] = "
ÛÛÛÛ ÛÛÛ ÛÛÛÛÛÛÛÛÛÛ ÛÛÛÛ ÛÛÛÛ ÛÛÛÛÛ ÛÛÛÛ ÛÛÛ ÛÛÛÛÛÛÛÛÛÛ ÛÛÛÛ ÛÛÛÛ ÛÛÛÛÛ
"; ";
char intro[] = "<EFBFBD>®¯à®¡ã©â¥ ­®¢®¥ ¢¨§ã «ì­®¥ ®ä®à¬«¥­¨¥ Š®«¨¡à¨, ª®â®à®¥ à ­ìè¥ ¡ë«® ¤®áâ㯭® ⮫쪮 ¢ KolibriNext."; #ifdef LANG_RUS
#define T_INTRO "<22>®¯à®¡ã©â¥ ­®¢®¥ ¢¨§ã «ì­®¥ ®ä®à¬«¥­¨¥ Š®«¨¡à¨, ª®â®à®¥ à ­ìè¥ ¡ë«® ¤®áâ㯭® ⮫쪮 ¢ KolibriNext.";
#define T_INSTALL "“áâ ­®¢¨âì"
#define T_COMPLETE "“áâ ­®¢ª  § ¢¥à襭 "
#define T_EXIT "‚ë室"
#else
#define T_INTRO "Try a new visual design of KolibriOS, which previously was available only in KolibriNext.";
#define T_INSTALL "Install"
#define T_COMPLETE "Install complete"
#define T_EXIT "Exit"
#endif
#define B_INSTALL 10 #define B_INSTALL 10
bool install_complete = false;
void main() void main()
{ {
word btn; word btn;
load_dll(libini, #lib_init,1); load_dll(libini, #lib_init,1);
load_dll(libio, #libio_init,1);
load_dll(libimg, #libimg_init,1);
loop() switch(WaitEventTimeout(300) & 0xFF) loop() switch(WaitEventTimeout(300) & 0xFF)
{ {
case evButton: case evButton:
@ -35,6 +57,10 @@ void main()
case evKey: case evKey:
GetKeys(); GetKeys();
if (key_scancode == SCAN_CODE_ESC) ExitProcess(); if (key_scancode == SCAN_CODE_ESC) ExitProcess();
if (key_scancode == SCAN_CODE_ENTER) {
if (install_complete) ExitProcess();
else EventInstall();
}
break; break;
case evReDraw: case evReDraw:
@ -54,21 +80,31 @@ void draw_window()
system.color.get(); system.color.get();
DefineAndDrawWindow(screen.width-WINW/2,screen.height-WINH/2, DefineAndDrawWindow(screen.width-WINW/2,screen.height-WINH/2,
WINW+9,WINH+skin_height,0x34,system.color.work,"KolibriN10",0); WINW+9,WINH+skin_height,0x34,system.color.work,"KolibriN10",0);
DrawLogo(); DrawLogo();
if (install_complete) DrawInstallComplete(); else DrawIntro();
}
void DrawIntro()
{
DrawTextViewArea(30, 140, WINW-60, WINH-80, DrawTextViewArea(30, 140, WINW-60, WINH-80,
#intro, -1, system.color.work_text); T_INTRO, -1, system.color.work_text);
DrawCaptButton(WINW-110/2, WINH-70, 110, 28, B_INSTALL, DrawCaptButton(WINW-110/2, WINH-70, 110, 28, B_INSTALL,
0x0092D8, 0xFFFfff, "“áâ ­®¢¨âì"); 0x0092D8, 0xFFFfff, T_INSTALL);
}
void DrawInstallComplete()
{
DrawIcon32(WINW-32/2, 140, system.color.work, 49);
WriteTextCenter(0,185, WINW, system.color.work_text, T_COMPLETE);
DrawCaptButton(WINW-110/2, WINH-70, 110, 28, CLOSE_BTN,
0x0092D8, 0xFFFfff, T_EXIT);
} }
void DrawLogo() void DrawLogo()
{ {
#define LX -46*6+WINW/2 #define LX -46*6+WINW/2
#define LY 25 #define LY 25
WriteTextLines(LX-1, LY, 0x80, 0x9F87B8, #logo, 9); WriteTextLines(LX-2, LY, 0x80, 0xF497C0, #logo, 9);
WriteTextLines(LX+3, LY, 0x80, 0x7ED1E3, #logo, 9); WriteTextLines(LX+3, LY, 0x80, 0x7ED1E3, #logo, 9);
pause(1); pause(1);
@ -77,9 +113,6 @@ void DrawLogo()
WriteTextLines(LX, LY, 0x80, 0xEC008C, #logo, 9); WriteTextLines(LX, LY, 0x80, 0xEC008C, #logo, 9);
} }
void EventInstall() void EventInstall()
{ {
//#include "..\lib\added_sysdir.c"; //#include "..\lib\added_sysdir.c";
@ -92,6 +125,9 @@ void EventInstall()
RestartProcessByName("/sys/@docky", SINGLE); RestartProcessByName("/sys/@docky", SINGLE);
RunProgram("/sys/media/kiv", "\\S__/kolibrios/res/Wallpapers/Free yourself.jpg"); RunProgram("/sys/media/kiv", "\\S__/kolibrios/res/Wallpapers/Free yourself.jpg");
install_complete = true;
draw_window();
} }
void Operation_Draw_Progress(dword filename) { debug("copying: "); debugln(filename); } void Operation_Draw_Progress(dword filename) { debug("copying: "); debugln(filename); }

View File

@ -41,10 +41,13 @@
:void DrawRectangle(dword x,y,w,h,color1) :void DrawRectangle(dword x,y,w,h,color1)
{ {
DrawRectangle3D(x,y,w,h,color1,color1);
/*
DrawBar(x,y,w,1,color1); DrawBar(x,y,w,1,color1);
DrawBar(x,y+h,w,1,color1); DrawBar(x,y+h,w,1,color1);
DrawBar(x,y,1,h,color1); DrawBar(x,y,1,h,color1);
DrawBar(x+w,y,1,h+1,color1); DrawBar(x+w,y,1,h+1,color1);
*/
} }
:void DrawWideRectangle(dword x,y,w,h,boder,color1) :void DrawWideRectangle(dword x,y,w,h,boder,color1)

View File

@ -89,10 +89,9 @@ inline fastcall dword CheckEvent()
$int 0x40 $int 0x40
} }
:dword WaitEventTimeout(dword time) inline fastcall dword WaitEventTimeout(EBX)
{ {
EAX = 23; EAX = 23;
EBX = time;
$int 0x40 $int 0x40
} }

View File

@ -18,6 +18,9 @@
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*******************************************************************************/ *******************************************************************************/
?define HEADER_Y 4
?define BTNSIZE 19
char game_mode[] = "1/3";
void draw_window() // Ïðîöåäóðà îòðèñîâêè îêíà void draw_window() // Ïðîöåäóðà îòðèñîâêè îêíà
{ {
@ -25,28 +28,32 @@ void draw_window() //
// WINDOW // WINDOW
sys_window_redraw(1); sys_window_redraw(1);
EBX = xpos << 16 + xsize; EBX = xpos << 16 + xsize + 9;
ECX = ypos << 16 + ysize; ECX = ypos << 16 + ysize;
sys_draw_window(EBX, ECX, 0x14CCCCCC, colors.w_work | 0x80000000, "MineSweeper"); sys_draw_window(EBX, ECX, 0x34CCCCCC, colors.w_work | 0x80000000, "MineSweeper");
sys_window_redraw(2); sys_window_redraw(2);
// Leency ROLLED UP FIX // Leency ROLLED UP FIX
sys_process_info(#procinfo, -1); sys_process_info(#procinfo, -1);
IF (procinfo.ysize<70) return; IF (procinfo.ysize<70) return;
// <NEW GAME> BUTTON (911) // <NEW GAME> BUTTON (911)
EBX = xsize / 2 - 10; EBX = xsize / 2 - 10;
EBX = EBX << 16 + 20; EBX = EBX << 16 + BTNSIZE;
sys_draw_button(EBX, 25<<16+20, 911, clLightGray); sys_draw_button(EBX, HEADER_Y<<16+BTNSIZE, 911+BT_HIDE, clLightGray);
draw_rectangle(xsize/2-10,HEADER_Y,BTNSIZE,BTNSIZE,clWhite,clDarkGray);
// <CHANGE MODE> BUTTON (1001) // <CHANGE MODE> BUTTON (1001)
sys_draw_button(10<<16+7, 23<<16+7, 1001, 0x118811); sys_draw_button(5<<16+32, HEADER_Y<<16+BTNSIZE, 1001+BT_HIDE, clLightGray);
draw_rectangle(5,HEADER_Y,32,BTNSIZE,clWhite,clDarkGray);
game_mode[0] = mode + '0';
sys_write_text(9<<16+HEADER_Y+3, 0x90000000+clDarkGray, #game_mode, 3);
// <USER FIELD> BUTTON (1002) // <USER FIELD> BUTTON (1002)
//sys_draw_button(20<<16+7, ECX, EDX+1, 0xddbb44); //sys_draw_button(BTNSIZE<<16+7, ECX, EDX+1, 0xddbb44);
draw_time(); // draw timer draw_time(); // draw timer
draw_minesi(); // draw mines draw_mines_left(); // draw mines
draw_squares(); // draw field draw_squares(); // draw field
} }
@ -131,25 +138,17 @@ void draw_square(int x, y)
} }
} }
// Òàéìåð
void draw_time() void draw_time()
{ {
sys_draw_bar(XST<<16+25, 31<<16+14, 0xCCCCCC); sys_draw_bar(xsize-XST-58<<16+29, HEADER_Y<<16+20, clWhiteGray);
sys_write_number(0x00030000, time, XST<<16+32, 0x10ff0000); sys_write_number(0x00030000, time, xsize-XST-56<<16+HEADER_Y+3, 0x101166C3);
} }
// Èíäèêàòîð êîëè÷åñòâà íåðàññòàâëåííûõ ìèí void draw_mines_left()
void draw_minesi()
{ {
EBX = xsize - XST - 25; sys_draw_bar(xsize-XST-29<<16+29, HEADER_Y<<16+20, clWhiteGray);
$PUSH EBX sys_write_number(0x00030000, cmines, xsize-XST-27<<16+HEADER_Y+3, 0x10ff0000);
EBX = EBX << 16 + 25;
sys_draw_bar(EBX, 31<<16+14, 0xCCCCCC);
$POP EDX
EDX <<= 16; EDX += 32;
sys_write_number(0x00030000, cmines, EDX, 0x10ff0000);
} }
@ -162,3 +161,11 @@ void draw_squares()
FOR (x=0; x < ncx; x++) FOR (x=0; x < ncx; x++)
draw_square(x, y); draw_square(x, y);
} }
void draw_rectangle(dword x,y,w,h,color1,color2)
{
sys_draw_bar(x<<16+w+1,y<<16+1,color1);
sys_draw_bar(x<<16+1,y+1<<16+h-1,color1);
sys_draw_bar(x+w<<16+1,y+1<<16+h,color2);
sys_draw_bar(x<<16+w,y+h<<16+1,color2);
}

View File

@ -14,10 +14,16 @@
#define RETURN_KEY 13 #define RETURN_KEY 13
#define BACKSPACE_KEY 8 #define BACKSPACE_KEY 8
//Button options
#define BT_DEL 0x80000000
#define BT_HIDE 0x40000000
#define BT_NOFRAME 0x20000000
// Color constant // Color constant
#define clWhite 0x00ffffff #define clWhite 0x00ffffff
#define clGray 0x00808080 #define clGray 0x00808080
#define clLightGray 0x00c0c0c0 #define clLightGray 0x00c0c0c0
#define clWhiteGray 0x00E2E2E2
#define clDarkGray 0x00707070 #define clDarkGray 0x00707070
#define clBlack 0x00000000 #define clBlack 0x00000000
#define clRed 0x00ff0000 #define clRed 0x00ff0000

View File

@ -58,9 +58,10 @@ struct
byte nmines; byte nmines;
} stdmodes[3] = {9,9,10, 16,16,40, 30,16,99}; // {x,y,m} } stdmodes[3] = {9,9,10, 16,16,40, 30,16,99}; // {x,y,m}
int XST, // offset of first pixel X - ñìåùåíèå ïîëÿ îò ãðàíèöû îêíà ?define XST 5 // offset of first pixel X - ñìåùåíèå ïîëÿ îò ãðàíèöû îêíà
YST, ?define YST 28
ncx, // number of squares in X - ðàçìåð ïîëÿ
int ncx, // number of squares in X - ðàçìåð ïîëÿ
ncy, ncy,
cmines, // mines discovered - êîëè÷åñòâî íåîòêðûòûõ ìèí cmines, // mines discovered - êîëè÷åñòâî íåîòêðûòûõ ìèí
initmines, // number of initial mines - èçíà÷àëüíîå êîëè÷åñòâî ìèí initmines, // number of initial mines - èçíà÷àëüíîå êîëè÷åñòâî ìèí
@ -107,8 +108,6 @@ inline void fastcall mouse_disable()
void init() void init()
// Èíèöèàëèçàöèÿ // Èíèöèàëèçàöèÿ
{ {
XST = 10; YST = 52; // FIELD POSITION IN WINDOW
ECX = mode; ECX = mode;
IF (ECX != 0) IF (ECX != 0)
{ {
@ -126,7 +125,7 @@ void init()
} }
xsize = ncx * XPX + XST + XST; xsize = ncx * XPX + XST + XST;
ysize = ncy * YPX + YST + XST; ysize = ncy * YPX + YST + XST + sys_get_skin_height() + 4;
} // init } // init
@ -258,7 +257,7 @@ inline void do_mouse(void)
set_mark(x, y, EBX); set_mark(x, y, EBX);
draw_minesi(); draw_mines_left();
draw_square(x, y); draw_square(x, y);
return; return;
} }
@ -287,7 +286,7 @@ inline void do_mouse(void)
cmines--; cmines--;
draw_square(x, y); draw_square(x, y);
} }
draw_minesi(); draw_mines_left();
} }
} // do_mouse } // do_mouse
@ -438,31 +437,32 @@ void main()
{ {
switch (sys_wait_event_timeout(100)) // wait for 1 second switch (sys_wait_event_timeout(100)) // wait for 1 second
{ {
case evReDraw: CASE evReDraw:
draw_window(); draw_window();
continue; continue;
case evKey: CASE evKey:
IF (sys_get_key() == 27) IF (sys_get_key() == 27)
sys_exit_process(); sys_exit_process();
continue; continue;
case evButton: CASE evButton:
EAX = sys_get_button_id(); EAX = sys_get_button_id();
IF (EAX == 911) // new game IF (EAX == 911) // new game
{ {
new_game(); new_game();
draw_squares(); draw_squares();
draw_time(); draw_time();
draw_minesi(); draw_mines_left();
} }
ELSE IF (EAX == 1001) // change mode ELSE IF (EAX == 1001) // change mode
{ {
// mode++; mode%=3; mode++; mode++;
EAX = mode; EAX++; EAX = EAX%3; EAX++; mode = AL; if (mode==4) mode=1;
//EAX = mode; EAX++; EAX = EAX%3; EAX++; mode = AL;
new_game(); new_game();
window_move_size(OLD,OLD,xsize,ysize); window_move_size(OLD,OLD,xsize+9,ysize);
CONTINUE; CONTINUE;
} }
// ELSE IF (EAX == 1002) // ELSE IF (EAX == 1002)