Vega strike Python Modules doc  0.5.1
Documentation of the " Modules " folder of Vega strike
 All Data Structures Namespaces Files Functions Variables
NewsManager Class Reference

Public Member Functions

def __init__
 
def translateDynamicString
 
def getPOV
 
def sTovarlist
 
def updateDockedAtFaction
 
def isStoryRelevant
 
def writeDynamicString
 

Data Fields

 dockedat_faction
 
 data
 
 translator
 

Static Public Attributes

int RANDOM_INTEGER_INDEX = 0
 
int STARDATE_INDEX = 1
 
int EVENT_TYPE_INDEX = 2
 
int EVENT_STAGE_INDEX = 3
 
int AGGRESSOR_INDEX = 4
 
int DEFENDER_INDEX = 5
 
int AGGRESSOR_SUCCESS_INDEX = 6
 
int EVENT_SCALE_INDEX = 7
 
int EVENT_SYSTEM_INDEX = 8
 
int EVENT_KEYWORD_INDEX = 9
 
int AGGRESSOR_FLIGHTGROUP_INDEX = 10
 
int AGGRESSOR_SHIPTYPE_INDEX = 11
 
int DEFENDER_FLIGHTGROUP_INDEX = 12
 
int DEFENDER_SHIPTYPE_INDEX = 13
 
string KEYWORD_DEFAULT = "all"
 
string TYPE_SIEGE = "siege"
 
string TYPE_EXPLORATION = "exploration"
 
string TYPE_BATTLE = "battle"
 
string TYPE_FLEETBATTLE = "fleetbattle"
 
string TYPE_DESTROYED = "destroyed"
 
string STAGE_BEGIN = "start"
 
string STAGE_MIDDLE = "middle"
 
string STAGE_END = "end"
 
string SUCCESS_WIN = '1'
 
string SUCCESS_DRAW = '0'
 
string SUCCESS_LOSS = '-1'
 
int POV_GOOD = 5
 
int POV_BAD = 6
 
int POV_NEUTRAL = 7
 
float POV_CUTOFF = 0.25
 

Detailed Description

This class is used to manage dynamic news, it is
designed to be used as a global object, but can be used
otherwise.

Definition at line 252 of file dynamic_news.py.

Constructor & Destructor Documentation

def __init__ (   self)

Definition at line 294 of file dynamic_news.py.

295  def __init__(self):
296  self.dockedat_faction = None
299  self.translator = NewsTranslator(self.data)

Member Function Documentation

def getPOV (   self,
  varlist 
)
Returns the corresponding POV_* class variable
for the reaction of the dockedat faction to the status
of the event.

Definition at line 319 of file dynamic_news.py.

References NewsManager.AGGRESSOR_INDEX, debug.debug, NewsManager.DEFENDER_INDEX, NewsManager.dockedat_faction, NewsManager.POV_BAD, NewsManager.POV_CUTOFF, NewsManager.POV_GOOD, NewsManager.POV_NEUTRAL, NewsManager.SUCCESS_DRAW, NewsManager.SUCCESS_LOSS, and NewsManager.SUCCESS_WIN.

320  def getPOV(self, varlist):
321  """Returns the corresponding POV_* class variable
322  for the reaction of the dockedat faction to the status
323  of the event."""
324  relatdef = VS.GetRelation(self.dockedat_faction,varlist[self.DEFENDER_INDEX])
325  relatagg = VS.GetRelation(self.dockedat_faction,varlist[self.AGGRESSOR_INDEX])
326  success = varlist[NewsManager.AGGRESSOR_SUCCESS_INDEX]
327  if (relatdef <= -self.POV_CUTOFF and relatagg <= -self.POV_CUTOFF) or (relatdef >= self.POV_CUTOFF and relatagg >= self.POV_CUTOFF):
328  return self.POV_NEUTRAL
329  elif relatdef > relatagg:
330  if success == self.SUCCESS_WIN:
331  return self.POV_BAD
332  elif success == self.SUCCESS_LOSS:
333  return self.POV_GOOD
334  elif success == self.SUCCESS_DRAW:
335  return self.POV_GOOD
336  elif relatdef < relatagg:
337  if success == self.SUCCESS_WIN:
338  return self.POV_GOOD
339  elif success == self.SUCCESS_LOSS:
340  return self.POV_BAD
341  elif success == self.SUCCESS_DRAW:
342  return self.POV_BAD
343  else:
344  debug.debug("ERROR: VS is returning -0 for relationship relatagg number")
345  return self.POV_NEUTRAL
def isStoryRelevant (   self,
  strin 
)
Is the event in this string relevant to the current
system and dockedat faction?

Definition at line 374 of file dynamic_news.py.

References NewsManager.EVENT_SYSTEM_INDEX, NewsManager.EVENT_TYPE_INDEX, NewsManager.sTovarlist(), NewsManager.TYPE_BATTLE, and NewsManager.TYPE_DESTROYED.

375  def isStoryRelevant(self, strin):
376  """Is the event in this string relevant to the current
377  system and dockedat faction?"""
378  varlist = self.sTovarlist(strin)
379  limit = False
380  if varlist[self.EVENT_TYPE_INDEX] in [self.TYPE_BATTLE, self.TYPE_DESTROYED]:
381  limit = 1
382  else:
383  return True
384  event_sys = varlist[self.EVENT_SYSTEM_INDEX]
385  syslist = [VS.getSystemFile()]
386  done_syslist = list()
387  while limit >= 0:
388  if event_sys in syslist:
389  return True
390  else:
391  done_syslist+=syslist
392  new_syslist = list()
393  for syst in syslist:
394  for i in range(VS.GetNumAdjacentSystems(syst)):
395  sy = VS.GetAdjacentSystem(syst,i)
396  if sy not in done_syslist:
397  new_syslist.append(sy)
398  syslist = new_syslist
399  limit-=1
400  return False
def sTovarlist (   self,
  s 
)
Converts a stored dynamic news string into a
variable list usable by other methods and classes.

Definition at line 346 of file dynamic_news.py.

References NewsManager.EVENT_SCALE_INDEX, NewsManager.RANDOM_INTEGER_INDEX, and NewsManager.STARDATE_INDEX.

347  def sTovarlist(self, s):
348  """Converts a stored dynamic news string into a
349  variable list usable by other methods and classes."""
350  varlist = s.split(',')
351  varlist[self.RANDOM_INTEGER_INDEX] = int(varlist[self.RANDOM_INTEGER_INDEX])
352  varlist[self.STARDATE_INDEX] = float(varlist[self.STARDATE_INDEX])
353  varlist[self.EVENT_SCALE_INDEX] = float(varlist[self.EVENT_SCALE_INDEX])
354  return varlist
def translateDynamicString (   self,
  strin 
)
Takes an argument, of type str (this is not checked),
that is of the same format as that stored by
self.writeDynamicString(varlist)

Definition at line 300 of file dynamic_news.py.

References NewsManager.AGGRESSOR_FLIGHTGROUP_INDEX, NewsManager.dockedat_faction, NewsManager.EVENT_KEYWORD_INDEX, NewsManager.getPOV(), and NewsManager.sTovarlist().

301  def translateDynamicString(self, strin):
302  """Takes an argument, of type str (this is not checked),
303  that is of the same format as that stored by
304  self.writeDynamicString(varlist)"""
305  varlist = self.sTovarlist(strin)
306  if varlist[self.AGGRESSOR_FLIGHTGROUP_INDEX] == VS.getPlayer().getFlightgroupName():
307  varlist[self.EVENT_KEYWORD_INDEX] = "player"
308  keys = self.data.makeNewsKeyList(varlist, self.dockedat_faction, self.getPOV(varlist))
309  stories = self.data.getNewsList(keys)
310  if not len(stories):
311  stories = self.data.getNewsList(keys, True)
312  if not len(stories):
313  return False
314  item = self.data.getBestMatch(stories, varlist)
315  if item:
316  return self.translator.translateItem(item, varlist, self.dockedat_faction)
317  else:
318  return False
def updateDockedAtFaction (   self)
Updates the current self.dockedat_faction to its
current value.  Should be called before translating
a batch of stores.

Definition at line 355 of file dynamic_news.py.

References NewsManager.dockedat_faction.

356  def updateDockedAtFaction(self):
357  """Updates the current self.dockedat_faction to its
358  current value. Should be called before translating
359  a batch of stores."""
360  i = VS.getUnitList()
361  playa=VS.getPlayer()
362  while i.notDone():
363  un = i.current()
364  i.advance()
365  if (un.isDocked(playa) or playa.isDocked(un)):
366  if not (un.isPlanet() or (un.getFactionName() == "neutral")):
367  fac = un.getFactionName()
368  # debug.debug('returning '+un.getName()+' s faction as '+fac+' from flightgroup '+un.getFlightgroupName())
369  self.dockedat_faction = fac
370  break
371  retfac = VS.GetGalaxyFaction(VS.getSystemFile())
372  # debug.debug("Returning " + retfac + " as the systems faction")
373  self.dockedat_faction = retfac
def writeDynamicString (   self,
  varlist 
)
Stores a news story list into the \"dynamic news\"
key in the save game.

Definition at line 401 of file dynamic_news.py.

References string.join(), vsrandom.randrange(), and locale.str().

402  def writeDynamicString(self, varlist):
403  """Stores a news story list into the \"dynamic news\"
404  key in the save game."""
405  varlist = string.join([str(vsrandom.randrange(0,4194304))]+varlist,',')
406  import Director
407  Director.pushSaveString(0,"dynamic_news",varlist)
408 

Field Documentation

int AGGRESSOR_FLIGHTGROUP_INDEX = 10
static

Definition at line 267 of file dynamic_news.py.

int AGGRESSOR_INDEX = 4
static

Definition at line 261 of file dynamic_news.py.

int AGGRESSOR_SHIPTYPE_INDEX = 11
static

Definition at line 268 of file dynamic_news.py.

int AGGRESSOR_SUCCESS_INDEX = 6
static

Definition at line 263 of file dynamic_news.py.

data

Definition at line 297 of file dynamic_news.py.

int DEFENDER_FLIGHTGROUP_INDEX = 12
static

Definition at line 269 of file dynamic_news.py.

int DEFENDER_INDEX = 5
static

Definition at line 262 of file dynamic_news.py.

int DEFENDER_SHIPTYPE_INDEX = 13
static

Definition at line 270 of file dynamic_news.py.

dockedat_faction

Definition at line 295 of file dynamic_news.py.

int EVENT_KEYWORD_INDEX = 9
static

Definition at line 266 of file dynamic_news.py.

int EVENT_SCALE_INDEX = 7
static

Definition at line 264 of file dynamic_news.py.

int EVENT_STAGE_INDEX = 3
static

Definition at line 260 of file dynamic_news.py.

int EVENT_SYSTEM_INDEX = 8
static

Definition at line 265 of file dynamic_news.py.

int EVENT_TYPE_INDEX = 2
static

Definition at line 259 of file dynamic_news.py.

string KEYWORD_DEFAULT = "all"
static

Definition at line 272 of file dynamic_news.py.

int POV_BAD = 6
static

Definition at line 289 of file dynamic_news.py.

float POV_CUTOFF = 0.25
static

Definition at line 292 of file dynamic_news.py.

int POV_GOOD = 5
static

Definition at line 288 of file dynamic_news.py.

int POV_NEUTRAL = 7
static

Definition at line 290 of file dynamic_news.py.

int RANDOM_INTEGER_INDEX = 0
static

Definition at line 257 of file dynamic_news.py.

string STAGE_BEGIN = "start"
static

Definition at line 280 of file dynamic_news.py.

string STAGE_END = "end"
static

Definition at line 282 of file dynamic_news.py.

string STAGE_MIDDLE = "middle"
static

Definition at line 281 of file dynamic_news.py.

int STARDATE_INDEX = 1
static

Definition at line 258 of file dynamic_news.py.

string SUCCESS_DRAW = '0'
static

Definition at line 285 of file dynamic_news.py.

string SUCCESS_LOSS = '-1'
static

Definition at line 286 of file dynamic_news.py.

string SUCCESS_WIN = '1'
static

Definition at line 284 of file dynamic_news.py.

translator

Definition at line 298 of file dynamic_news.py.

string TYPE_BATTLE = "battle"
static

Definition at line 276 of file dynamic_news.py.

string TYPE_DESTROYED = "destroyed"
static

Definition at line 278 of file dynamic_news.py.

string TYPE_EXPLORATION = "exploration"
static

Definition at line 275 of file dynamic_news.py.

string TYPE_FLEETBATTLE = "fleetbattle"
static

Definition at line 277 of file dynamic_news.py.

string TYPE_SIEGE = "siege"
static

Definition at line 274 of file dynamic_news.py.


The documentation for this class was generated from the following file: