function BuildEnemyBattleProps(%x, %propstart, %map)
{
   %max = getRandom(3, 7);
   
   for(%i=0;%i<=%max;%i++)
   {
      %prop =    new t2dStaticSprite() {
                     canSaveDynamicFields = "1";
                     layer = 2;  // the vehicle is beneath the pause text
                     scenegraph = "sg";
                     cover = true;
                     prop = true;
                  };
      
      SetEnemyBattleProps(%prop, %map);
      
      %rand = getRandom(1, 2);
      
      %rotation = getRandom(1, 360);            
      
      %layer = "infantry" @ %map;
      
      switch$ (%i)
      {
         case 0:
            %pos = %x-10 SPC %propstart+getRandom(-5, 5);
            %tile = %layer.PickTile(%pos);
            %x = getWord(%tile, 0);
            %y = getWord(%tile, 1);
            %center = getTCenter(%layer, %x, %y);
            %prop.SetPosition(%center);    
         case 1:
            %pos = %x+10 SPC %propstart+getRandom(-5, 5);
            %tile = %layer.PickTile(%pos);
            %x = getWord(%tile, 0);
            %y = getWord(%tile, 1);
            %center = getTCenter(%layer, %x, %y);
            %prop.SetPosition(%center);            
         case 2:
            %pos = %x-20 SPC %propstart+getRandom(-5, 5);
            %tile = %layer.PickTile(%pos);
            %x = getWord(%tile, 0);
            %y = getWord(%tile, 1);
            %center = getTCenter(%layer, %x, %y);
            %prop.SetPosition(%center);            
         case 3:            
            %pos = %x+20 SPC %propstart+getRandom(-5, 5);
            %tile = %layer.PickTile(%pos);
            %x = getWord(%tile, 0);
            %y = getWord(%tile, 1);
            %center = getTCenter(%layer, %x, %y);
            %prop.SetPosition(%center);            
         case 4:            
            %pos = %x-30 SPC %propstart+getRandom(-5, 5);
            %tile = %layer.PickTile(%pos);
            %x = getWord(%tile, 0);
            %y = getWord(%tile, 1);
            %center = getTCenter(%layer, %x, %y);
            %prop.SetPosition(%center);            
         case 5:            
            %pos = %x+30 SPC %propstart+getRandom(-5, 5);
            %tile = %layer.PickTile(%pos);
            %x = getWord(%tile, 0);
            %y = getWord(%tile, 1);
            %center = getTCenter(%layer, %x, %y);
            %prop.SetPosition(%center);            
         case 6:            
            %pos = %x-40 SPC %propstart+getRandom(-5, 5);
            %tile = %layer.PickTile(%pos);
            %x = getWord(%tile, 0);
            %y = getWord(%tile, 1);
            %center = getTCenter(%layer, %x, %y);
            %prop.SetPosition(%center);            
         case 7:            
            %pos = %x+40 SPC %propstart+getRandom(-5, 5);
            %tile = %layer.PickTile(%pos);
            %x = getWord(%tile, 0);
            %y = getWord(%tile, 1);
            %center = getTCenter(%layer, %x, %y);
            %prop.SetPosition(%center);            
      }      
      %prop.SetRotation(%rotation);
      PropBlockTiles(%prop);
   }
}

function BuildPlayerProps(%x, %vehiclestart)
{
   // only take 5 vehicles if that
   
   for(%i=1;%i<=10;%i++)
   {
      if($vehicles[%i, vehicle] !$= "")
      {
         if(%list $= "")
            %list = $vehicles[%i, vehicle];
         else
            %list = %list SPC $vehicles[%i, vehicle];         
      }
   }
   
   %count = getWordCount(%list);

   while(%count > 4)
   {
      %list = removeWord(%list, getRandom(0, %count-1));
      %count = getWordCount(%list);         
   }
   
   for(%i=0;%i<%count;%i++)
   {
      %name = getWord(%list, %i);
      
      %vehicle =    new t2dStaticSprite() {
                     canSaveDynamicFields = "1";
                     layer = 2;  // the vehicle is beneath the pause text
                     scenegraph = "sg";
                     cover = true;
                     prop = true;   // for debug
                  };
         
      %vehicle.SetImageMap(%name);
      
      %vehicle.SetSize(GetVehicleSizeForPeopleBattle(%name));

      %rand = getRandom(1, 2);
      
      if(%rand == 1)
         %rotation = getRandom(70, 110);            
      else
         %rotation = getRandom(250, 290);            
      
      %layer = "infantry" @ $InfantryMap;
            
      switch$ (%i)
      {
         case 0:
            %pos = %x-20 SPC %vehiclestart;
            %tile = %layer.PickTile(%pos);
            %x = getWord(%tile, 0);
            %y = getWord(%tile, 1);
            %center = getTCenter(%layer, %x, %y);
            %vehicle.SetPosition(%center);               
         case 1:
            %pos = %x+20 SPC %vehiclestart;
            %tile = %layer.PickTile(%pos);
            %x = getWord(%tile, 0);
            %y = getWord(%tile, 1);
            %center = getTCenter(%layer, %x, %y);
            %vehicle.SetPosition(%center);            
         case 2:
            %pos = %x-60 SPC %vehiclestart;
            %tile = %layer.PickTile(%pos);
            %x = getWord(%tile, 0);
            %y = getWord(%tile, 1);
            %center = getTCenter(%layer, %x, %y);
            %vehicle.SetPosition(%center);            
         case 3:            
            %pos = %x+60 SPC %vehiclestart;
            %tile = %layer.PickTile(%pos);
            %x = getWord(%tile, 0);
            %y = getWord(%tile, 1);
            %center = getTCenter(%layer, %x, %y);
            %vehicle.SetPosition(%center);            
      }      
      %vehicle.SetRotation(%rotation);
      PropBlockTiles(%vehicle); 
   }
}

function SetEnemyBattleProps(%prop, %map)
{
   // country
   
   if(%map == 10)
   {
      %num = getRandom(1, 6);
      
      switch$ (%num)
      {
         case 1:
            %prop.SetImageMap("crate");
            %prop.SetSize("8 8");
         case 2:
            %prop.SetImageMap("crate");
            %prop.SetSize("8 8");
         case 3:
            %prop.SetImageMap("crate");
            %prop.SetSize("8 8");
         case 4:
            %prop.SetImageMap("crate");
            %prop.SetSize("8 8");
         case 5:
            %prop.SetImageMap("crate");
            %prop.SetSize("8 8");
         case 6:
            %prop.SetImageMap("burnt_car");
            %prop.SetSize("20 12");
      }
   }

   // road
   
   if(%map == 11)
   {
      %num = getRandom(1, 5);
      
      switch$ (%num)
      {
         case 1:
            %prop.SetImageMap("barrel");
            %prop.SetSize("10 10");
         case 2:
            %prop.SetImageMap("cone");
            %prop.SetSize("10 10");
         case 3:
            %prop.SetImageMap("tire");         
            %prop.SetSize("10 10");
         case 4:
            %prop.SetImageMap("burnt_car");
            %prop.SetSize("20 12");
         case 5:
            %prop.SetImageMap("construction_equip");
            %prop.SetSize("6 16");
      }
   }

   // city
   
   if(%map == 12)
   {
      %num = getRandom(1, 17);
      
      switch$ (%num)
      {
         case 1:
            %prop.SetImageMap("cone");
            %prop.SetSize("10 10");
         case 2:
            %prop.SetImageMap("tire");         
            %prop.SetSize("10 10");
         case 3:
            %prop.SetImageMap("trashbin");
            %prop.SetSize("16 16");
         case 4:
            %prop.SetImageMap("burnt_car");
            %prop.SetSize("20 12");
         case 5:
            %prop.SetImageMap("construction_equip");
            %prop.SetSize("6 16");
      }
   }
}

// when a prop is placed, do a search for the surrounding squares and block if needed

function PropBlockTiles(%prop)
{
   // core tile
   
   %position = %prop.GetPosition();
   %layer = "infantry" @ $InfantryMap;
   %tile = %layer.PickTile(%position);   
   %x = getWord(%tile, 0);
   %y = getWord(%tile, 1);
      
   %layer.SetTileCustomData(%x SPC %y, "block");
   
   // left tile
   
   %x = getWord(%position, 0);
   %y = getWord(%position, 1);
   %x = %x-10;
         
   %list = sg.pickrect(%x-2 SPC %y-2, %x+2 SPC %y+2);

   %count = getWordCount(%list);
   
   for(%i=0;%i<%count;%i++)
   {
      %obj = getWord(%list, %i);
      
      if(%obj.cover $= true)
      {
         %tile = %layer.PickTile(%x SPC %y);   
         %layer.SetTileCustomData(getWord(%tile, 0) SPC getWord(%tile, 1), "block");
         break;
      }
   }   

   // right tile
   
   %x = getWord(%position, 0);
   %y = getWord(%position, 1);
   %x = %x+10;
         
   %list = sg.pickrect(%x-2 SPC %y-2, %x+2 SPC %y+2);

   %count = getWordCount(%list);
   
   for(%i=0;%i<%count;%i++)
   {
      %obj = getWord(%list, %i);
      
      
      if(%obj.cover $= true)
      {
         %tile = %layer.PickTile(%x SPC %y);   
         %layer.SetTileCustomData(getWord(%tile, 0) SPC getWord(%tile, 1), "block");
         break;
      }
   }   
}

