Code:
/** SImplifica el "spawneado" dinámico de enemigos permitiendo la "simultaneidad". Talvez poco elegantemente pero simplifica bastante el scripting en SamGameInfo */
class EnemySpawnMgr extends actor;
var name AttackType_A, EnemyType_A;
var name AttackType_B, EnemyType_B;
/** Esta función simpifica el "espawneado" de enemigos, su temporización y "despeje" */
/** SQUAD A*/
function SetSquad_A(name EnemyType, name AttackType, float Periodo, float Lifetime) {
EnemyType_A = GetSpawnFunctionName(EnemyType, "A");
AttackType_A = AttackType;
SetTimer(Periodo, true, EnemyType_A); // espawneado de enemigos cada Periodo segundos
SetTimer(LifeTime, false, 'ClearSquad_A'); // eliminación de timer anterior despues de LifeTime segundos
}
function ClearSquad_A() {
ClearTimer(EnemyType_A);
}
/** SQUAD B */
function SetSquad_B(name EnemyType, name AttackType, float Periodo, float Lifetime) {
EnemyType_B = GetSpawnFunctionName(EnemyType, "B");
AttackType_B = AttackType;
SetTimer(Periodo, true, EnemyType_B); // espawneado de enemigos cada Periodo segundos
SetTimer(LifeTime, false, 'ClearSquad_B'); // eliminación de timer anterior despues de LifeTime segundos
}
function ClearSquad_B() {
ClearTimer(EnemyType_B);
}
function name GetSpawnFunctionName(name EnemyType, String squad) {
if(squad == "A") {
if(EnemyType == 'Egg') EnemyType = 'SpawnEgg_A';
else if(EnemyType == 'Egg2') EnemyType = 'SpawnEgg2_A';
else if(EnemyType == 'Cangrejo') EnemyType = 'SpawnCangrejo_A';
else if(EnemyType == 'Anguilla') EnemyType = 'SpawnAnguilla_A';
}
else if (squad == "B") {
if(EnemyType == 'Egg') EnemyType = 'SpawnEgg_B';
else if(EnemyType == 'Egg2') EnemyType = 'SpawnEgg2_B';
else if(EnemyType == 'Cangrejo') EnemyType = 'SpawnCangrejo_B';
else if(EnemyType == 'Anguilla') EnemyType = 'SpawnAnguilla_B';
}
return EnemyType;
}
/** SPAWNING BICHOS AQUI , cada tipo tiene una versión según el numero de squads que hayan (por el momento dos A y B) **/
function SpawnEgg_A() {
local SamEnemyEgg newPawn;
NewPawn = Spawn(class'SamEnemyEgg',,,vect(0, -1000, 0)); // el vector es un punto lejos de la zona visible en el juego
SamEnemyController(NewPawn.Controller).Initial(AttackType_A); //
}
function SpawnEgg2_A() {
local SamEnemyEgg2 newPawn;
NewPawn = Spawn(class'SamEnemyEgg2',,,vect(0, -1000, 0)); // el vector es un punto lejos de la zona visible en el juego
SamEnemyController(NewPawn.Controller).Initial(AttackType_A); //
}
function SpawnCangrejo_A() {
local SamEnemyCangrejo newPawn;
NewPawn = Spawn(class'SamEnemyCangrejo',,,vect(0, -1000, 0)); // el vector es un punto lejos de la zona visible en el juego
SamEnemyController(NewPawn.Controller).Initial(AttackType_A); //
}
function SpawnAnguilla_A() {
local SamEnemyAnguilla newPawn;
NewPawn = Spawn(class'SamEnemyAnguilla',,,vect(0, -1000, 0)); // el vector es un punto lejos de la zona visible en el juego
SamEnemyController(NewPawn.Controller).Initial(AttackType_A); //
}
/** SQUAD B*/
function SpawnEgg_B() {
local SamEnemyEgg newPawn;
NewEggPawn = Spawn(class'SamEnemyEgg',,,vect(0, -1000, 0)); // el vector es un punto lejos de la zona visible en el juego
SamEnemyController(NewPawn.Controller).Initial(AttackType_B); //
}
function SpawnEgg2_B() {
local SamEnemyEgg2 newPawn;
NewPawn = Spawn(class'SamEnemyEgg2',,,vect(0, -1000, 0)); // el vector es un punto lejos de la zona visible en el juego
SamEnemyController(NewPawn.Controller).Initial(AttackType_B); //
}
function SpawnCangrejo_B() {
local SamEnemyCangrejo newPawn;
NewPawn = Spawn(class'SamEnemyCangrejo',,,vect(0, -1000, 0)); // el vector es un punto lejos de la zona visible en el juego
SamEnemyController(NewPawn.Controller).Initial(AttackType_B); //
}
function SpawnAnguilla_B() {
local SamEnemyAnguilla newPawn;
NewPawn = Spawn(class'SamEnemyAnguilla',,,vect(0, -1000, 0)); // el vector es un punto lejos de la zona visible en el juego
SamEnemyController(NewPawn.Controller).Initial(AttackType_B); //
}
Bookmarks