require 'halo_classes.objects.object'
require 'halo_classes.objects.unit'
require 'halo_classes.objects.biped'
require 'halo_classes.objects.vehicle'
require 'halo_classes.objects.item'
require 'halo_classes.objects.weapon'
require 'halo_classes.objects.equipment'
require 'halo_classes.objects.garbage'
require 'halo_classes.objects.projectile'
require 'halo_classes.objects.device'
require 'halo_classes.objects.device_machine'
require 'halo_classes.objects.device_control'
require 'halo_classes.objects.light_fixture'

function __helper_set_f32_operand(address,operand,new)
  if (operand == "=") then
	write_f32(address,new)
	return new
  end
  if (operand == "+") then
    new = read_f32(address) + new
	write_f32(address,new)
	return new
  end
  if (operand == "-") then
    new = read_f32(address) - new
	write_f32(address,new)
	return new
  end
  if (operand == "*" or string.lower(operand) == "x") then
    new = read_f32(address) * new
	write_f32(address,new)
	return new
  end
  if (operand == "/") then
    new = read_f32(address) / new
	write_f32(address,new)
	return new
  end
  if (operand == "%") then
    new = read_f32(address) % new
	write_f32(address,new)
	return new
  end
  return false
end

function load_object(object_id)
  obj = get_object(object_id)
  if (obj == nil) then 
    --cout("nil") 
	return nil 
  end
  a = read_u16(obj+0xB4)
  --cout("obj_type:"..a)
  if (a == 9) then return Light_Fixture(object_id) end
  if (a == 8) then return Device_Control(object_id) end
  if (a == 7) then return Device_Machine(object_id) end
  if (a == 6) then return Object(object_id) end --??
  if (a == 5) then return Projectile(object_id) end
  if (a == 4) then return Garbage(object_id) end
  if (a == 3) then return Equipment(object_id) end
  if (a == 2) then return Weapon(object_id) end
  if (a == 1) then return Vehicle(object_id) end
  if (a == 0) then return Biped(object_id) end
  return nil
end