def get_faction_attr(self, key, default="[[A faction attribute could not be found, and a default was not provided]]"): #debug("Seeking '"+key+"' in faction data") for i in self.faction_memberships: #print faction.get_faction(i).config.keys() if key in faction.get_faction(i).config.keys(): return faction.get_faction(i).config[key] return default
def run_in_event(self, event): if self.config["pos"] == "random": pos_x = self.root.state_manager.states[ "game"].player.rigidbody.x + random.uniform( -self.config["random_within_x"][0], self.config["random_within_x"][1]) pos_y = self.root.state_manager.states[ "game"].player.rigidbody.y + random.uniform( -self.config["random_within_y"][0], self.config["random_within_y"][1]) entity = ship.create_ship(self.root, self.config["ship_id"], pos_x, pos_y) self.root.state_manager.states["game"].entities.append(entity) if "internal_id" in self.config: event.database["ship_mappings"][ self.config["internal_id"]] = entity.hash_id if "add_triggers" in self.config: for group in self.config["add_triggers"]: entity.add_trigger(group["group"], group["primitive"]) if "join_factions" in self.config: for faction_ in self.config["join_factions"]: faction.get_faction(faction_).do_join(entity)
def _load_ship(root, node, parent): #print ">>>"+str(node) s = create_ship(root, node["ship_id"], 0, 0, not "packed" in node.keys(), node.get("ai", 1)) if "packed" in node.keys(): s.config.aro.append(node["config_cache"]) for item in node["inventory"]: serialize.load_from_node(root, item, s) s.damage.hull=node["currhull"] s.database=node["database"] s.damage.shields=node["currshld"] s.current_power=node["currpwr"] s.damage.load_systems_json(node["damagesystems"]) s.rigidbody = physics._load_rigidbody(node["rigidbody"], s) s.hash_id=node["hash_id"] s.triggers.update(node["triggers"]) if node.get("ai",1): s.ai=ai._load_controller(root, s, node["ai_controller"]) for item in node.get("factions", []): faction.get_faction(item).do_join(s, force_functional=1) else: s.rigidbody.x=node["x"] s.rigidbody.y=node["y"] for item in node.get("factions", []): faction.get_faction(item).do_join(s, force_functional=0) s.player_relations=node.get("relations", 0) return s
def _load_ship(root, node, parent): #print ">>>"+str(node) s = create_ship(root, node["ship_id"], 0, 0, not "packed" in node.keys(), node.get("ai", 1)) if "packed" in node.keys(): s.config.aro.append(node["config_cache"]) for item in node["inventory"]: serialize.load_from_node(root, item, s) s.damage.hull = node["currhull"] s.database = node["database"] s.damage.shields = node["currshld"] s.current_power = node["currpwr"] s.damage.load_systems_json(node["damagesystems"]) s.rigidbody = physics._load_rigidbody(node["rigidbody"], s) s.hash_id = node["hash_id"] s.triggers.update(node["triggers"]) if node.get("ai", 1): s.ai = ai._load_controller(root, s, node["ai_controller"]) for item in node.get("factions", []): faction.get_faction(item).do_join(s, force_functional=1) else: s.rigidbody.x = node["x"] s.rigidbody.y = node["y"] for item in node.get("factions", []): faction.get_faction(item).do_join(s, force_functional=0) s.player_relations = node.get("relations", 0) return s
def run_in_dialog(self, dialog, speech): ship_b=ship.create_ship(absroot, "cardassian_freighter_UNI_wreck", *self.config["worldpos"]) ship_b.rigidbody._vector.magnitude=75 ship_b.rigidbody._vector.angle=22 faction.get_faction("cardassianunion").do_join(ship_b) absroot.savegame.database["sector_data"][self.config["secid"]]["packed_entities"].append( ship_b.save_to_config_node() )
def run_in_dialog(self, dialog, speech): ship_b = ship.create_ship(absroot, "cardassian_freighter_UNI_wreck", *self.config["worldpos"]) ship_b.rigidbody._vector.magnitude = 75 ship_b.rigidbody._vector.angle = 22 faction.get_faction("cardassianunion").do_join(ship_b) absroot.savegame.database["sector_data"][ self.config["secid"]]["packed_entities"].append( ship_b.save_to_config_node())
def get_faction_attr( self, key, default="[[A faction attribute could not be found, and a default was not provided]]" ): #debug("Seeking '"+key+"' in faction data") for i in self.faction_memberships: #print faction.get_faction(i).config.keys() if key in faction.get_faction(i).config.keys(): return faction.get_faction(i).config[key] return default
def render_factions(self, x, y): oy=0 for fmember in self.faction_memberships: if faction.get_faction(fmember).visible: temp_rect=pygame.Rect(x, y+oy, *faction.get_faction(fmember).icon_image.get_size()) faction.get_faction(fmember).tt_delay_update(temp_rect) absroot.screen.screen.blit(faction.get_faction(fmember).icon_image, (x, y+oy)) oy+=faction.get_faction(fmember).icon_image.get_height()
def run_in_event(self, event): if self.config["pos"]=="random": pos_x=self.root.state_manager.states["game"].player.rigidbody.x+random.uniform(-self.config["random_within_x"][0],self.config["random_within_x"][1]) pos_y=self.root.state_manager.states["game"].player.rigidbody.y+random.uniform(-self.config["random_within_y"][0],self.config["random_within_y"][1]) entity=ship.create_ship( self.root, self.config["ship_id"], pos_x, pos_y ) self.root.state_manager.states["game"].entities.append(entity) if "internal_id" in self.config: event.database["ship_mappings"][self.config["internal_id"]]=entity.hash_id if "add_triggers" in self.config: for group in self.config["add_triggers"]: entity.add_trigger(group["group"], group["primitive"]) if "join_factions" in self.config: for faction_ in self.config["join_factions"]: faction.get_faction(faction_).do_join(entity)
def render_factions(self, x, y): oy = 0 for fmember in self.faction_memberships: if faction.get_faction(fmember).visible: temp_rect = pygame.Rect( x, y + oy, *faction.get_faction(fmember).icon_image.get_size()) faction.get_faction(fmember).tt_delay_update(temp_rect) absroot.screen.screen.blit( faction.get_faction(fmember).icon_image, (x, y + oy)) oy += faction.get_faction(fmember).icon_image.get_height()
for e in events: if e.type == pygame.QUIT: debug("Shutting Down") info("Writing an autosave to autosave.sgs") serialize.save_game(root, "saves/autosave.sgs") debug("--Save completed, dying") sys.exit() elif e.type == pygame.KEYDOWN: if e.key == pygame.K_BACKQUOTE and pygame.key.get_mods( ) & pygame.KMOD_CTRL: root.console.set_active() if e.key == pygame.K_F1: root.quest_manager.start_quest("event_pirate_raid_1") if e.key == pygame.K_F2: faction.get_faction("klingonempire").try_join(g.player) if e.key == pygame.K_F3: faction.get_faction("klingonempire").try_leave(g.player) if e.key == pygame.K_F4: absroot.state_manager.start_interdicting( "cutscene_anim", "fsanim_intro_ke") if e.key == pygame.K_F7: enable_slowmo = not enable_slowmo if e.key == pygame.K_F12: absroot.state_manager.start_interdicting("ass_info") elif e.type == pygame.VIDEORESIZE: debug("Root resize") root.renderspace_size = e.dict['size'] root.screen = rotutil.ScrollingWorldManager( sgc.surface.Screen(root.renderspace_size, pygame.RESIZABLE)) elif e.type == pygame.MOUSEMOTION: