Vega strike Python Modules doc  0.5.1
Documentation of the " Modules " folder of Vega strike
 All Data Structures Namespaces Files Functions Variables
dynamic_universe.py
Go to the documentation of this file.
1 # -*- coding: utf-8 -*-
2 import VS
3 import Director
4 import vsrandom
5 import generate_dyn_universe
6 import dynamic_news
7 import debug
8 import fg_util
9 import dynamic_battle
10 import faction_ships
11 
12 global dnewsman_
14 _ships=[]
15 player_kill_list=[]
16 def updatePlayerKillList(playernum,faction):
17  fac = VS.GetFactionIndex(faction)
18  ret=0
19  for i in xrange(VS.getNumPlayers()-len(player_kill_list)):
20  player_kill_list.append([]);
21  for i in xrange(VS.getNumPlayers()):
22  numfac=Director.getSaveDataLength(i,"kills")
23  for j in xrange(numfac-len(player_kill_list[i])):
24  player_kill_list[i].append(0)
25  for j in xrange(numfac):
26  if (i==playernum and j==fac):
27  ret = Director.getSaveData(i,"kills",j)-player_kill_list[i][j];
28  player_kill_list[i][j]=Director.getSaveData(i,"kills",j)
29  return ret
30 
32  def __init__ (self,fgname,faction,typ,un):
33  self.un=un
34  self.fgname=fgname
35  self.faction= faction
36  self.starsystem = VS.getSystemFile()
37  self.type=typ
38  def Check(self):
39  dead=not self.un
40  if (not dead):
41  dead = self.un.GetHull()<=0
42  if (dead):
43  debug.debug("Uunit died")
44  if (VS.systemInMemory (self.starsystem)):
45  if fg_util.RemoveShipFromFG(self.fgname,self.faction,self.type)!=0:
46  if (VS.getPlayerX(0)):
47  debug.debug('unit died for real')
48  if (VS.GetRelation(self.faction,VS.getPlayerX(0).getFactionName())>0):
49  dynamic_battle.rescuelist[self.starsystem]=(self.faction,"Shadow",faction_ships.get_enemy_of(self.faction))
50  debug.debug("friend in trouble")
51  global dnewsman_
52  numships = updatePlayerKillList(0,self.faction)
53  debug.debug("num ships killed ")
54  debug.debug(numships)
55  if ((numships>0 and VS.getPlayer()) or fg_util.NumShipsInFG(self.fgname,self.faction)==0): #generate news here fg killed IRL
56  varList=[str(Director.getSaveData(0,"stardate",0)),dnewsman_.TYPE_DESTROYED,dnewsman_.STAGE_END,"unknown",self.faction,dnewsman_.SUCCESS_WIN,str(dynamic_battle.getImportanceOfType(self.type)),self.starsystem,dnewsman_.KEYWORD_DEFAULT,"unknown","unknown",self.fgname,self.type]
57  if (numships>0 and VS.getPlayer()):
58  varList=[str(Director.getSaveData(0,"stardate",0)),dnewsman_.TYPE_DESTROYED,dnewsman_.STAGE_END,VS.getPlayer().getFactionName(),self.faction,dnewsman_.SUCCESS_WIN,str(dynamic_battle.getImportanceOfType(self.type)),self.starsystem,dnewsman_.KEYWORD_DEFAULT,VS.getPlayer().getFlightgroupName(),VS.getPlayer().getName(),self.fgname,self.type]
59  dnewsman_.writeDynamicString(varList)
60  debug.debug('news about unit dying')
61  else:
62  fg_util.LandShip(self.fgname,self.faction,self.type)
63  return 0
64  else:
65  sys=self.un.getUnitSystemFile()
66  if (len(sys)):
67  self.starsystem=sys
68  return 1
69 def TrackLaunchedShip(fgname,fac,typ,un):
70  fg_util.LaunchShip(fgname,fac,typ)
71  global _ships
72  _ships.append( ShipTracker(fgname,fac,typ,un) )
73 curiter=0
74 def Execute():
76  global curiter, _ships
77  if (len(_ships)>curiter):
78  if (not _ships[curiter].Check()):
79  _ships[curiter] = _ships[-1]
80  del _ships[-1]
81  else:
82  curiter+=1
83  else:
84  curiter=0