def is_main_role(self, value): if self.is_main == value: return self.is_main = value if self.is_main_role: _state = state_factory(type(self.state), [MainCharacterComponent, CharacterMouseComponent]) else: _state = state_factory(type(self.state), [CharacterMouseComponent]) self.changing_state(_state, force=True)
def update(self, context): if self.is_moving_to_new_target(context): return one_loop = super().update(context) if one_loop: if self.game_object.is_main_role: _state = state_factory( CharacterStandNormalState, [MainCharacterComponent, CharacterMouseComponent]) else: _state = state_factory(CharacterStandNormalState, [CharacterMouseComponent]) self.game_object.changing_state(_state, context)
def update(self, context): if self.is_moving_to_new_target(context): return None self.calc_next_target() if is_same_coordinate(self.game_object.get_xy(), self.game_object.target): # 如果已经到达目标坐标点 if self.game_object.is_main_role: _state = state_factory( CharacterStandNormalState, [MainCharacterComponent, CharacterMouseComponent]) else: _state = state_factory(CharacterStandNormalState, [CharacterMouseComponent]) self.game_object.changing_state(_state, context) else: self.game_object.direction = calc_direction_8(self.game_object) self.move(self.speed) super().update(context)
def is_moving_to_new_target(self, context): if self.game_object.is_new_target: # 有新的移动目的地 if self.game_object.is_running: if self.game_object.is_main_role: _state = state_factory( CharacterRunningState, [MainCharacterComponent, CharacterMouseComponent]) else: _state = state_factory(CharacterRunningState, [CharacterMouseComponent]) else: if self.game_object.is_main_role: _state = state_factory( CharacterWalkingState, [MainCharacterComponent, CharacterMouseComponent]) else: _state = state_factory(CharacterWalkingState, [CharacterMouseComponent]) self.game_object.is_new_target = False self.game_object.reset_target() self.game_object.changing_state(_state) # 则改变状态 return True return False
def __init__(self, _id, name, level, reborn, race, version, character, gender): super().__init__(0, 0) self.is_main = False self.id = _id self.name = name self.level = level self.reborn = reborn self.gender = gender self.race = race self.version = version self.character = character self.res_info = characters[self.race][self.version][self.character] self.map_id = None self.map_version = '' self.x = None self.y = None self.state = state_factory(CharacterStandNormalState, [CharacterMouseComponent]) self.init_state(self.state) self.screen_rect = Rect((0, 0), (0, 0)) self.target = (0, 0) self.target_list = [] self.direction = 0 self.is_new_target = False self.is_running = False self.mask = Mask(None, None) self.weapon = None self.is_mouse_over = False self.inited = True self.ready = True