Пример #1
0
	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
Пример #2
0
    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)
Пример #3
0
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
Пример #4
0
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
Пример #5
0
	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()
		)
Пример #6
0
 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())
Пример #7
0
 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
Пример #8
0
	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()
Пример #9
0
	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)
Пример #10
0
 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()
Пример #11
0
    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: