00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028 #include "gSpawn.h"
00029 #include "gArena.h"
00030 #include "gCycle.h"
00031 #include "eTimer.h"
00032 #include "tConfiguration.h"
00033
00034
00035
00036 static REAL sg_spawnBack = 2.202896;
00037 static REAL sg_spawnSide = 2.75362;
00038 static tSettingItem< REAL > sg_spawnBackConf( "SPAWN_WINGMEN_BACK", sg_spawnBack );
00039 static tSettingItem< REAL > sg_spawnSideConf( "SPAWN_WINGMEN_SIDE", sg_spawnSide );
00040
00041 gSpawnPoint::gSpawnPoint(const eCoord &loc,const eCoord &dir)
00042 :id(-1),location(loc),direction(dir),
00043 lastTimeUsed(se_GameTime()-1000000),numberOfUses(0){}
00044
00045
00046 void gSpawnPoint::Spawn(eCoord &loc,eCoord &dir){
00047
00048
00049
00050
00051
00052 int d,away;
00053 if (numberOfUses%2==1){
00054 d=1;
00055 away=(numberOfUses+1)/2;
00056 }
00057 else{
00058 d=-1;
00059 away=numberOfUses/2;
00060 }
00061
00062 dir=direction;
00063
00064 loc=location * gArena::SizeMultiplier() - dir.Turn(sg_spawnBack,-d*sg_spawnSide) * away * gCycle::SpeedMultiplier();
00065
00066 lastTimeUsed=se_GameTime();
00067 numberOfUses++;
00068
00069 }
00070
00071
00072 REAL gSpawnPoint::Danger(){
00073 return numberOfUses+(100/(se_GameTime()+10-lastTimeUsed));
00074 }
00075
00076 void gSpawnPoint::Clear(){
00077 lastTimeUsed=se_GameTime()-1000000;
00078 numberOfUses=0;
00079 }
00080
00081
00082