// Name        : Lesson 03 - Various Plane / Урок 03 - Переменная плоскость
// Version     : 19 dec 2012
// Author      : LODka3D
// Discription : Урок 03 в котором создаются контролы на закладке Primitive
//               и по значению в них строятся односторонняя или двухсторонняя
//               плоскости.
//

  // Включаем файл 'func-demo1.dws' в этот скрипт.
  //  В нём находятся функции создания плоскостей AddPlane и AddPlaneDouble .
{$I 'func-demo1.dws'} 

  // Функция которая создаёт контролы в ЛОДке.
procedure LODPCreateControls;
begin
    // Функция LOD('GetLanguage') считывает номер текущего языка.
  if LOD('GetLanguage') = '25' then begin 
      // Язык '25' - русский. Поэтому можем создать контрол с русскими 
      //   надписями.

      //  Функция 'AddPControl' создаёт контролы.
      // '2side' - это идентификатор по которому будем считывать значение
      //           контролая.
      //  'Bool' - тип контрола. Может быть 'Bool' (двоичное), 'Int' (целое), 
      //           'Float' (вещественное), 'Combo'(список).
      //  'Две стороны' - текст надписи на контроле.
      //  '1 или 2 стороны.' - всплывающая подсказка.
      //  Для контролов Int и Float можно задать ещё два дополнительных 
      //  параметра  определяющие их минимальное и максимальное значение.
      //  Для контрола 'Comob' - в дополнительном параметре задаётся список
      //   элементов в выпадающем списке.
      //
      //  !!! Внимание ! Функция LOD работает только со строками. !!!
      // Для преобразования переменных в текст и обратно используются функции: 
      //  IntToStr(), StrToInt(), FloatToStr(), StrToFloat() и т. п.
    LOD('AddPControl', '2side', 'Bool', '3', 'Две стороны', '1 или 2 стороны');

  end else begin
      // Язык не русский, поэтому создаём контолы с английскими надписями.

      // Аналогичная функция, но с английскими надписями.
    LOD('AddPControl', '2side', 'Bool', '3', 'Two sides1', '1 or 2 sides');

  end;

    // Создаём дополнительные контролы.
  LOD('AddPControl', 'Radius1', 'Float', '5.5', 'Radius1',     
                                     'Set the radius 1.',       '0.1', '10.1');
  LOD('AddPControl', 'Radius2', 'Float', '1.2', 'Radius2',     
                                     'Set the radius 2.',       '1', '10');
  LOD('AddPControl',   'Parts',   'Int',   '3', 'Parts count', 
                                     'How many planes to add?',   '1', '1000');
  LOD('AddPControl',    'Mode', 'Combo',   '1', 'Mode',        
                          'Select polygon mode',     'Lo-poly'#13#10'Hi-poly');
end;


  // Функция в которой в ЛОДку добавляются примитивы.
procedure LODPCreatePrimitive;
begin
    // Пишем текст в окошко на закладке примитивов в ЛОДке.
  LOD('SetPMessage', 'Lesson 02 - Plane double.');

    // Считываем значение контрола '2side', который является галочкой и может 
    //  принимать два значения, '0' или '1'.
  if LOD('GetPControl', '2side') = '0' then begin
    // = '0' - значит галочка не стоит, и надо создать одинарную плоскость.

      // Вызываем функцию AddPlaneDouble из файла 'func-demo1.dws', 
      //  которая и создаёт ОДИНАРНУЮ плоскость.
    AddPlane; 
  end else begin
    // = '1' - значит галочка не стоит, и надо создать одинарную плоскость.

      // Вызываем функцию AddPlaneDouble из файла 'func-demo1.dws', 
      //  которая создаёт ДВОЙНУЮ плоскость.
    AddPlaneDouble; 
  end;

    // Заголовок.
  LOD('SetPMessage', 'Controls value:'+#13#10);
    // Считываем значения с других контролов и выводим их в окошке на закладке
    //  ЛОДки Primitive.
    // Изменяйте значения в окошках и смотрите, что будет показываться.
  LOD('AddPMessage', '2side:   ' +LOD('GetPControl', '2side')   +#13#10);
  LOD('AddPMessage', 'Radius1: ' +LOD('GetPControl', 'Radius1') +#13#10);
  LOD('AddPMessage', 'Radius2: ' +LOD('GetPControl', 'Radius2') +#13#10);
  LOD('AddPMessage', 'Parts:   ' +LOD('GetPControl', 'Parts')   +#13#10);
  LOD('AddPMessage', 'Mode:    ' +LOD('GetPControl', 'Mode')    +#13#10);
end;