Refactor battle & fix name for avatar_manager
This commit is contained in:
@@ -1,15 +1,11 @@
|
||||
import betterproto
|
||||
from game_server.net.session import PlayerSession
|
||||
from game_server.resource import ResourceManager
|
||||
from game_server.resource.configdb.stage_config import StageConfig
|
||||
from game_server.game.battle.battle_manager import BattleManager
|
||||
from rail_proto.lib import (
|
||||
SceneCastSkillCsReq,
|
||||
SceneCastSkillScRsp,
|
||||
SceneBattleInfo,
|
||||
SceneMonsterWave,
|
||||
SceneMonster
|
||||
)
|
||||
import numpy as np
|
||||
|
||||
|
||||
async def handle(session: PlayerSession, msg: SceneCastSkillCsReq) -> betterproto.Message:
|
||||
targets = [id for id in msg.assist_monster_entity_id_list if id > 20000 or id < 10]
|
||||
@@ -18,46 +14,7 @@ async def handle(session: PlayerSession, msg: SceneCastSkillCsReq) -> betterprot
|
||||
id for id in monster.entity_id_list
|
||||
if id not in targets and (id > 20000 or id < 10)
|
||||
)
|
||||
session.player.battle_manager = BattleManager(session.player)
|
||||
if msg.skill_index == 0 and targets:
|
||||
monster_data: list[StageConfig] = []
|
||||
for entity_id in targets:
|
||||
entity_data = session.player.scene_manager.entities.get(entity_id)
|
||||
if entity_data:
|
||||
stage = ResourceManager.instance().find_by_index(StageConfig,entity_data.npc_monster.event_id*10)
|
||||
if not stage:
|
||||
stage = ResourceManager.instance().find_by_index(StageConfig,entity_data.npc_monster.event_id)
|
||||
if stage:
|
||||
monster_data.append(stage)
|
||||
session.player.scene_manager.battle_monster.append(entity_data)
|
||||
if monster_data:
|
||||
return SceneCastSkillScRsp(
|
||||
retcode=0,
|
||||
cast_entity_id=msg.cast_entity_id,
|
||||
battle_info=SceneBattleInfo(
|
||||
rounds_limit=0,
|
||||
world_level=session.player.data.world_level,
|
||||
logic_random_seed=np.random.randint(1, np.iinfo(np.int32).max, dtype=np.int32),
|
||||
stage_id=monster_data[0].StageID,
|
||||
battle_id=1,
|
||||
battle_avatar_list=[
|
||||
session.player.avatar_mananger.get(avatar_id).ToBattleProto(index,session)
|
||||
for index, avatar_id in enumerate(session.player.lineup_manager.get(session.player.data.cur_lineup, None).avatar_list)
|
||||
],
|
||||
monster_wave_list=[
|
||||
SceneMonsterWave(
|
||||
battle_stage_id=monster_list.StageID,
|
||||
battle_wave_id=index,
|
||||
monster_list=[
|
||||
SceneMonster(
|
||||
monster_id=id
|
||||
)
|
||||
for monster_dict in monster_list.MonsterList
|
||||
for monster, id in monster_dict.items()
|
||||
if id > 0
|
||||
]
|
||||
)
|
||||
for index,monster_list in enumerate(monster_data)
|
||||
]
|
||||
)
|
||||
)
|
||||
return session.player.battle_manager.EnterBattle(msg,targets)
|
||||
return SceneCastSkillScRsp(retcode=0)
|
||||
Reference in New Issue
Block a user