Exemple #1
0
    def render( self ):
        pbge.my_state.view.overlays.clear()
        pbge.my_state.view.overlays[ self.attacker.pos ] = (self.cursor_sprite,self.SC_ORIGIN)
        mmecha = pbge.my_state.view.modelmap.get(pbge.my_state.view.mouse_tile)
        if pbge.my_state.view.mouse_tile in self.legal_tiles:
            aoe = self.invo.area.get_area( self.camp, self.attacker.pos, pbge.my_state.view.mouse_tile )
            for p in aoe:
                pbge.my_state.view.overlays[ p ] = (self.cursor_sprite,self.SC_AOE)
        if self.targets:
            for t in self.targets:
                aoe = self.invo.area.get_area( self.camp, self.attacker.pos, t )
                for p in aoe:
                    pbge.my_state.view.overlays[ p ] = (self.cursor_sprite,self.SC_AOE)
        if pbge.my_state.view.mouse_tile in self.legal_tiles:
            pbge.my_state.view.overlays[ pbge.my_state.view.mouse_tile ] = (self.cursor_sprite,self.SC_CURSOR)
        elif mmecha and self.can_move_and_attack( mmecha[0] ):
            fp = min(self.firing_points, key=lambda r: self.nav.cost_to_tile.get(r,10000))
            pbge.my_state.view.overlays[ pbge.my_state.view.mouse_tile ] = (self.cursor_sprite,self.SC_CURSOR)
            mypath = self.nav.get_path(fp)
            for p in mypath[1:]:
                pbge.my_state.view.overlays[ p ] = (self.cursor_sprite,self.SC_TRAILMARKER)

        else:
            pbge.my_state.view.overlays[ pbge.my_state.view.mouse_tile ] = (self.cursor_sprite,self.SC_VOIDCURSOR)

        pbge.my_state.view()

        # Display info for this tile.
        my_info = self.camp.scene.get_tile_info(pbge.my_state.view.mouse_tile)
        if my_info:
            if mmecha and hasattr(self.invo.fx,"get_odds"):
                odds,modifiers = self.invo.fx.get_odds(self.camp,self.attacker,mmecha[0])
                my_info.info_blocks.append(info.OddsInfoBlock(odds,modifiers))
            my_info.popup()
    def render(self, flash=False):
        if self.num_targets > 1:
            self.targets_widget.active = True
        else:
            self.targets_widget.active = False
        pbge.my_state.view.overlays.clear()
        pbge.my_state.view.overlays[self.pc.pos] = (self.cursor_sprite,
                                                    self.SC_ORIGIN)
        mmecha = pbge.my_state.view.modelmap.get(pbge.my_state.view.mouse_tile)
        if mmecha:
            mmecha = [m for m in mmecha if m.is_operational()]
        if self.invo and pbge.my_state.view.mouse_tile in self.legal_tiles:
            aoe = self.invo.area.get_area(self.camp, self.pc.pos,
                                          pbge.my_state.view.mouse_tile)
            for p in aoe:
                pbge.my_state.view.overlays[p] = (self.cursor_sprite,
                                                  self.SC_AOE)
        if self.invo and self.targets:
            for t in self.targets:
                aoe = self.invo.area.get_area(self.camp, self.pc.pos, t)
                for p in aoe:
                    pbge.my_state.view.overlays[p] = (self.cursor_sprite,
                                                      self.SC_AOE)
        if pbge.my_state.view.mouse_tile in self.legal_tiles:
            pbge.my_state.view.overlays[pbge.my_state.view.mouse_tile] = (
                self.cursor_sprite, self.SC_CURSOR)
            if self.clock:
                self.clock.set_ap_mp_costs(ap_to_spend=1)
        elif mmecha and self.can_move_and_attack(mmecha[0].pos):
            if self.camp.fight:
                mp_remaining = self.camp.fight.cstat[self.pc].mp_remaining
                if self.clock:
                    self.clock.set_ap_mp_costs(
                        ap_to_spend=1,
                        mp_to_spend=self.nav.cost_to_tile[self.mypath[-1]])
            else:
                mp_remaining = float('inf')
            traildrawer.draw_trail(
                self.cursor_sprite, self.SC_TRAILMARKER, self.SC_ZEROCURSOR,
                self.SC_ENDCURSOR, self.camp.scene, self.pc, mp_remaining,
                self.mypath + [pbge.my_state.view.mouse_tile])
        else:
            pbge.my_state.view.overlays[pbge.my_state.view.mouse_tile] = (
                self.cursor_sprite, self.SC_VOIDCURSOR)
            if self.clock:
                self.clock.set_ap_mp_costs()

        pbge.my_state.view()

        # Display info for this tile.
        my_info = self.camp.scene.get_tile_info(pbge.my_state.view)
        if my_info:
            if self.invo and mmecha and hasattr(self.invo.fx, "get_odds"):
                odds, modifiers = self.invo.fx.get_odds(
                    self.camp, self.pc, mmecha[0])
                my_info.info_blocks.append(info.OddsInfoBlock(odds, modifiers))
            my_info.view_display()