def load_organizations(): print("Loading Organizations...", end="") for o in SharedData().mongo_helper.organizations.find(): org = Organization() org.load_from_JSON(o) SharedData().organizations[org.id] = org print("OK")
def run(self): self.app.listen(config.FRONTSERVER_PORT) SharedData().add_action(GeoTimeAction.TimeAction()) SharedData().add_action(SpawnEvents.SpawnSiteEvent()) tornado.ioloop.IOLoop.current().add_callback(SharedData().start_loop) tornado.ioloop.IOLoop.current().start() pass
def load_npcs(): print("Loading NPCs...", end="") for o in SharedData().mongo_helper.NPCs.find(): npc = NPCCharacter() npc.load_from_JSON(o) SharedData().NPCs[npc.id] = npc print("OK")
def __init__(self, app, request, **kwargs): super().__init__(app, request, **kwargs) try: site_id = self.get_cookie("site_id") self.site = SharedData().get_combat_site(int(site_id)) except: self.site = None
def get(self): cp = SharedData().get_online_player(self.session_id) if cp: # self.write(cp.toJSON().replace(",}", "}").replace(",]", "]")) self.write(cp.dict()) else: self.write(b"{}") pass
def load_havens(): print("Loading Havens...", end="") for o in SharedData().mongo_helper.Havens.find(): haven = eval(o["type"])() haven.load_from_JSON(o) SharedData().havens[haven.id] = haven SharedData().add_base(haven) print("OK")
def get(self, objectId): map_obj = SharedData().get_map_object_by_id(int(objectId)) if map_obj: self.set_status(200) self.write(map_obj.dict()) else: self.set_status(404) self.write("{}") pass
def prepare(self): if not self.session_id or not SharedData().is_online(self.session_id): self.session_id = uuid.uuid4().hex self.set_cookie("sessionId", self.session_id) SharedData().add_online(self.session_id) if not self.current_user and self.request.uri.lower() not in [ "/login", "/player/login", "/register" ]: self.redirect("/login") return
def post(self): npc_org = NPCOrganizations() player = Player( "Vincent", "Merle", SharedData().organizations[next( (org for org in SharedData().organizations if SharedData().organizations[org].name == "X-COM"))], random.randint(1000000, 10000000), SharedData().get_default_sector()) SharedData().add_online_player(self.session_id, player) AWaiters().deliver(AWaiters.WAIT_FOR_CHAT_PLAYERS, player) player.CurrentSector.add_object(player.MapObject) self.redirect("/") pass
def map_action(self): action_result = self.action.proceed() if action_result == 1: self.next_action() elif action_result == -1: self.end() SharedData().remove_ufo(self.id) pass pass
def post(self): print(self.request.body) post_data = tornado.escape.json_decode(self.request.body) channel = post_data["channel"] message = post_data["message"] r = SharedData().send_message(self.current_user, channel, message) AWaiters().deliver(AWaiters.WAIT_FOR_CHAT_MESSAGES, r) self.write("{}") pass
class StartBattleHandler(BaseRequestHandler): def __init__(self, app, request, **kwargs): super().__init__(app, request, **kwargs) try: site_id = self.get_cookie("site_id") self.site = SharedData().get_combat_site(int(site_id)) except: self.site = None def get(self): self.render("html/battle.html", player_team=self.current_user.Crew, enemy_team=self.site.Crew) def post(self): site_id = tornado.escape.json_decode(self.request.body)["site_id"] self.set_cookie("site_id", site_id) self.site = SharedData().get_combat_site(int(site_id)) self.site.start_battle(self.current_user) self.write(b'{}')
def post(self): print(self.request.body) channel = tornado.escape.json_decode(self.request.body)["channel"] refresh_all = tornado.escape.json_decode( self.request.body)["refresh_all"] if refresh_all != 1: self.future = AWaiters().subscribe(AWaiters.WAIT_FOR_CHAT_PLAYERS) yield self.future if not self.alive: return players = SharedData().get_players_on_channel(channel) res = '{ "players" : [' for token_id in players: player = SharedData().get_player_by_token(token_id) res += ',{"name": "%s"}' % player.Name pass res += "]}" self.write(res.replace("[,", "[")) pass
def post(self): bunker_id = tornado.escape.json_decode(self.request.body)["bunker_id"] b = SharedData().get_base(bunker_id) if not b.refresh_event or b.refresh_event.status == ActionStatus.FINISHED: b.refresh_event = RefreshRecruitsEvent(b.clear_recruits) SharedData().add_action(b.refresh_event) b.refresh_recruits() self.write(b.dict()) pass
def __init__(self, o, ms: map.MapSector): self.id = random.randint(0, config.EVENTS_MAX_ID) self.data = o self.map_object = MapObjects.CombatSiteMO() p = Point() p.new() self.map_object.new(p, self.id, o['name']) self.sector = ms self.Crew = [] self.log = [] ms.add_object(self.map_object) self.duration = 20 self.spawn_event = DeSpawnSiteEvent(self.despawn) SharedData().add_action(self.spawn_event) pass
def post(self): soldier_id = tornado.escape.json_decode( self.request.body)["recruit_id"] bunker_id = tornado.escape.json_decode(self.request.body)["bunker_id"] b = SharedData().get_base(bunker_id) soldier = [ soldier for soldier in b.avail_recruits if soldier.id == soldier_id ] if soldier: b.avail_recruits.remove(soldier[0]) self.current_user.Crew.append(soldier[0]) self.set_status(200) else: self.set_status(404) self.write(self.current_user.dict()) pass
def save(self): haven = SharedData().havens[self.haven_id] haven.save()
def tick(self): if self.status != ActionStatus.ACTIVE: return SharedData().spawn_combat_sites(CombatSite) AWaiters().deliver(AWaiters.WAIT_FOR_MAP_OBJECTS, {}) self.timeout = self.interval
def get(self): objects = SharedData().get_all_map_objects_json() self.set_status(200) self.write(objects)
def load_all(): SharedData() load_npcs() load_havens() load_organizations()
def despawn(self): self.spawn_event = None self.sector.remove_object(self.map_object) SharedData().remove_ufo(self.id) # del SharedData.AllFlyingObjects[self.id] pass
def get_current_user(self): return SharedData().get_online_player(self.session_id)
def save(self): SharedData().save_npc_character(npc=self)
def post(self): site_id = tornado.escape.json_decode(self.request.body)["site_id"] self.set_cookie("site_id", site_id) self.site = SharedData().get_combat_site(int(site_id)) self.site.start_battle(self.current_user) self.write(b'{}')
def save(self): SharedData().save_haven(haven=self)
def get(self): if SharedData().is_online(self.session_id): self.redirect("/") else: self.render("html/login.html") pass
def save(self): SharedData().save_organization(o=self)