From 7d7bd76ae83c7aed3432bdc1ed3e206c1f156241 Mon Sep 17 00:00:00 2001 From: xeon Date: Thu, 1 Aug 2024 01:38:05 +0300 Subject: [PATCH] Implement MainCityBgmConfigTemplate --- .../FileCfg/MainCityBgmConfigTemplateTb.json | 32 +++++++++++++++++++ .../tables/main_city_bgm_config_template.rs | 12 +++++++ nap_data/src/tables/mod.rs | 1 + nap_gameserver/src/logic/game/frontend.rs | 8 +++-- 4 files changed, 51 insertions(+), 2 deletions(-) create mode 100644 assets/FileCfg/MainCityBgmConfigTemplateTb.json create mode 100644 nap_data/src/tables/main_city_bgm_config_template.rs diff --git a/assets/FileCfg/MainCityBgmConfigTemplateTb.json b/assets/FileCfg/MainCityBgmConfigTemplateTb.json new file mode 100644 index 0000000..7aa359f --- /dev/null +++ b/assets/FileCfg/MainCityBgmConfigTemplateTb.json @@ -0,0 +1,32 @@ +[ + { + "ID": 0, + "PlayEventName": "Play_BGM_Maincity", + "StateName": "Normal" + }, + { + "ID": 1001, + "PlayEventName": "Play_BGM_Maincity", + "StateName": "Hack_Maincity" + }, + { + "ID": 1002, + "PlayEventName": "Play_BGM_Maincity", + "StateName": "WorkShop_OnMission" + }, + { + "ID": 1003, + "PlayEventName": "Play_BGM_Maincity", + "StateName": "SummerActivity_Ready" + }, + { + "ID": 1004, + "PlayEventName": "Play_BGM_Maincity", + "StateName": "SummerActivity_Start" + }, + { + "ID": 1005, + "PlayEventName": "Play_BGM_Maincity", + "StateName": "Mission_Accomplish" + } +] diff --git a/nap_data/src/tables/main_city_bgm_config_template.rs b/nap_data/src/tables/main_city_bgm_config_template.rs new file mode 100644 index 0000000..64f1248 --- /dev/null +++ b/nap_data/src/tables/main_city_bgm_config_template.rs @@ -0,0 +1,12 @@ +use serde::Deserialize; + +template_id!(MainCityBgmConfig u32 id); + +#[derive(Deserialize, Debug)] +#[serde(rename_all = "PascalCase")] +pub struct MainCityBgmConfigTemplate { + #[serde(rename = "ID")] + pub id: MainCityBgmConfigID, + pub play_event_name: String, + pub state_name: String, +} diff --git a/nap_data/src/tables/mod.rs b/nap_data/src/tables/mod.rs index 921eef8..c21cfb1 100644 --- a/nap_data/src/tables/mod.rs +++ b/nap_data/src/tables/mod.rs @@ -84,6 +84,7 @@ template_tables! { WeaponTemplate; MainCityObjectTemplate; MainCityDefaultObjectTemplate; + MainCityBgmConfigTemplate; ArchiveFileQuestTemplate; ArchiveBattleQuestTemplate; } diff --git a/nap_gameserver/src/logic/game/frontend.rs b/nap_gameserver/src/logic/game/frontend.rs index 4d5d431..3a6d148 100644 --- a/nap_gameserver/src/logic/game/frontend.rs +++ b/nap_gameserver/src/logic/game/frontend.rs @@ -1,4 +1,4 @@ -use data::tables::{AvatarBaseID, SectionConfigID}; +use data::tables::{AvatarBaseID, MainCityBgmConfigID, SectionConfigID}; use proto::*; use thiserror::Error; @@ -14,6 +14,7 @@ use super::NapGameMode; pub struct FrontendGame { section_id: SectionConfigID, frontend_avatar_id: AvatarBaseID, + main_city_bgm: MainCityBgmConfigID, scene_unit_mgr: SceneUnitManager, camera_x: u32, camera_y: u32, @@ -30,6 +31,8 @@ pub enum FrontendGameError { } impl FrontendGame { + const DEFAULT_BGM_ID: u32 = 1005; + pub fn new( section_id: SectionConfigID, avatar_id: AvatarBaseID, @@ -40,6 +43,7 @@ impl FrontendGame { let instance = Self { section_id, main_city_time, + main_city_bgm: MainCityBgmConfigID::new_unchecked(Self::DEFAULT_BGM_ID), scene_unit_mgr: SceneUnitManager::new(section_id), frontend_avatar_id: avatar_id, camera_x: 0xFFFFFFFF, @@ -63,9 +67,9 @@ impl NapGameMode for FrontendGame { Some(SceneInfo { scene_type: self.scene_type() as u32, hall_scene_info: Some(HallSceneInfo { - main_city_bgm_id: 1005, section_id: self.section_id.value(), frontend_avatar_id: self.frontend_avatar_id.value(), + main_city_bgm_id: self.main_city_bgm.value(), camera_x: self.camera_x, camera_y: self.camera_y, transform: self