import cocos
from cocos.director import director
from app.verkolst import verkolst
class ProvinceInfo(cocos.layer.Layer):
is_event_handler = False
def __init__(self):
super().__init__()
self.position = (director.window.width+450, director.window.height)
self.province = None
background = cocos.sprite.Sprite('province_info_bg.png', position=(0, 0), anchor=(450, 300))
self.add(background)
self.terrain_type_label = cocos.text.Label("-", font_size=10, position=(-450+30, -30))
self.add(self.terrain_type_label)
self.lc_pops_label = cocos.text.HTMLLabel("-", position=(-450+30, -45))
self.add(self.lc_pops_label)
self.mc_pops_label = cocos.text.HTMLLabel("-", position=(-450+30, -60))
self.add(self.mc_pops_label)
self.uc_pops_label = cocos.text.HTMLLabel("-", position=(-450+30, -75))
self.add(self.uc_pops_label)
self.food_production_label = cocos.text.Label("-", font_size=10, position=(-450+30, -90))
self.add(self.food_production_label)
self.food_consumption_label = cocos.text.Label("-", font_size=10, position=(-450+30, -105))
self.add(self.food_consumption_label)
self.food_rate_label = cocos.text.Label("-", font_size=10, position=(-450+30, -120))
self.add(self.food_rate_label)
self.food_stored_label = cocos.text.Label("-", font_size=10, position=(-450+30, -135))
self.add(self.food_stored_label)
self.trade_value_label = cocos.text.Label("-", font_size=10, position=(-450+30, -150))
self.add(self.trade_value_label)
self.export_partner_label = cocos.text.Label("-", font_size=10, position=(-450+30, -165))
self.add(self.export_partner_label)
def set_province(self, province):
if self.province is None and province is not None:
self.do(cocos.actions.MoveTo((director.window.width, director.window.height), 0.1))
elif self.province is not None and province is None:
self.do(cocos.actions.MoveTo((director.window.width+450, director.window.height), 0.1))
self.province = province
self._render()
def _render(self):
if self.province is not None:
self.terrain_type_label.element.text = (f'{self.province.tile.properties["name"]}'
f' ({self.province.i}, {self.province.j})')
i, j = self.province.i, self.province.j
resources = verkolst.resources
pops_tot = resources.lc_pops[i][j] + resources.mc_pops[i][j] + resources.uc_pops[i][j]
def _fmt(label, number, starving):
if pops_tot > 0:
if starving[i][j]:
hl_color = "#B22222" # Red
elif resources.any_starvation[i][j]:
hl_color = "#DAA520" # Yellow
else:
hl_color = "#FFFFF0" # Off White
return (f'{label}: {int(number[i][j]):d}'
f' - {100*number[i][j]/pops_tot:.1f}%'
)
else:
return f'{label}: - '
self.lc_pops_label.element.text = _fmt('LC', resources.lc_pops, resources.lc_starvation)
self.mc_pops_label.element.text = _fmt('MC', resources.mc_pops, resources.mc_starvation)
self.uc_pops_label.element.text = _fmt('UC', resources.uc_pops, resources.uc_starvation)
self.food_production_label.element.text = f"Food production: {resources.food_production[i][j]:.1f}"
self.food_consumption_label.element.text = f"Food consumption: {resources.food_consumption[i][j]:.1f}"
self.food_rate_label.element.text = f"Food production rate: {resources.food_rate[i][j]:.1f}"
self.food_stored_label.element.text = f"Food stored: {resources.food_stored[i][j]:.1f}"
self.trade_value_label.element.text = f"Trade value: {resources.trade_value[i][j]:.1f}"
self.export_partner_label.element.text = f"Exporting to: ({resources.export_partner[i][j][0]:.1f}, {resources.export_partner[i][j][1]:.1f})"
def on_turn_start(self):
self._render()