public virtual void Initializa(CombatStartInfo combat_start_info) { AttributeSystem.Instance.InitializeAllDefinition(m_combat_factory.GetConfigProvider()); m_level_data = GetConfigProvider().GetLevelData(combat_start_info.m_level_id); m_logic_world = m_combat_factory.CreateLogicWorld(); m_logic_world.Initialize(this, combat_start_info.m_world_seed, false); m_sync_server = m_combat_factory.CreateSyncServer(); m_sync_server.Init(m_logic_world); WorldCreationContext world_context = m_combat_factory.CreateWorldCreationContext(combat_start_info); m_logic_world.BuildLogicWorld(world_context); }
public virtual void BuildLogicWorld(WorldCreationContext world_context) { m_player_manager.SetPstidAndProxyid(world_context.m_pstid2proxyid, world_context.m_proxyid2pstid); IConfigProvider config = GetConfigProvider(); for (int i = 0; i < world_context.m_players.Count; ++i) { ObjectCreationContext context = world_context.m_players[i]; context.m_logic_world = this; context.m_type_data = config.GetObjectTypeData(context.m_object_type_id); context.m_proto_data = config.GetObjectProtoData(context.m_object_proto_id); m_player_manager.CreateObject(context); } OnPlayersCreated(); for (int i = 0; i < world_context.m_entities.Count; ++i) { ObjectCreationContext context = world_context.m_entities[i]; context.m_logic_world = this; context.m_type_data = config.GetObjectTypeData(context.m_object_type_id); context.m_proto_data = config.GetObjectProtoData(context.m_object_proto_id); m_entity_manager.CreateObject(context); } m_player_manager.OnWorldBuilt(); }
protected virtual void BuildLogicWorld(CombatStartInfo combat_start_info) { WorldCreationContext world_context = m_combat_factory.CreateWorldCreationContext(combat_start_info); m_logic_world.BuildLogicWorld(world_context); }
public WorldCreationContext CreateWorldCreationContext(CombatStartInfo combat_start_info) { WorldCreationContext world_context = new WorldCreationContext(); world_context.m_level_id = combat_start_info.m_level_id; world_context.m_game_mode = combat_start_info.m_game_mode; world_context.m_world_seed = combat_start_info.m_world_seed; //本地玩家 world_context.m_pstid2proxyid[CombatTester.TEST_LOCAL_PLAYER_PSTID] = PlayerManager.LOCAL_PLAYER_PROXYID; world_context.m_proxyid2pstid[PlayerManager.LOCAL_PLAYER_PROXYID] = CombatTester.TEST_LOCAL_PLAYER_PSTID; ObjectCreationContext obj_context = new ObjectCreationContext(); obj_context.m_object_proxy_id = PlayerManager.LOCAL_PLAYER_PROXYID; obj_context.m_object_type_id = 3; obj_context.m_object_proto_id = -1; obj_context.m_is_local = true; world_context.m_players.Add(obj_context); //NPC敌人玩家 long proxy_pstid = PlayerManager.AI_ENEMY_PLAYER_PROXYID; world_context.m_pstid2proxyid[proxy_pstid] = PlayerManager.AI_ENEMY_PLAYER_PROXYID; world_context.m_proxyid2pstid[PlayerManager.AI_ENEMY_PLAYER_PROXYID] = proxy_pstid; obj_context = new ObjectCreationContext(); obj_context.m_object_proxy_id = PlayerManager.AI_ENEMY_PLAYER_PROXYID; obj_context.m_object_type_id = 2; obj_context.m_object_proto_id = -1; world_context.m_players.Add(obj_context); //本地玩家的Entity obj_context = new ObjectCreationContext(); obj_context.m_object_proxy_id = PlayerManager.LOCAL_PLAYER_PROXYID; obj_context.m_object_type_id = 111; obj_context.m_object_proto_id = 111001; obj_context.m_birth_info = new BirthPositionInfo(new FixPoint(-5), new FixPoint(0), new FixPoint(-5), new FixPoint(90)); obj_context.m_is_local = true; world_context.m_entities.Add(obj_context); obj_context = new ObjectCreationContext(); obj_context.m_object_proxy_id = PlayerManager.LOCAL_PLAYER_PROXYID; obj_context.m_object_type_id = 101; obj_context.m_object_proto_id = 101002; obj_context.m_birth_info = new BirthPositionInfo(new FixPoint(-5), new FixPoint(0), new FixPoint(0), new FixPoint(90)); obj_context.m_is_local = true; obj_context.m_is_ai = true; world_context.m_entities.Add(obj_context); obj_context = new ObjectCreationContext(); obj_context.m_object_proxy_id = PlayerManager.LOCAL_PLAYER_PROXYID; obj_context.m_object_type_id = 112; obj_context.m_object_proto_id = 112001; obj_context.m_birth_info = new BirthPositionInfo(new FixPoint(-5), new FixPoint(0), new FixPoint(7), new FixPoint(90)); obj_context.m_is_local = true; obj_context.m_is_ai = true; world_context.m_entities.Add(obj_context); //NPC敌人玩家Entity obj_context = new ObjectCreationContext(); obj_context.m_object_proxy_id = PlayerManager.AI_ENEMY_PLAYER_PROXYID; obj_context.m_object_type_id = 101; obj_context.m_object_proto_id = 101001; obj_context.m_birth_info = new BirthPositionInfo(new FixPoint(5), new FixPoint(0), new FixPoint(0), new FixPoint(90));; world_context.m_entities.Add(obj_context); return(world_context); }