]> jfr.im git - irc/rizon/acid.git/blame - pyva/pyva/src/main/python/erepublik/api/region.py
Split pyva plugin into pyva.core and pyva.pyva
[irc/rizon/acid.git] / pyva / pyva / src / main / python / erepublik / api / region.py
CommitLineData
685e346e
A
1import map
2import utils
3from decimal import Decimal
4from feed import XmlFeed
5
6def from_id(id):
7 return Region(XmlFeed('http://api.erepublik.com/v2/feeds/regions/%d' % int(id)))
8
9def from_name(name):
10 id = map.get_region_id(name)
11
12 if id == None:
13 return None
14
15 return from_id(id)
16
17def from_dict(dict):
18 return from_id(dict['id'])
19
20class Region:
21 """A region of Erepublik"""
22
23 def __init__(self, f):
24 self.id = f.int('/region/id')
25 self.name = f.text('/region/name')
26 self.population = f.int('/region/citizen-count')
27 self.country = {'name': map.get_country_name(f.int('/region/country/id')), 'id': f.int('/region/country/id')}
28
29 hospitals = f.elements('/region/buildings/hospitals/hospital')
30
31 if hospitals == None:
32 self.hospitals = None
33 else:
34 self.hospitals = [{
35 'area': h.int('area-of-effect'), 'budget': h.int('wellness-budget'), 'quality': h.int('customization-level'),
36 'max_heal': h.int('max-heal-per-citizen')} for h in hospitals]
37
38 defense = f.elements('/region/buildings/defense-systems/defense-system')
39
40 if defense == None:
41 self.defense = None
42 else:
43 self.defense = [{
44 'area': ds.int('area-of-effect'), 'bonus': ds.int('defense-bonus'), 'quality': ds.int('customization-level'),
45 'durability': ds.int('durability')} for ds in defense]
46
47 self.raw_materials = f.text('/region/raw-materials/name')
48
49 self.neighbours = [{
50 'country': {'name': map.get_country_name(neighbour.int('country/id')), 'id': neighbour.int('country/id')},
51 'region': {'name': map.get_region_name(neighbour.int('region/id')), 'id': neighbour.int('region/id')}}
52 for neighbour in f.elements('/region/neighbours/neighbour')]
53
54 self.attack_cost = 25 + Decimal(self.population) / 10
55
56 def __str__(self):
57 return '[%d] %s' % (self.id, self.name)