program Enecoder;
/////////////////////////////////
// версия 0,8
/////////////////////////////////
// игра "Кодировщик"
/////////////////////////////////
{
Игра создавалась для участия в 36 конкурсе на IGDC.ru.
К сожелению игра не была доведена до более-менее приличного состояния.

Игра представляет из себя "мозговой" тренажёр. Точно дать описание жанра я не могу.
Суть игры в том, что вы должны научится быстро сравнивать некоторые монотонно повторяющиеся
элементы, найти некоторый элемент во множестве других, развить быструю память и т.п.

Реализовано три задания трёх уровней сложности.
"Сравнение карт"-тут вам надо найти отличия в двух карта. Одна карта образец,
другая - рабочая.
"Поис элемента на карте"-тут вам надо найти некоторое содержание маленькой карты в большой.
Есть несколько маленьких карт и одна большая.
"Заполнение карты"-тут вам надо используя некоторый числовой код заполнить большую карту.

Задания выполняются на время. За выполнение задания начисляется очки.
За скорость выполнения, кол-во ошибок и кол-во правильных ответов.
По окончании игры, игрок набирает некоторое кол-во очков и определённый уровень.
}

uses
  OMEGA,
  uGeneralData in 'uGeneralData.pas',
  uGUI in 'uGUI.pas',
  uMenu in 'uMenu.pas',
  uGameTask in 'uGameTask.pas',
  uGameText in 'uGameText.pas',
  uLoad in 'uLoad.pas',
  uGame in 'uGame.pas',
  uGame1 in 'uGame1.pas',
  uGame2 in 'uGame2.pas',
  uGame3 in 'uGame3.pas',
  uGame4 in 'uGame4.pas',
  uGame5 in 'uGame5.pas',
  uGame6 in 'uGame6.pas',
  uEndTask in 'uEndTask.pas';

procedure Init;
begin

//ошибок не было
erorname:='';
//инициализируем общеигровые данные
DataInit;

end;

procedure Draw;
{var t:integer;}
begin

Pr2D_Rect(0,0,scrw,scrh,$888888,255,PR_FILL ); //рисуем фон

case scene of
 sLoad:LoadDraw;
 sMenu:MenuDraw;
 sOption:;
 sAbout:AboutDraw;
 sGame:GameDraw;
end;

{
//типа отладочная инфа
if Text_GetWidth(font,PChar(SceneName),1,0)>Text_GetWidth(font,PChar('FPS='+U_IntToStr(OE_GetFPS)),1,0)
then t:=trunc(ScrW-Text_GetWidth(font,PChar(SceneName),1,0)-30)
else t:=trunc(ScrW-Text_GetWidth(font,PChar('FPS='+U_IntToStr(OE_GetFPS)),1,0)-30);
DrawGWind(t,10,ScrW-t-10,30,100);
text_draw(font,t+10,10,PChar(SceneName),1,0,255,$ffffff);
text_draw(font,t+10,25,PChar('FPS='+U_IntToStr(OE_GetFPS)),1,0,255,$ffffff);
}

//т.к. курсор используется везде, то рисуем его в гл. процедуре отрисовки
Ssprite_Draw(cursor,Mouse_X,Mouse_Y,32,32);

end;

procedure Process;
var t:boolean;
begin

case scene of
 sLoad:LoadProcess;
 sMenu:MenuProcess;
 sOption:;
 sAbout:AboutProcess;
 sGame:GameProcess;
end;

//проверяем нажатия мышки, для надёжности
t:=mouse_press(m_lbutton);
t:=key_Press(k_ctrl);

end;


procedure Quit;
var DF:textfile;
begin

//при выходе сохраняем игру
SaveGame;
//и пишем ошибки, если были
assignfile(DF,'eror.txt');
rewrite(DF);
write(DF,erorname);         //при выходе записываем значение ошибки
closefile(DF);              //если ошибок не было - получим пустой файл

end;

begin

//загружаем опции
//разрешение и имя окна
LoadOptions('options.txt');
//грузим движок
LoadOMEGA('OMEGA.dll');
//создаём игровой таймер
Timer_Create(@Process,20);
//регистрируем процедуры
OE_RegProcedure( sys_draw , @Draw );
OE_RegProcedure( sys_init , @Init );
OE_RegProcedure( sys_quit , @Quit );
//задаём параметры окна
OE_SetScreenOptions(ScrW,ScrH,32,0,true,false);
OE_SetWndName(PChar(WindowName));
//прячем курсор
OE_ShowCursor(false);
//запускаем движок
OE_init;

end.
