unit records;

interface

uses constants;

type
  RDestination = set of (dtForward, dtBackward, dtLeft, dtRight);

  RPoint = record
    x, y, z : single;
  end;

  RVertex = record
    p, n : RPoint;
  end;

  RTextureVertex = record
    x, y : single;
  end;

  RFace = record
    v : array[1..3] of integer;
    t : array[1..3] of integer;
    n : RPoint;
  end;

  RColor = record
    r, g, b, a : single;
  end;

  RCamera = record
    eye, target, up : RPoint;
    destination, height, enemy_destination, enemy_height, tz : single;
    map_x, map_y : integer;
  end;

  REnemyParams = record
    get_score, get_credits : integer;
    scale,
    health, default_health,
    damage, default_damage,
    speed, default_speed : single;
  end;

  RTowerParams = record
    target, primary, radius : integer;
    speed, damage_h, damage_d, damage_s : single;
  end;

  RTowerParamsBlock = record
    max_weapons_aviable, weapons_aviable : integer;
    build_time : integer;
    weapons : array[1..max_weapons] of RTowerParams;
    light_radius : integer;
    light_color : RColor;
  end;

  RTowerUpgrade = record
    price_credits, price_score : integer;
    add_params : RTowerParamsBlock;
    name : string;
    button : integer;
  end;

  RWayPoint = record
    x, y : integer;
    px, py : integer;
    mode : integer;
    f, g, h, dangerous : single;
  end;

  RPFPoint = record
    x, y : integer;
  end;

  RPath = record
    exists : boolean;
    length : integer;
    points : array[1..max_path_map_width*max_path_map_height] of RWayPoint;
  end;

  RPrice = record
    credits, scores : integer;
  end;

implementation

end.
