Initial commit
This commit is contained in:
162
DATA/SCRIPTS/LIBRARY/PGSPAWNUNITS.LUA
Normal file
162
DATA/SCRIPTS/LIBRARY/PGSPAWNUNITS.LUA
Normal file
@@ -0,0 +1,162 @@
|
||||
-- $Id: //depot/Projects/StarWars_Expansion/Run/Data/Scripts/Library/PGSpawnUnits.lua#1 $
|
||||
--/////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
--
|
||||
-- (C) Petroglyph Games, Inc.
|
||||
--
|
||||
--
|
||||
-- ***** ** * *
|
||||
-- * ** * * *
|
||||
-- * * * * *
|
||||
-- * * * * * * * *
|
||||
-- * * *** ****** * ** **** *** * * * ***** * ***
|
||||
-- * ** * * * ** * ** ** * * * * ** ** ** *
|
||||
-- *** ***** * * * * * * * * ** * * * *
|
||||
-- * * * * * * * * * * * * * * *
|
||||
-- * * * * * * * * * * ** * * * *
|
||||
-- * ** * * ** * ** * * ** * * * *
|
||||
-- ** **** ** * **** ***** * ** *** * *
|
||||
-- * * *
|
||||
-- * * *
|
||||
-- * * *
|
||||
-- * * * *
|
||||
-- **** * *
|
||||
--
|
||||
--/////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
-- C O N F I D E N T I A L S O U R C E C O D E -- D O N O T D I S T R I B U T E
|
||||
--/////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
--
|
||||
-- $File: //depot/Projects/StarWars_Expansion/Run/Data/Scripts/Library/PGSpawnUnits.lua $
|
||||
--
|
||||
-- Original Author: Brian Hayes
|
||||
--
|
||||
-- $Author: Andre_Arsenault $
|
||||
--
|
||||
-- $Change: 37816 $
|
||||
--
|
||||
-- $DateTime: 2006/02/15 15:33:33 $
|
||||
--
|
||||
-- $Revision: #1 $
|
||||
--
|
||||
--/////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
require("PGBaseDefinitions")
|
||||
|
||||
|
||||
function Process_Reinforcements()
|
||||
for index, btable in ipairs(block_table) do
|
||||
for k, block in pairs(btable) do
|
||||
if not block.block then
|
||||
--Haven't yet issued the reinforcement command, or else a previous attempt failed
|
||||
block.block = Reinforce_Unit(block.ref_type, block.entry_marker, block.player, true, block.obey_zones)
|
||||
elseif block.block.IsFinished() then
|
||||
new_units = block.block.Result()
|
||||
if type(new_units) == "table" then
|
||||
for j, unit in pairs(new_units) do
|
||||
DebugMessage("%s -- Process_Reinforcements Block: %s, unit: %s, allow:%s, delete:%s", tostring(Script), tostring(block.block), tostring(unit), tostring(block.allow_ai_usage), tostring(block.delete_after_scenario))
|
||||
if block.allow_ai_usage then
|
||||
--MessageBox("allow_ai_usage: %s", tostring(unit))
|
||||
unit.Prevent_AI_Usage(false)
|
||||
end
|
||||
if block.delete_after_scenario then
|
||||
--MessageBox("deleting after scenario: %s", tostring(unit))
|
||||
unit.Mark_Parent_Mode_Object_For_Death()
|
||||
end
|
||||
table.insert(block.block_track.unit_list, unit)
|
||||
end
|
||||
block.block_track.type_count = block.block_track.type_count - 1
|
||||
if block.block_track.type_count <= 0 then
|
||||
if type(block.callback) == "function" then
|
||||
block.callback(block.block_track.unit_list)
|
||||
end
|
||||
table.remove(block_table, index)
|
||||
Process_Reinforcements()
|
||||
return
|
||||
end
|
||||
end
|
||||
block_table[index][k] = nil
|
||||
Process_Reinforcements()
|
||||
return
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
new_units = nil
|
||||
end
|
||||
|
||||
function Add_Reinforcement(object_type, player)
|
||||
|
||||
if type(object_type) == "string" then
|
||||
object_type = Find_Object_Type(object_type)
|
||||
end
|
||||
|
||||
Reinforce_Unit(object_type, false, player, true, false)
|
||||
end
|
||||
|
||||
|
||||
-- Reinforce units via transport, simultaneously.
|
||||
function ReinforceList(type_list, entry_marker, player, allow_ai_usage, delete_after_scenario, ignore_reinforcement_rules, callback)
|
||||
|
||||
if type(ignore_reinforcement_rules) == "function" then
|
||||
MessageBox("Received a function for 6th parameter; expected bool. Note the signature change, sorry.")
|
||||
return
|
||||
end
|
||||
|
||||
if player == nil then
|
||||
MessageBox("expected a player for 3rd parameter; aborting")
|
||||
return
|
||||
end
|
||||
|
||||
table.insert(block_table, {})
|
||||
index = table.getn(block_table)
|
||||
|
||||
block_track = {
|
||||
type_count = table.getn(type_list),
|
||||
unit_list = {}
|
||||
}
|
||||
|
||||
for k, unit_type in pairs(type_list) do
|
||||
ref_type = Find_Object_Type(unit_type)
|
||||
btab = {
|
||||
block = nil,
|
||||
block_track = block_track,
|
||||
ref_type = ref_type,
|
||||
entry_marker = entry_marker,
|
||||
player = player,
|
||||
obey_zones = not ignore_reinforcement_rules,
|
||||
allow_ai_usage = allow_ai_usage,
|
||||
callback = callback,
|
||||
delete_after_scenario = delete_after_scenario
|
||||
}
|
||||
table.insert(block_table[index], btab)
|
||||
btab = nil
|
||||
ref_type = nil
|
||||
end
|
||||
end
|
||||
|
||||
-- Spawn units simultaneously.
|
||||
function SpawnList(type_list, entry_marker, player, allow_ai_usage, delete_after_scenario)
|
||||
|
||||
unit_list = {}
|
||||
|
||||
for k, unit_type in pairs(type_list) do
|
||||
ref_type = Find_Object_Type(unit_type)
|
||||
new_units= Spawn_Unit(ref_type, entry_marker, player)
|
||||
for j, unit in pairs(new_units) do
|
||||
table.insert(unit_list, unit)
|
||||
if allow_ai_usage then
|
||||
--MessageBox("allow_ai_usage: %s", tostring(unit))
|
||||
unit.Prevent_AI_Usage(false)
|
||||
else
|
||||
unit.Prevent_AI_Usage(true) -- This doesn't happen automatically, unlike for Reinforce_Unit
|
||||
end
|
||||
if delete_after_scenario then
|
||||
--MessageBox("deleting after scenario: %s", tostring(unit))
|
||||
unit.Mark_Parent_Mode_Object_For_Death()
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
new_units = nil
|
||||
|
||||
return unit_list
|
||||
end
|
||||
Reference in New Issue
Block a user