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/gui.h"
#include "../lib/copyf.h"
#include "../lib/obj/libini.h"
#include "../lib/obj/libio.h"
#include "../lib/obj/libimg.h"
#include "../lib/patterns/restart_process.h"
#ifndef AUTOBUILD
#include "lang.h--"
#endif
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
bool install_complete = false;
void main()
{
word btn;
load_dll(libini, #lib_init,1);
load_dll(libio, #libio_init,1);
load_dll(libimg, #libimg_init,1);
loop() switch(WaitEventTimeout(300) & 0xFF)
{
case evButton:
@ -35,6 +57,10 @@ void main()
case evKey:
GetKeys();
if (key_scancode == SCAN_CODE_ESC) ExitProcess();
if (key_scancode == SCAN_CODE_ENTER) {
if (install_complete) ExitProcess();
else EventInstall();
}
break;
case evReDraw:
@ -54,21 +80,31 @@ void draw_window()
system.color.get();
DefineAndDrawWindow(screen.width-WINW/2,screen.height-WINH/2,
WINW+9,WINH+skin_height,0x34,system.color.work,"KolibriN10",0);
DrawLogo();
if (install_complete) DrawInstallComplete(); else DrawIntro();
}
void DrawIntro()
{
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,
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()
{
#define LX -46*6+WINW/2
#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);
pause(1);
@ -77,9 +113,6 @@ void DrawLogo()
WriteTextLines(LX, LY, 0x80, 0xEC008C, #logo, 9);
}
void EventInstall()
{
//#include "..\lib\added_sysdir.c";
@ -92,6 +125,9 @@ void EventInstall()
RestartProcessByName("/sys/@docky", SINGLE);
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); }

View File

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

View File

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

View File

@ -18,6 +18,9 @@
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() // Ïðîöåäóðà îòðèñîâêè îêíà
{
@ -25,28 +28,32 @@ void draw_window() //
// WINDOW
sys_window_redraw(1);
EBX = xpos << 16 + xsize;
EBX = xpos << 16 + xsize + 9;
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);
// Leency ROLLED UP FIX
sys_process_info(#procinfo, -1);
IF (procinfo.ysize<70) return;
// <NEW GAME> BUTTON (911)
// <NEW GAME> BUTTON (911)
EBX = xsize / 2 - 10;
EBX = EBX << 16 + 20;
sys_draw_button(EBX, 25<<16+20, 911, clLightGray);
EBX = EBX << 16 + BTNSIZE;
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)
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)
//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_minesi(); // draw mines
draw_mines_left(); // draw mines
draw_squares(); // draw field
}
@ -131,25 +138,17 @@ void draw_square(int x, y)
}
}
// Òàéìåð
void draw_time()
{
sys_draw_bar(XST<<16+25, 31<<16+14, 0xCCCCCC);
sys_write_number(0x00030000, time, XST<<16+32, 0x10ff0000);
sys_draw_bar(xsize-XST-58<<16+29, HEADER_Y<<16+20, clWhiteGray);
sys_write_number(0x00030000, time, xsize-XST-56<<16+HEADER_Y+3, 0x101166C3);
}
// Èíäèêàòîð êîëè÷åñòâà íåðàññòàâëåííûõ ìèí
void draw_minesi()
void draw_mines_left()
{
EBX = xsize - XST - 25;
$PUSH EBX
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);
sys_draw_bar(xsize-XST-29<<16+29, HEADER_Y<<16+20, clWhiteGray);
sys_write_number(0x00030000, cmines, xsize-XST-27<<16+HEADER_Y+3, 0x10ff0000);
}
@ -162,3 +161,11 @@ void draw_squares()
FOR (x=0; x < ncx; x++)
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 BACKSPACE_KEY 8
//Button options
#define BT_DEL 0x80000000
#define BT_HIDE 0x40000000
#define BT_NOFRAME 0x20000000
// Color constant
#define clWhite 0x00ffffff
#define clGray 0x00808080
#define clLightGray 0x00c0c0c0
#define clWhiteGray 0x00E2E2E2
#define clDarkGray 0x00707070
#define clBlack 0x00000000
#define clRed 0x00ff0000

View File

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