From 7bc3bc518a9295aba9daf0f574d8769dc72ce445 Mon Sep 17 00:00:00 2001 From: CleverMouse Date: Thu, 27 Jan 2011 12:34:09 +0000 Subject: [PATCH] clicks v0.77 by Leency, multi-language build git-svn-id: svn://kolibrios.org@1768 a494cfbc-eb01-0410-851d-a64ba20cac60 --- data/eng/Makefile.cmm | 2 +- data/rus/Makefile.cmm | 2 +- programs/games/clicks/trunk/History.txt | 10 ++- programs/games/clicks/trunk/clicks.c-- | 79 +++++++++++++++---- .../trunk/{compile.bat => compile_eng.bat} | 1 + programs/games/clicks/trunk/compile_rus.bat | 6 ++ programs/games/clicks/trunk/lib/kolibri.h-- | 58 +++++--------- 7 files changed, 98 insertions(+), 60 deletions(-) rename programs/games/clicks/trunk/{compile.bat => compile_eng.bat} (71%) create mode 100644 programs/games/clicks/trunk/compile_rus.bat diff --git a/data/eng/Makefile.cmm b/data/eng/Makefile.cmm index 15327b4bce..4b847b2ee9 100644 --- a/data/eng/Makefile.cmm +++ b/data/eng/Makefile.cmm @@ -7,7 +7,7 @@ define cmm_meta_rule $(1): $(2) Makefile.cmm $$(call respace,$$(addsuffix .dir,$(3))) \ $$(wildcard $$(dir $(2))*) $$(wildcard $$(dir $(2))*/*) flock $$(dir $(2)).lock -c '\ - win32-c-- $(5) /IP=Z:$$(dir $(2)) Z:$$< >&2 && \ + win32-c-- /D=AUTOBUILD /D=LANG_ENG $(5) /IP=Z:$$(dir $(2)) Z:$$< >&2 && \ if [ -e $$(basename $$<) ]; then f=$$(basename $$<); else f=$$(basename $$<).com; fi && \ kpack --nologo $$$$f "$$@" && rm $$$$f' endef diff --git a/data/rus/Makefile.cmm b/data/rus/Makefile.cmm index 15327b4bce..a191699eac 100644 --- a/data/rus/Makefile.cmm +++ b/data/rus/Makefile.cmm @@ -7,7 +7,7 @@ define cmm_meta_rule $(1): $(2) Makefile.cmm $$(call respace,$$(addsuffix .dir,$(3))) \ $$(wildcard $$(dir $(2))*) $$(wildcard $$(dir $(2))*/*) flock $$(dir $(2)).lock -c '\ - win32-c-- $(5) /IP=Z:$$(dir $(2)) Z:$$< >&2 && \ + win32-c-- /D=AUTOBUILD /D=LANG_RUS $(5) /IP=Z:$$(dir $(2)) Z:$$< >&2 && \ if [ -e $$(basename $$<) ]; then f=$$(basename $$<); else f=$$(basename $$<).com; fi && \ kpack --nologo $$$$f "$$@" && rm $$$$f' endef diff --git a/programs/games/clicks/trunk/History.txt b/programs/games/clicks/trunk/History.txt index cf402bdb90..a67efecc03 100644 --- a/programs/games/clicks/trunk/History.txt +++ b/programs/games/clicks/trunk/History.txt @@ -1,9 +1,17 @@ ******************************************************************************** ******************************************************************************** Just Clicks -Copyright (C) 2008 Leency +Copyright (C) 2008-2009 Leency История версий: +Just Clicks v0.77 (08.09.2009) +- существенно уменьшено потребляемое программой количество памяти +- кнопки под стиль системы +- небольшие оптимизации + +Just Clicks v0.76 (28.01.2009) +- оптимизации + Just Clicks v0.75 (20.11.2008) - три багфикса, небольшие оптимизации diff --git a/programs/games/clicks/trunk/clicks.c-- b/programs/games/clicks/trunk/clicks.c-- index 206a6f3b81..fe753fb564 100644 --- a/programs/games/clicks/trunk/clicks.c-- +++ b/programs/games/clicks/trunk/clicks.c-- @@ -11,9 +11,13 @@ Compiled by C--Sphinx v0.239 b26 #include "lib\random.h--" #include "files\boxes.txt" #include "files\cups.txt" - + +#ifndef AUTOBUILD +#include "lang.h--" +#endif byte i,j, XX, YY; +system_colors sc; struct { @@ -125,37 +129,59 @@ void ReDraw_Blocks(byte newgame) { DefineButton(j*21,y-22, 20, 20, num+BT_HIDE, 0); PutImage(matrix[num].color-1*1323+#img,21,21,j*21,y-22); - } ELSE DrawBar(j*21,y-22,21,21, 0xB2B4BF); + } + ELSE + DrawBar(j*21,y-22,21,21, 0xB2B4BF); num++; } y=y+21; } - DrawBar(90,178,71,8,0xE4DFE1); - IF (check_for_end()==1) WriteText(90,178,0x80,0,"ђҐ§г«мв в:",10); - ELSE WriteText(96,178,0x80,0,"Ћбв «®бм:",10); +#ifdef LANG_RUS + DrawBar(90,178,71,8,sc.work); + IF (check_for_end()==1) WriteText(90,178,0x80,sc.work_text,"ђҐ§г«мв в:",10); + ELSE WriteText(96,178,0x80,sc.work_text,"Ћбв «®бм:",10); +#else + DrawBar(108,178,60,8,sc.work); + IF (check_for_end()==1) WriteText(108,178,0x80,sc.work_text,"Result:",10); + ELSE WriteText(108,178,0x80,sc.work_text,"Blocks:",10); +#endif FOR (i=0;i<8;i++) FOR (j=0;j<8;j++) IF (matrix[j*8+i].mark==0) count_blocks++; - WriteNumber(150,178,0x80,0,count_blocks); + WriteNumber(150,178,0x80,sc.work_text,count_blocks); // if (check_for_end()==1) && (count_blocks<8) { - DrawFlatButton(21,42,125,62,0,0xE4DFE1,""); + DrawFlatButton(); +#ifdef LANG_RUS IF (count_blocks==0) copystr(" ‹гзиҐ ўбҐе!", #temp); IF (count_blocks==1) copystr(" ЏаҐЄа б­®", #temp); IF (count_blocks==2) copystr("ЋзҐ­м е®а®и®!", #temp); +#else + IF (count_blocks==0) copystr("The best!", #temp); + IF (count_blocks==1) copystr("Wonderful", #temp); + IF (count_blocks==2) copystr("Very good", #temp); +#endif IF (count_blocks>=3) //Ў Ј!!! { +#ifdef LANG_RUS copystr(" ЌҐЇ«®е®", #temp); +#else + copystr(" Not bed", #temp); +#endif count_blocks=3; } - PutImage(count_blocks*42*37*3+#cups,42,37,63,48); + PutImage(count_blocks*4662+#cups,42,37,63,48); +#ifdef LANG_RUS WriteText(46,91,0x80,0x0,#temp,0); +#else + WriteText(58,91,0x80,0x0,#temp,0); +#endif } } void main() -{ byte id, skin_width; - randomize(); +{ byte id; + //randomize(); ReDraw_Blocks(1); loop() { @@ -183,16 +209,35 @@ void main() break; case evReDraw: WindowRedrawStatus(1); - skin_width = GetSkinWidth(); - DefineAndDrawWindow(400,276,177,201+skin_width,0x74,0x10B2B4BF,0,0,"Just Clicks v0.76"); - DefineButton(150,2-skin_width,18,18,255+BT_HIDE+BT_NOFRAME,0x0866CC00); - DrawBar(0,168,168,29,0xE4DFE1); - //DrawFlatButton(9,172,84,19,254,0xE4DFE1,"New game (F2)"); - DrawFlatButton(4,172,80,19,254,0xE4DFE1,"‡ ­®ў® (F2)"); - ReDraw_Blocks(0); + DefineAndDrawWindow(400,276,177,201+GetSkinWidth(),0x74,0x10B2B4BF,0,0,"Just Clicks v0.77"); WindowRedrawStatus(2); + sc.get(); + DefineButton(150,-18,18,18,255+BT_HIDE+BT_NOFRAME,0); //Є­®Ї®зЄ  § ЄалвЁп :] + DrawBar(0,168,168,29,sc.work); //Ї ­Ґ«мЄ  б­Ё§г +#ifdef LANG_RUS + DefineButton(9,172,76,19,254,sc.work_button); + WriteText(16,178,0x80,sc.work_button_text,"‡ ­®ў® (F2)",0); +#else + DefineButton(9,172,86,19,254,sc.work_button); + WriteText(15,178,0x80,sc.work_button_text,"New game (F2)",0); +#endif + ReDraw_Blocks(0); } } } + +void DrawFlatButton() +{ + DrawBar(21,42,125,1,0x94AECE); //Ї®«®б  Ј®а ᢥаег + DrawBar(21,104,125,1,0x94AECE); //Ї®«®б  Ј®а б­Ё§г + DrawBar(21,42,1,62,0x94AECE); //Ї®«®б  ўҐав б«Ґў  + DrawBar(146,42,1,63,0x94AECE); //Ї®«®б  ўҐав бЇа ў  + DrawBar(22,43,124,1,0xFFFFFF); //Ї®«®б  Ј®а ЎҐ« п + DrawBar(22,103,123,1,0xC7C7C7); //вҐ­м ўҐав + DrawBar(22,43,1,61,0xFFFFFF); //Ї®«®б  ўҐав ЎҐ« п + DrawBar(145,44,1,60,0xC7C7C7); //вҐ­м ўҐав + DrawBar(23,44,122,59,0xE4DFE1); //§ «ЁўЄ  +} + stop: diff --git a/programs/games/clicks/trunk/compile.bat b/programs/games/clicks/trunk/compile_eng.bat similarity index 71% rename from programs/games/clicks/trunk/compile.bat rename to programs/games/clicks/trunk/compile_eng.bat index 0638c99da5..d4e74606f7 100644 --- a/programs/games/clicks/trunk/compile.bat +++ b/programs/games/clicks/trunk/compile_eng.bat @@ -1,3 +1,4 @@ +echo #define LANG_ENG 1 >lang.h-- c--\c-- clicks.c-- del clicks.kex rename clicks.com clicks.kex diff --git a/programs/games/clicks/trunk/compile_rus.bat b/programs/games/clicks/trunk/compile_rus.bat new file mode 100644 index 0000000000..07deb99f8c --- /dev/null +++ b/programs/games/clicks/trunk/compile_rus.bat @@ -0,0 +1,6 @@ +echo #define LANG_RUS 1 >lang.h-- +c--\c-- clicks.c-- +del clicks.kex +rename clicks.com clicks.kex +rem rename clicks clicks.kex +pause \ No newline at end of file diff --git a/programs/games/clicks/trunk/lib/kolibri.h-- b/programs/games/clicks/trunk/lib/kolibri.h-- index 2efe8212ac..713e0d8b1e 100644 --- a/programs/games/clicks/trunk/lib/kolibri.h-- +++ b/programs/games/clicks/trunk/lib/kolibri.h-- @@ -4,8 +4,8 @@ char os_name[8] = {'M','E','N','U','E','T','0','1'}; dword os_version = 0x00000001; dword start_addr = #main; dword final_addr = #stop+32; -dword alloc_mem = 0x00100000; -dword x86esp_reg = 0x0007fff0; +dword alloc_mem = 0x00004096; +dword x86esp_reg = 0x00004096; dword I_Param = 0x0; dword I_Icon = 0x0; @@ -14,10 +14,22 @@ dword I_Icon = 0x0; #define evReDraw 1 #define BT_DEL 0x80000000 -#define BT_HIDE 0x40000000 +#define BT_HIDE 0x40000000 #define BT_NOFRAME 0x20000000 +struct system_colors{ + dword frame,grab,grab_button,grab_button_text,grab_text,work,work_button,work_button_text,work_text,work_graph; + void get(); +}; +void system_colors::get() +{ + EAX = 48; + EBX = 3; + ECX = #frame; + EDX = 40; + $int 0x40 +} inline fastcall dword WaitEvent(){ EAX = 10; // wait here for event @@ -30,13 +42,13 @@ inline fastcall void ExitProcess(){ $int 0x40 } -inline fastcall word GetKey(){ +inline fastcall byte GetKey(){ EAX = 2; // just read it key from buffer $int 0x40 EAX = EAX >> 8; } -inline fastcall word GetButtonID(){ +inline fastcall byte GetButtonID(){ EAX = 17; // Get ID $int 0x40 EAX = EAX >> 8; @@ -56,13 +68,6 @@ inline fastcall void DeleteButton(dword EDX) $int 0x40; } -inline fastcall dword strlen(dword EDI){ - ECX=EAX=0; - ECX--; - $REPNE $SCASB - EAX-=2+ECX; -} - inline fastcall void WindowRedrawStatus(dword EBX){ EAX = 12; @@ -72,11 +77,11 @@ inline fastcall void WindowRedrawStatus(dword EBX){ void DefineAndDrawWindow(dword x,y,sizeX,sizeY,byte mainAreaType,dword mainAreaColour,byte headerType,dword headerColour,EDI) { + EAX = 0; EBX = x << 16 + sizeX; ECX = y << 16 + sizeY; EDX = mainAreaType << 24 | mainAreaColour; ESI = headerType << 24 | headerColour; - $xor eax,eax $int 0x40 } @@ -106,27 +111,6 @@ void DrawBar(dword x,y,w,h,EDX) } -void DrawRegion(dword x,y,width,height,color1) -{ - DrawBar(x,y,width,1,color1); //полоса гор сверху - DrawBar(x,y+height,width,1,color1); //полоса гор снизу - DrawBar(x,y,1,height,color1); //полоса верт слева - DrawBar(x+width,y,1,height+1,color1); //полоса верт справа -} - -void DrawFlatButton(dword x,y,width,height,id,color,text) -{ - DrawRegion(x,y,width,height,0x94AECE); - DrawBar(x+1,y+1,width-1,1,0xFFFFFF); //полоса гор белая - DrawBar(x+1,y+height-1,width-2,1,0xC7C7C7); //тень верт - DrawBar(x+1,y+1,1,height-1,0xFFFFFF); //полоса верт белая - DrawBar(x+width-1,y+2,1,height-2,0xC7C7C7); //тень верт - DrawBar(x+2,y+2,width-3,height-3,color); //заливка - IF (id<>0) DefineButton(x,y,width,height,id+BT_HIDE,0xEFEBEF); //определяем кнопку - WriteText(-strlen(text)*6+width/2+x+1,height/2-3+y,0x80,0,text,0); -} - - void PutImage(dword EBX,w,h,x,y) { EAX = 7; @@ -152,12 +136,6 @@ void WriteNumber(dword x,y,byte fontType, ESI, ECX) { EAX = 47; EBX = 2<<16; - /*ecx = 0 - while(eax>10) - { - ecx ++; - eax /= 10; - }*/ EDX = x<<16+y; ESI = fontType<<24+ESI; $int 0x40;