This commit is contained in:
amizing25
2024-04-09 23:08:41 +07:00
parent ec8be0839c
commit a56d3e768f
14 changed files with 1532 additions and 8733 deletions
@@ -33,7 +33,8 @@ pub async fn on_player_login_cs_req(
stamina: 240,
basic_info: Some(PlayerBasicInfo {
nickname: String::from("xeondev"),
level: 5,
level: 70,
world_level: 6,
stamina: 240,
..Default::default()
}),
+5 -2
View File
@@ -1,3 +1,5 @@
use crate::net::tools::{JsonData, Lightcone};
use super::*;
static UNLOCKED_AVATARS: [u32; 54] = [
@@ -11,6 +13,7 @@ pub async fn on_get_avatar_data_cs_req(
session: &mut PlayerSession,
body: &GetAvatarDataCsReq,
) -> Result<()> {
let json = JsonData::load().await;
session
.send(
CMD_GET_AVATAR_DATA_SC_RSP,
@@ -19,13 +22,13 @@ pub async fn on_get_avatar_data_cs_req(
is_all: body.is_get_all,
avatar_list: UNLOCKED_AVATARS
.iter()
.map(|id| Avatar {
.map(|id| json.avatars.get(id).map(|v|v.to_avatar_proto(Option::<&Lightcone>::None, vec![])).unwrap_or(Avatar {
base_avatar_id: *id,
level: 80,
promotion: 6,
rank: 6,
..Default::default()
})
}))
.collect(),
..Default::default()
},
+151 -1
View File
@@ -1,3 +1,5 @@
use rand::Rng;
use crate::net::tools::{self, BattleType, Monster};
use super::*;
@@ -10,7 +12,7 @@ pub async fn on_start_cocoon_stage_cs_req(
let mut battle_info = SceneBattleInfo {
stage_id: player.battle_config.stage_id,
logic_random_seed: 4444,
logic_random_seed: rand::thread_rng().gen::<u32>(),
// battle_id: 1,
kimmjioaodn: player.battle_config.cycle_count,
..Default::default()
@@ -167,3 +169,151 @@ pub async fn on_pve_battle_result_cs_req(
)
.await
}
// scene cast skill cs req
pub async fn on_mpemgbdkigg(session: &mut PlayerSession, request: &Mpemgbdkigg) -> Result<()> {
let player = tools::JsonData::load().await;
let mut battle_info = SceneBattleInfo {
stage_id: player.battle_config.stage_id,
logic_random_seed: rand::thread_rng().gen::<u32>(),
// battle_id: 1,
kimmjioaodn: player.battle_config.cycle_count,
..Default::default()
};
// avatars
for i in 0..4 {
let avatar_id = &player.lineups.get(&i).unwrap_or(&0);
if **avatar_id == 0 {
continue;
}
if let Some(avatar) = player.avatars.get(&avatar_id) {
let (battle_avatar, techs) = avatar.to_battle_avatar_proto(
i,
player
.lightcones
.iter()
.find(|v| v.equip_avatar == avatar.avatar_id),
player
.relics
.iter()
.filter(|v| v.equip_avatar == avatar.avatar_id)
.collect::<Vec<_>>(),
);
for tech in techs {
battle_info.buff_list.push(tech);
}
battle_info.battle_avatar_list.push(battle_avatar);
};
}
// custom stats for avatars
for stat in &player.battle_config.custom_stats {
for avatar in &mut battle_info.battle_avatar_list {
if avatar.relic_list.len() == 0 {
avatar.relic_list.push(BattleRelic {
id: 61011,
main_affix_id: 1,
level: 1,
..Default::default()
})
}
if let Some(sub_affix) = avatar.relic_list[0]
.sub_affix_list
.iter_mut()
.find(|v| v.affix_id == stat.sub_affix_id)
{
sub_affix.cnt = stat.count;
} else {
avatar.relic_list[0].sub_affix_list.push(RelicAffix {
affix_id: stat.sub_affix_id,
cnt: stat.count,
step: stat.step,
})
}
}
}
// blessings
for blessing in &player.battle_config.blessings {
let mut buffs = BattleBuff {
id: blessing.id,
level: blessing.level,
wave_flag: 0xffffffff,
owner_index: 0xffffffff,
..Default::default()
};
if let Some(dynamic_key) = &blessing.dynamic_key {
buffs
.dynamic_values
.insert(dynamic_key.key.clone(), dynamic_key.value as f32);
};
battle_info.buff_list.push(buffs);
}
// pf score object
if player.battle_config.battle_type == BattleType::PF {
let mut battle_target = Hbinjjdphdo::default();
battle_target.bgnpebhgelb.push(BattleTarget {
id: 10001,
progress: 0,
..Default::default()
});
battle_info.ichnbmifjdi.insert(1, battle_target);
for i in 2..=4 {
battle_info.ichnbmifjdi.insert(i, Hbinjjdphdo::default());
}
battle_info.ichnbmifjdi.insert(
5,
Hbinjjdphdo {
bgnpebhgelb: vec![
BattleTarget {
id: 2001,
progress: 0,
..Default::default()
},
BattleTarget {
id: 2002,
progress: 0,
..Default::default()
},
],
},
);
}
// SU
if player.battle_config.battle_type == BattleType::SU {
battle_info.mpobegkcikn.push(Npjnkmmjfdf {
chgdaadjepi: player.battle_config.path_resonance_id,
status: Some(Agpocmnmmdi {
sp: Some(AmountInfo {
cur_amount: 10_000,
max_amount: 10_000,
}),
}),
..Default::default()
})
}
// monsters
battle_info.monster_wave_list = Monster::to_scene_monster_waves(&player.battle_config.monsters);
let mut resp = Ifiohnjlehh {
elgjckaejld: request.elgjckaejld,
retcode: 0,
pbgpinglheg: vec![],
..Default::default()
};
if request.hjopkcdlmln.len() > 0 && request.oknicldeddl <= 4 {
resp.battle_info = Some(battle_info)
}
session.send(CMD_SCENE_CAST_SKILL_SC_RSP, resp).await?;
Ok(())
}
+121 -28
View File
@@ -1,6 +1,6 @@
use super::*;
static FINISHED_MAIN_MISSIONS: [u32; 365] = [
static FINISHED_MAIN_MISSIONS: [u32; 1298] = [
1000101, 1000111, 1000112, 1000113, 1000114, 1000201, 1000202, 1000203, 1000204, 1000300,
1000301, 1000302, 1000303, 1000304, 1000400, 1000401, 1000402, 1000410, 1000500, 1000501,
1000502, 1000503, 1000504, 1000505, 1000510, 1000511, 1010001, 1010002, 1010101, 1010201,
@@ -11,33 +11,126 @@ static FINISHED_MAIN_MISSIONS: [u32; 365] = [
1011503, 1020101, 1020201, 1020302, 1020301, 1020400, 1020401, 1020402, 1020403, 1020501,
1020601, 1020701, 1020702, 1020801, 1020901, 1021001, 1021101, 1021201, 1021301, 1021401,
1021501, 1021601, 1021702, 1021703, 1030101, 1030102, 1030201, 1030202, 1030301, 1030302,
1030303, 1030304, 1030401, 1030402, 1030403, 1030501, 1030601, 1030701, 1030702, 1030801,
2000001, 2000002, 2000003, 2000004, 2000100, 2000101, 2000131, 2000132, 2000133, 2000110,
2000111, 2000301, 2000103, 2000112, 2000108, 2000104, 2000102, 2000105, 2000106, 2000107,
2000313, 2000314, 2000109, 2000113, 2000116, 2000118, 2000119, 2000120, 2000122, 2000302,
2000303, 2000304, 2000305, 2000310, 2000311, 2000312, 2000320, 2000701, 2000702, 2000703,
2000704, 2000705, 2000706, 2000707, 2000801, 2000802, 2000803, 2000901, 2000902, 2000903,
2001001, 2001002, 2001003, 2010005, 2010301, 2010302, 2011103, 2011104, 2011409, 2010401,
2010402, 2010405, 2010502, 2010503, 2010701, 2010708, 2010709, 2010720, 2010730, 2010731,
2010732, 2010733, 2010734, 2010735, 2010904, 2011101, 2011102, 2011105, 2011301, 2011302,
2011303, 2011501, 2011502, 2010909, 2010910, 2011601, 2011701, 2011801, 2011901, 2011902,
2011903, 2011904, 2011905, 2011906, 2020301, 2020302, 2020304, 2020316, 2020317, 2020318,
2020319, 2020401, 2020402, 2020403, 2020404, 2020405, 2020406, 2020407, 2020303, 2020103,
2020104, 2020105, 2020106, 2020107, 2020108, 2020109, 2020110, 2020111, 2020201, 2020202,
2020203, 2020204, 2020205, 2000201, 2000202, 2000203, 2000204, 2000205, 2000206, 2000207,
2000208, 2000209, 2000211, 2000212, 2010201, 2010202, 2010203, 2010204, 2010205, 2010206,
2010500, 2010501, 2010705, 2010706, 2010901, 2010902, 2010903, 2010702, 2010703, 2011400,
2011401, 2011406, 2011402, 2011403, 2011404, 2011405, 2011407, 2011408, 2011410, 2011411,
2011412, 2011413, 2010905, 2010906, 2010907, 2010908, 2010911, 2010912, 2020305, 2020306,
2020309, 2020307, 2020308, 2020701, 2020702, 2020703, 2020313, 2020314, 2020315, 6020101,
6020201, 6020202, 2020501, 2020502, 2020503, 2020504, 2020505, 2020506, 2020507, 2020601,
2020602, 2020603, 2020604, 2020801, 2020802, 2020901, 2021001, 2021002, 2021009, 2021601,
2021602, 2021701, 2021702, 2021703, 2021704, 2021705, 2021801, 2021802, 2021803, 2030001,
2030002, 2030003, 2030101, 2030102, 2030201, 2030202, 2030203, 2030301, 2030302, 3000201,
3000202, 3000203, 3000211, 3000212, 3000213, 3000301, 3000302, 3000303, 3000522, 3000523,
3000524, 3000525, 3000526, 3000527, 3000601, 3000602, 3000603, 3000604, 3000701, 3000702,
3000703, 3000704, 3000705, 3000800, 3000801, 3000802, 3000803, 3010102, 3010103, 3010104,
3010105, 3010201, 3010202, 3010203, 3010204,
1030303, 1030304, 1030401, 1030402, 1030403, 1030501, 1030601, 1030701, 1030702, 1030703,
1030801, 1030901, 1031001, 1031002, 1031101, 1031201, 1031301, 1031401, 1031501, 1031601,
1031701, 1031801, 1031901, 1032001, 1032101, 1032201, 1032301, 1032302, 1032401, 1032501,
1032601, 1032602, 1032701, 1032702, 1032703, 1032704, 1032705, 1032801, 1032802, 1032901,
1032902, 1033001, 1033101, 1033102, 2000001, 2000002, 2000003, 2000004, 2000100, 2000101,
2000131, 2000132, 2000133, 2000110, 2000111, 2000301, 2000103, 2000112, 2000108, 2000104,
2000102, 2000105, 2000106, 2000107, 2000313, 2000314, 2000109, 2000113, 2000116, 2000118,
2000119, 2000120, 2000122, 2000302, 2000303, 2000304, 2000305, 2000310, 2000311, 2000312,
2000320, 2000701, 2000702, 2000703, 2000704, 2000705, 2000706, 2000707, 2000801, 2000802,
2000803, 2000901, 2000902, 2000903, 2001001, 2001002, 2001003, 2010005, 2010301, 2010302,
2011103, 2011104, 2011409, 2010401, 2010402, 2010405, 2010502, 2010503, 2010701, 2010708,
2010709, 2010720, 2010730, 2010731, 2010732, 2010733, 2010734, 2010735, 2010904, 2011101,
2011102, 2011105, 2011301, 2011302, 2011303, 2011501, 2011502, 2010909, 2010910, 2011601,
2011701, 2011801, 2011901, 2011902, 2011903, 2011904, 2011905, 2011906, 2020301, 2020302,
2020304, 2020316, 2020317, 2020318, 2020319, 2020401, 2020402, 2020403, 2020404, 2020405,
2020406, 2020407, 2020303, 2020103, 2020104, 2020105, 2020106, 2020107, 2020108, 2020109,
2020110, 2020111, 2020201, 2020202, 2020203, 2020204, 2020205, 2000201, 2000202, 2000203,
2000204, 2000205, 2000206, 2000207, 2000208, 2000209, 2000211, 2000212, 2010201, 2010202,
2010203, 2010204, 2010205, 2010206, 2010500, 2010501, 2010705, 2010706, 2010901, 2010902,
2010903, 2010702, 2010703, 2011400, 2011401, 2011406, 2011402, 2011403, 2011404, 2011405,
2011407, 2011408, 2011410, 2011411, 2011412, 2011413, 2010905, 2010906, 2010907, 2010908,
2010911, 2010912, 2020305, 2020306, 2020309, 2020307, 2020308, 2020701, 2020702, 2020703,
2020313, 2020314, 2020315, 6020101, 6020201, 6020202, 2020501, 2020502, 2020503, 2020504,
2020505, 2020506, 2020507, 2020601, 2020602, 2020603, 2020604, 2020801, 2020802, 2020901,
2021001, 2021002, 2021009, 2021601, 2021602, 2021701, 2021702, 2021703, 2021704, 2021705,
2021801, 2021802, 2021803, 2030001, 2030002, 2030003, 2030101, 2030102, 2030201, 2030202,
2030203, 2030301, 2030302, 2030401, 2030402, 3000201, 3000202, 3000203, 3000211, 3000212,
3000213, 3000301, 3000302, 3000303, 3000522, 3000523, 3000524, 3000525, 3000526, 3000527,
3000601, 3000602, 3000603, 3000604, 3000701, 3000702, 3000703, 3000704, 3000705, 3000800,
3000801, 3000802, 3000803, 3010102, 3010103, 3010104, 3010105, 3010201, 3010202, 3010203,
3010204, 3010205, 3011011, 3011012, 3011013, 3011014, 3011111, 3011112, 3011113, 3011114,
3011201, 3011202, 3011203, 3011204, 3011205, 3011206, 3011207, 3011208, 3011401, 3011402,
3011403, 3011404, 3011405, 3011406, 3011407, 3011408, 3011501, 3011502, 3011503, 3011504,
3011505, 3011601, 3011602, 3011603, 3011604, 3011605, 3011606, 3011607, 3011608, 3011609,
3011610, 3012001, 3020101, 3020102, 3020103, 3020104, 3020105, 3020106, 3020107, 3020108,
3020201, 3020202, 3020203, 3020204, 3020205, 3020206, 4020101, 4020102, 4020103, 4020104,
4020105, 4020106, 4020107, 4020108, 4020109, 4020110, 4020111, 4020112, 4020113, 4020114,
4010105, 4010106, 4010107, 4010112, 4010113, 4010131, 4010115, 4010116, 4010121, 4010122,
4010123, 4010124, 4010125, 4010126, 4010127, 4010128, 4010133, 4010134, 4010135, 4010130,
4010136, 4010137, 4010138, 4010140, 4010141, 4015101, 4015103, 4015102, 4015202, 4015203,
4015204, 4015301, 4015302, 4015303, 4015401, 4015402, 4015403, 4030001, 4030002, 4030003,
4030004, 4030006, 4030007, 4030009, 4030010, 4040001, 4040002, 4040003, 4040004, 4040005,
4040006, 4040052, 4040007, 4040008, 4040051, 4040009, 4040010, 4040011, 4040012, 4040053,
4040014, 4040015, 4040017, 4040018, 4040019, 4040020, 4040021, 4040022, 4040023, 4040024,
4040100, 4040189, 4040190, 4040101, 4040151, 4040154, 4040102, 4040103, 4040153, 4040104,
4040152, 4040105, 4040106, 4040155, 4040107, 4040108, 4040109, 4040156, 4040157, 4040110,
4040114, 4040115, 4040158, 4040159, 4040160, 4040161, 4040162, 4040116, 4040169, 4040163,
4040164, 4040165, 4040166, 4040167, 4040168, 4040170, 4040171, 4040172, 4040173, 4040174,
4040175, 4040176, 4040177, 4040178, 4040179, 4040180, 4040181, 4040182, 4040183, 4040184,
4040185, 4040186, 4040117, 4040118, 4040119, 4040187, 4040120, 4040188, 4040121, 4040122,
4040123, 4040124, 4040125, 4040126, 4040127, 4040128, 4040129, 4040130, 4140101, 4140102,
4140103, 4140104, 4140105, 4140106, 4140107, 4140108, 4140109, 4140110, 4140111, 4140112,
4140113, 4140114, 4140115, 4140116, 4140117, 4140118, 4140119, 4140120, 4140121, 4140122,
4140123, 4040201, 4040202, 4040203, 4040204, 4040205, 4040206, 4040207, 4040208, 4040290,
4040209, 4040210, 4040211, 4040212, 4040213, 4040214, 4040215, 4040216, 4040217, 4040218,
4040219, 4040220, 4040221, 4040222, 4040223, 4040224, 4040225, 4040226, 4040227, 4040228,
4040229, 4040230, 4040231, 4040240, 4040241, 4040242, 4040244, 4040245, 4040246, 4040247,
4040248, 4040249, 4040250, 4040251, 4040252, 4040253, 4040254, 4040255, 4040256, 4040257,
4040258, 4040259, 4040260, 4040261, 4040262, 4040263, 4040264, 4240301, 4240302, 4240304,
4240305, 4240306, 4240307, 4240308, 4240309, 4240310, 4240311, 4240312, 4240313, 4240314,
4240316, 4240317, 4240320, 4240321, 4240322, 4240323, 4240401, 4240402, 4240403, 4240404,
4340101, 4340102, 4340103, 4340104, 4340105, 4340106, 4340107, 4340108, 4340109, 4340110,
4340111, 4340112, 4340113, 4340114, 4340115, 4340116, 4340117, 4340118, 4340119, 4340150,
4340151, 4340152, 4340153, 4340154, 4340155, 4340156, 4340157, 4340158, 4340159, 4340160,
4340161, 4340162, 4340163, 4340164, 4340165, 4340166, 4340167, 4540101, 4540102, 4540103,
4540104, 4540105, 4540106, 4540107, 4540111, 4540112, 4540113, 4540114, 4540201, 4540202,
4540203, 4540204, 4540205, 4540206, 4540211, 4540212, 4540213, 4540214, 4540301, 4540302,
4540303, 4540304, 4540305, 4540306, 4540307, 4540311, 4540312, 4540313, 4540314, 4540315,
4540401, 4540402, 4540403, 4540404, 4540405, 4540406, 4540407, 4540408, 4540411, 4540412,
4540413, 4540414, 4540501, 4540502, 4040300, 4040302, 4040303, 4040304, 4040305, 4040306,
4040307, 4040308, 4040309, 4040310, 4040311, 4040312, 4040313, 4040314, 4040315, 4040316,
4040317, 4040318, 4040319, 4040320, 4040321, 4040322, 4040323, 4040324, 4040325, 4040326,
4040327, 4040328, 4040329, 4040330, 4040331, 4040332, 4040333, 4040334, 4040335, 4040336,
4040337, 4040338, 4040339, 4040340, 4040341, 4040342, 4050005, 4050007, 4050008, 4050009,
4050010, 4050011, 4050012, 4050013, 4050014, 4050015, 4050016, 4050017, 4050018, 4050019,
4050020, 4050021, 4050022, 4050023, 4050024, 4050025, 4050026, 4050027, 4050028, 4050029,
4050030, 4050031, 4050032, 4050033, 4050034, 4050035, 4050036, 4050037, 4050038, 4050039,
4072121, 4072122, 4072123, 4071311, 4071312, 4071313, 4071320, 4071321, 4071322, 4122101,
4122102, 4122103, 4072011, 4072012, 4072013, 4072021, 4072022, 4072023, 4072024, 4070011,
4070012, 4070013, 4081311, 4081312, 4081313, 4081314, 4081315, 4081316, 4081317, 4081318,
5030500, 8000001, 8000002, 8000101, 8000102, 8000104, 8000105, 8000131, 8000132, 8000133,
8000134, 8000135, 8000136, 8000137, 8000138, 8000139, 8000151, 8000152, 8000153, 8000154,
8000155, 8000156, 8000157, 8000158, 8000159, 8000161, 8000162, 8000170, 8000171, 8000172,
8000173, 8000174, 8000175, 8000177, 8000178, 8000180, 8000181, 8000183, 8000182, 8000185,
8000184, 8000186, 8000187, 8000188, 8000189, 8000201, 8000202, 8000203, 8000204, 8001201,
8001202, 8001203, 8001205, 8001206, 8001207, 8001208, 8001209, 8001211, 8001212, 8001213,
8001215, 8001216, 8001219, 8001220, 8001223, 8001224, 8001225, 8001226, 8001227, 8001204,
8001210, 8001214, 8001217, 8001218, 8001221, 8001222, 8001241, 8001242, 8001243, 8001244,
8001251, 8001252, 8001253, 8001254, 8001255, 8001261, 8001262, 8001263, 8001264, 8001265,
8001266, 8001267, 8001268, 8011401, 8002100, 8002101, 8002102, 8002106, 8002103, 8002104,
8002105, 8002107, 8002201, 8002202, 8002211, 8002212, 8002213, 8002214, 8002221, 8002222,
8002231, 8002232, 8002233, 8002234, 8003101, 8003102, 8003201, 8003202, 8003213, 8003214,
8003204, 8003220, 8003217, 8003203, 8003215, 8003205, 8003206, 8003207, 8003221, 8003218,
8003208, 8003216, 8003209, 8003210, 8003222, 8003219, 8003211, 8003212, 8003240, 8003241,
8003242, 8003243, 8003244, 8003245, 8003246, 8003247, 8003248, 8003249, 8003250, 8003251,
8003260, 8003261, 8003262, 8003263, 8003264, 8003265, 8003266, 8003267, 8003268, 8003269,
8003278, 8003279, 8003280, 8003281, 8003282, 8003283, 8003284, 8012101, 8012102, 8012103,
8012104, 8012105, 8012106, 8012107, 8012401, 8013101, 8013102, 8013103, 8013104, 8013105,
8013106, 8013107, 8013108, 8013109, 8013110, 8014101, 8014102, 8014103, 8014104, 8014105,
8014106, 8014108, 8014112, 8014121, 8014122, 8014123, 8014124, 8014125, 8014126, 8014127,
8014128, 8014129, 8014130, 8014131, 8014132, 8014133, 8014134, 8014135, 8014136, 8014137,
8014138, 8014139, 8014140, 8014141, 8014142, 8014143, 8014144, 8014145, 8014146, 8014147,
8014148, 8014149, 8014150, 8014161, 8014162, 8014163, 8014164, 8014165, 8014166, 8014167,
8014168, 8015191, 8015101, 8015111, 8015192, 8015102, 8015112, 8015193, 8015103, 8015113,
8015123, 8015194, 8015104, 8015114, 8015195, 8015196, 8015197, 8015198, 8015150, 8015151,
8015152, 8015153, 8015154, 8015155, 8015156, 8015157, 8015158, 8015159, 8015161, 8015162,
8015163, 8015164, 8015165, 8015171, 8015172, 8015173, 8015180, 8015201, 8015202, 8015203,
8016101, 8016102, 8016103, 8016104, 8016105, 8016106, 8016201, 8016202, 8016203, 8016204,
8016205, 8016206, 8016207, 8016208, 8016209, 8016210, 8016211, 8016212, 8016213, 8016301,
8016302, 8016303, 8016304, 8016305, 8017101, 8017102, 8020101, 8020102, 8020103, 8020104,
8020105, 8020106, 8020107, 8020108, 8020201, 8020202, 8020203, 8020204, 8020205, 8020206,
8020207, 8020208, 8020209, 8020210, 8020211, 8020212, 8020213, 8020214, 8020215, 8020216,
8020217, 8020218, 8020219, 8020220, 8020221, 8020222, 8020223, 8020224, 8020231, 8020232,
8020233, 8020234, 8020236, 8020300, 8020301, 8020302, 8020303, 8020304, 8020305, 8021100,
8021101, 8021102, 8021103, 8021104, 8021105, 8021106, 8021121, 8021122, 8021123, 8021124,
8021130, 8021131, 8021132, 8021201, 8021202, 8021203, 8021301, 8021302, 8021303, 8021401,
8021402, 8021403, 8021404, 8021501, 8021502, 8021503, 8021504, 8021505, 8021506, 8022101,
8022102, 8022103, 8022104, 8022105, 8022106, 8022107, 8022108, 8022109, 8022110, 8022111,
8022112, 8022113, 8022114, 8022115, 8022120, 8022121, 8022122, 8022123, 8022124, 8022125,
8022126, 8022127, 8022201, 8022202, 8022301, 8022302, 8022401, 8022402,
];
pub async fn on_get_mission_status_cs_req(
+102 -33
View File
@@ -3,14 +3,18 @@ use prost::Message;
use rand::Rng;
use tokio::sync::Mutex;
use crate::{net::{tools::{AvatarJson, JsonData}, tools_res::PropState}, util};
use crate::{
net::{
tools::{ AvatarJson, JsonData},
tools_res::{PropState, GAME_RESOURCES},
},
util,
};
use super::*;
#[derive(Message)]
struct Dummy {
}
pub struct Dummy {}
pub async fn on_get_cur_scene_info_cs_req(
session: &mut PlayerSession,
@@ -63,8 +67,14 @@ pub async fn on_lckgkdehclb(session: &mut PlayerSession, request: &Lckgkdehclb)
.send(CMD_ENTER_SCENE_SC_RSP, Dummy::default())
.await?;
let _ = load_scene(session, &mut player, request.entry_id, true, Some(request.maplanefddc)).await;
let _ = load_scene(
session,
&mut player,
request.entry_id,
true,
Some(request.maplanefddc),
)
.await;
Ok(())
}
@@ -101,10 +111,7 @@ pub async fn on_fkjoeabiioe(sesison: &mut PlayerSession, request: &Fkjoeabiioe)
..Default::default()
};
if let Some((level, enterance, _)) = player
.get_level_group(request.dmkkkfnkofh[0])
.await
{
if let Some((level, enterance, _)) = player.get_level_group(request.dmkkkfnkofh[0]).await {
// add teleports
for teleport in &level.teleports {
map_info.ojlnmnehgai.push(*teleport.0)
@@ -133,15 +140,16 @@ pub async fn on_fkjoeabiioe(sesison: &mut PlayerSession, request: &Fkjoeabiioe)
map_info.entry_id = enterance.id;
}
sesison.send(
CMD_GET_SCENE_MAP_INFO_SC_RSP,
Cegeebldbke {
retcode: 0,
mhefdgcamjl: vec![map_info],
..Default::default()
},
)
.await?;
sesison
.send(
CMD_GET_SCENE_MAP_INFO_SC_RSP,
Cegeebldbke {
retcode: 0,
mhefdgcamjl: vec![map_info],
..Default::default()
},
)
.await?;
Ok(())
}
@@ -150,21 +158,24 @@ lazy_static! {
static ref NEXT_SCENE_SAVE: Mutex<u64> = Mutex::new(0);
}
pub async fn on_scene_entity_move_cs_req(session: &mut PlayerSession, request: &SceneEntityMoveCsReq) -> Result<()> {
pub async fn on_scene_entity_move_cs_req(
session: &mut PlayerSession,
request: &SceneEntityMoveCsReq,
) -> Result<()> {
let mut player = JsonData::load().await;
let mut timestamp = NEXT_SCENE_SAVE.lock().await;
if util::cur_timestamp_ms() <= *timestamp {
session
.send(CMD_SCENE_ENTITY_MOVE_SC_RSP, Dummy::default())
.await?;
.send(CMD_SCENE_ENTITY_MOVE_SC_RSP, Dummy::default())
.await?;
return Ok(());
}
// save every 5 minute
// save every 5 sec
*timestamp = util::cur_timestamp_ms() + (5 * 1000);
for entity in &request.entity_motion_list {
if entity.entity_id != 0 {
continue;
@@ -190,6 +201,33 @@ pub async fn on_scene_entity_move_cs_req(session: &mut PlayerSession, request: &
Ok(())
}
pub type GetEnteredSceneCsReq = Dummy;
pub async fn on_get_entered_scene_cs_req(session: &mut PlayerSession, _: &GetEnteredSceneCsReq) -> Result<()> {
let scenes = GAME_RESOURCES
.map_entrance
.iter()
.filter(|(_, v)| {
v.finish_main_mission_list.len() > 0 || v.finish_sub_mission_list.len() > 0
})
.map(|(_, v)| Lpllljogfeh {
floor_id: v.floor_id,
plane_id: v.plane_id,
})
.collect::<Vec<_>>();
session.send(CMD_GET_ENTERED_SCENE_SC_RSP, Mkgidalegbd {
lejonbbgdnn: scenes,
retcode: 0
}).await?;
Ok(())
}
// getunlockteleportcsreq
pub async fn on_kkbapmgmmcb(_session: &mut PlayerSession, _request: &Kkbapmgmmcb) -> Result<()> {
Ok(())
}
async fn load_scene(
session: &mut PlayerSession,
json: &mut JsonData,
@@ -197,7 +235,7 @@ async fn load_scene(
_save: bool,
teleport_id: Option<u32>,
) -> Result<SceneInfo> {
if let Some((level, enterance, plane)) = json.get_level_group( entry_id).await {
if let Some((level, enterance, plane)) = json.get_level_group(entry_id).await {
let mut position = json.position.clone();
if let Some(teleport_id) = teleport_id {
if let Some(teleport) = level.teleports.get(&teleport_id) {
@@ -217,7 +255,7 @@ async fn load_scene(
.map(|v| v.plane_type)
.unwrap_or(enterance.entrance_type) as u32,
// world_id: plane.map(|v| v.world_id).unwrap_or_default(),
pbfgagecpcd: plane.map(|v| v.world_id).unwrap_or_default(),
..Default::default()
};
@@ -225,7 +263,7 @@ async fn load_scene(
let player_pos = MotionInfo {
// rot
eiaoiankefd: Some(Vector {
baimdminomk:0,
baimdminomk: 0,
bemlopmcgch: position.rot_y,
bagloppgnpb: 0,
}),
@@ -279,10 +317,6 @@ async fn load_scene(
..Default::default()
};
// only add check
// if prop_state == 8 {
// group_info.entity_list.push(info);
// }
if let Some(group) = scene_info
.chhmmbdhjpg
.iter_mut()
@@ -352,7 +386,42 @@ async fn load_scene(
scene_info.chhmmbdhjpg.push(group_info);
}
}
// load player entity
let mut player_group = Dhkacjhaoid {
state: 0,
group_id: 0,
..Default::default()
};
for (slot, avatar_id) in &json.lineups {
player_group.entity_list.push(SceneEntityInfo {
inst_id: 0,
entity_id: (*slot) + 1,
motion: Some(MotionInfo {
// pos
aomilajjmii: Some(Vector {
baimdminomk: json.position.x ,
bemlopmcgch: json.position.y ,
bagloppgnpb: json.position.z ,
}),
// rot
eiaoiankefd: Some(Vector {
baimdminomk: 0,
bemlopmcgch: json.position.rot_y,
bagloppgnpb: 0,
}),
}),
actor: Some(SceneActorInfo {
avatar_type: AvatarType::AvatarFormalType.into(),
base_avatar_id: *avatar_id,
map_layer: 0,
uid: 0
}),
..Default::default()
})
}
scene_info.chhmmbdhjpg.push(player_group);
if _save {
session
.send(
+61 -6
View File
@@ -1,10 +1,59 @@
use super::*;
static TUTORIAL_IDS: [u32; 55] = [
1001, 1002, 1003, 1004, 1005, 1007, 1008, 1010, 1011, 2001, 2002, 2003, 2004, 2005, 2008, 2009,
2010, 2011, 2012, 2013, 2014, 2015, 3001, 3002, 3003, 3004, 3005, 3006, 4002, 4003, 4004, 4005,
4006, 4007, 4008, 4009, 5001, 5002, 5003, 5004, 5005, 5006, 5007, 5008, 5009, 5010, 5011, 5012,
7001, 9001, 9002, 9003, 9004, 9005, 9006,
static TUTORIAL_IDS: [u32; 455] = [
1001, 1002, 1003, 1004, 1005, 1007, 1008, 1010, 2000, 2001, 2002, 2003, 2004, 2008, 2010, 2011,
2012, 2013, 3001, 3002, 3003, 3004, 3005, 3006, 3008, 3009, 3010, 3011, 3012, 3202, 4002, 4003,
4004, 4005, 4006, 4007, 4008, 4009, 4010, 4011, 4012, 4013, 4014, 4015, 4016, 4017, 4018, 4019,
4020, 4021, 4022, 4023, 4024, 4025, 4026, 4027, 4028, 4029, 4030, 4031, 4032, 4033, 4034, 4036,
4037, 4038, 5001, 5002, 5003, 5004, 5005, 5006, 5007, 5008, 5009, 5010, 5011, 5012, 5013, 5014,
5015, 5016, 5017, 5018, 5019, 5021, 5022, 5023, 5024, 5025, 5026, 5027, 5028, 5029, 5030, 5031,
5032, 5033, 5034, 5035, 5036, 5038, 5039, 5041, 5044, 5045, 5046, 5047, 5048, 5049, 5050, 5051,
5052, 5053, 5054, 5055, 5056, 5057, 5058, 5059, 5060, 5061, 5062, 5063, 5064, 5065, 5070, 5071,
5072, 5073, 5074, 5075, 5077, 5078, 5079, 5081, 5082, 5083, 5084, 5085, 5086, 5087, 5088, 5089,
5090, 5091, 5092, 5093, 5094, 5095, 5096, 5097, 5098, 5099, 5100, 5101, 5102, 5103, 5104, 5105,
5106, 5107, 5108, 5109, 5110, 5111, 5112, 5113, 5114, 5115, 5116, 5130, 5131, 5132, 5133, 5134,
5135, 5140, 5141, 5142, 5143, 5144, 5145, 5146, 5150, 5151, 5152, 5153, 5154, 5155, 5156, 5157,
5158, 5159, 5160, 5161, 5162, 5172, 5173, 5174, 5175, 5176, 5177, 5178, 5179, 5180, 5181, 5182,
5183, 5184, 5185, 5186, 5187, 5188, 5189, 5190, 5191, 5192, 5193, 5194, 5195, 5196, 5197, 5198,
5199, 5200, 5201, 5202, 5301, 5302, 5303, 5304, 5305, 5306, 5308, 5309, 5310, 5322, 5326, 5312,
5311, 5313, 5307, 5314, 5315, 5316, 5317, 5318, 5319, 5320, 5321, 5323, 5324, 5325, 5350, 5387,
5352, 5388, 5355, 5360, 5361, 5356, 5357, 5358, 5359, 5351, 5365, 5366, 5367, 5368, 5375, 5376,
5377, 5389, 5374, 5369, 5370, 5371, 5372, 5373, 5390, 5380, 5381, 5400, 5382, 5383, 5392, 5378,
5384, 5393, 5408, 5394, 5395, 5391, 5385, 5397, 5398, 5399, 5386, 5401, 5402, 5403, 5404, 5405,
5406, 5407, 7001, 7002, 7003, 7004, 7005, 7007, 9001, 9002, 9003, 9004, 9005, 9006, 9007, 9008,
9009, 9010, 9011, 9012, 9013, 9014, 9015, 9016, 9017, 9018, 9019, 9020, 9021, 9022, 9023, 9024,
9025, 9026, 9027, 9028, 9029, 9030, 9031, 9032, 9033, 9034, 9035, 9036, 9037, 9038, 9039, 9040,
9041, 9042, 9043, 9044, 9045, 9046, 9047, 9048, 9049, 9050, 9051, 9052, 9053, 9201, 9202, 9203,
9204, 9205, 9206, 9207, 9208, 9209, 9210, 9211, 9212, 9213, 9214, 9301, 9302, 9303, 9304, 9305,
9306, 9307, 9308, 9309, 9310, 9311, 9313, 9314, 9315, 9316, 9317, 9318, 9319, 9321, 9322, 9323,
9324, 9325, 9801, 9802, 9803, 9804, 9805, 9806, 9807, 9808, 9809, 9810, 9811, 9812, 9813, 9814,
9816, 9817, 9818, 9819, 9815, 9820, 9901, 9903, 9904, 9905, 9906, 9907, 9908, 9610, 9611, 9612,
9613, 9614, 9615, 9616, 9617, 9618, 9619, 9620, 9621, 9622, 9623, 9624, 9625, 9626, 9627, 9628,
9629, 9630, 9631, 9701, 9702, 9703, 9704,
];
static GUIDE_IDS: [u32; 322] = [
1101, 1102, 1103, 1104, 1105, 1108, 1109, 1116, 1117, 1118, 2006, 2007, 2008, 2105, 2106, 2107,
2201, 2202, 2203, 2204, 2205, 2206, 2207, 2208, 2213, 2200, 2209, 2210, 2211, 2212, 2214, 2215,
2216, 2217, 2218, 2219, 2220, 3007, 3105, 3106, 3107, 3108, 3109, 3201, 3202, 3203, 3207, 3204,
3205, 3206, 3208, 3209, 3210, 3211, 3212, 3213, 3214, 3215, 4001, 4101, 4102, 4103, 4104, 4105,
4106, 4107, 4109, 4110, 5101, 5102, 5103, 5104, 5105, 5106, 6001, 6002, 6003, 6004, 6008, 6009,
6010, 6011, 6012, 6014, 6015, 6018, 6020, 6021, 6023, 6024, 6025, 6027, 6028, 6029, 6030, 6031,
6032, 6033, 6034, 6035, 6036, 6037, 6038, 6039, 6040, 6041, 6042, 6043, 6044, 6045, 6046, 6047,
6048, 6049, 6050, 6051, 6052, 6053, 6054, 6055, 6056, 6057, 6058, 6059, 6060, 6061, 7091, 7092,
6062, 6063, 6076, 6064, 6065, 6066, 6071, 6067, 6068, 6069, 6070, 6072, 6073, 6074, 6075, 6077,
6078, 6079, 6080, 6081, 6082, 7090, 6083, 6085, 6086, 6087, 6088, 6089, 6090, 6091, 6092, 6093,
6094, 6095, 6096, 6097, 6098, 6099, 6100, 6101, 6102, 6103, 6104, 6105, 6106, 6107, 6109, 6110,
6111, 6108, 8001, 8002, 8003, 8004, 8006, 8007, 8008, 8010, 8011, 8012, 8013, 8014, 8015, 8016,
8017, 8018, 8019, 8020, 8021, 8022, 8023, 8024, 8025, 8038, 8039, 8047, 8050, 8051, 8052, 8055,
8056, 8057, 8028, 8026, 8027, 8064, 8065, 8058, 8061, 8059, 8062, 8063, 8066, 8067, 8069, 8070,
8072, 8073, 8074, 8075, 8076, 8078, 8079, 8080, 8090, 8091, 8092, 8093, 8094, 8095, 8096, 8100,
8101, 8102, 8103, 8104, 8105, 8106, 8107, 8108, 8109, 8111, 8112, 8113, 8110, 8122, 8123, 8124,
8140, 8141, 8142, 8143, 8144, 8145, 8146, 9101, 9102, 9103, 9104, 9105, 9107, 9108, 9109, 9110,
9111, 9112, 9113, 9114, 9115, 9116, 9117, 9118, 9119, 9120, 9201, 9202, 9203, 9204, 9205, 9206,
9207, 9208, 9209, 9210, 9211, 9212, 9301, 9303, 9304, 9305, 31001, 31102, 31103, 31105, 31106,
31109, 31204, 31206, 7501, 7502, 7503, 7504, 7506, 7507, 7508, 7509, 7511, 7514, 7515, 9601,
9602, 9603, 9604, 9605,
];
pub async fn on_get_tutorial_cs_req(
@@ -37,7 +86,13 @@ pub async fn on_get_tutorial_guide_cs_req(
CMD_GET_TUTORIAL_GUIDE_SC_RSP,
GetTutorialGuideScRsp {
retcode: 0,
tutorial_guide_list: vec![],
tutorial_guide_list: GUIDE_IDS
.iter()
.map(|id| TutorialGuide {
id: *id,
status: TutorialStatus::TutorialFinish.into(),
})
.collect(),
},
)
.await
+3 -3
View File
@@ -1196,7 +1196,7 @@ trait_handler! {
// ScenePlaneEventScNotify 1484;
// LastSpringRefreshTimeNotify 1439;
// UpdateFloorSavedValueNotify 1420;
// GetEnteredSceneCsReq 1427;
GetEnteredSceneCsReq 1427; // getenteredscenecsreq
// StartTimedCocoonStageCsReq 1426;
// RecoverAllLineupCsReq 1424;
// StartTimedFarmElementCsReq 1436;
@@ -1205,7 +1205,7 @@ trait_handler! {
// UnlockedAreaMapScNotify 1457;
// StartTimedCocoonStageScRsp 1423;
// ActivateFarmElementScRsp 1455;
// GetUnlockTeleportCsReq 1440;
Kkbapmgmmcb 1440; //getunlockteleportcsreq
// DeactivateFarmElementCsReq 1490;
// RefreshTriggerByClientCsReq 1432;
// SetGroupCustomSaveDataCsReq 1449;
@@ -1239,7 +1239,7 @@ trait_handler! {
// GroupStateChangeScRsp 1421;
// SpringRecoverCsReq 1444;
// SetCurInteractEntityScRsp 1497;
// SceneCastSkillCsReq 1402;
Mpemgbdkigg 1402; // scenecastskillcsreq
StartCocoonStageCsReq 1408;
Fkjoeabiioe 1470; //getscenemapinfocsreq
// SceneEntityMoveScRsp 1448;
+53 -92
View File
@@ -1,7 +1,7 @@
use proto::*;
use proto::{Avatar, AvatarSkillTree, BattleAvatar};
use serde::{Deserialize, Serialize};
use std::collections::{BTreeMap, HashMap};
use proto::*;
use super::tools_res::{MapEntrance, MazePlane, SimpleLevelGroup, GAME_RESOURCES};
@@ -33,11 +33,7 @@ pub struct AvatarData {
#[allow(dead_code)]
impl AvatarJson {
pub fn to_avatar_proto(
&self,
lightcone: Option<&Lightcone>,
relics: Vec<&Relic>,
) -> Avatar {
pub fn to_avatar_proto(&self, lightcone: Option<&Lightcone>, relics: Vec<&Relic>) -> Avatar {
Avatar {
base_avatar_id: self.avatar_id,
exp: 0,
@@ -134,16 +130,20 @@ impl AvatarJson {
}
}
pub fn to_lineup_avatars(
player: &JsonData,
) -> Vec<LineupAvatar> {
let avatar_ids = player.avatars.iter().map(|(_, v)| &v.avatar_id).collect::<Vec<_>>();
pub fn to_lineup_avatars(player: &JsonData) -> Vec<LineupAvatar> {
let avatar_ids = player
.avatars
.iter()
.map(|(_, v)| &v.avatar_id)
.collect::<Vec<_>>();
player.lineups
player
.lineups
.iter()
.filter(|(_slot, v)| v > &&0 && avatar_ids.contains(v))
.map(|(slot, avatar_id)| {
player.avatars
player
.avatars
.get(avatar_id)
.unwrap()
.to_lineup_avatar_proto(*slot)
@@ -182,7 +182,6 @@ impl AvatarJson {
}
}
// LIGHTCONE
#[derive(Serialize, Deserialize, Debug, Clone)]
pub struct Lightcone {
@@ -223,7 +222,6 @@ impl Lightcone {
}
}
// RELIC
#[derive(Debug, Serialize, Deserialize, Clone)]
pub struct Relic {
@@ -270,7 +268,7 @@ impl Relic {
step: v.step,
})
.collect::<Vec<_>>(),
..Default::default()
..Default::default()
}
}
@@ -289,7 +287,7 @@ impl Relic {
step: v.step,
})
.collect::<Vec<_>>(),
..Default::default()
..Default::default()
}
}
@@ -301,7 +299,6 @@ impl Relic {
}
}
// MONSTER
#[derive(Debug, Serialize, Deserialize, Clone, Default)]
pub struct Monster {
@@ -330,8 +327,9 @@ impl Monster {
SceneMonsterWave {
iilhbcalikm: wave_index, // wave indexx??
ejahmdkklbn: Some(Holldlkceof { // monster param
ejahmdkklbn: Some(Holldlkceof {
// monster param
level: monsters.iter().map(|v| v.level).max().unwrap_or(95),
..Default::default()
}),
@@ -353,7 +351,6 @@ impl Monster {
}
}
// BATTLE CONFIG
#[derive(Debug, Serialize, Deserialize, Clone)]
pub struct BattleConfig {
@@ -430,7 +427,7 @@ impl BattleBuffJson {
}
}
// SCENE
// SCENE
#[derive(Serialize, Deserialize, Debug, Clone)]
pub struct Scene {
pub plane_id: u32,
@@ -449,7 +446,6 @@ impl Default for Scene {
}
// Position
#[derive(Debug, Serialize, Deserialize, Clone, Default)]
pub struct Position {
pub x: i32,
@@ -481,7 +477,6 @@ impl Position {
}
}
// FREESR-DATA.json
#[derive(Debug, Serialize, Deserialize)]
pub struct JsonData {
@@ -522,15 +517,14 @@ impl Default for JsonData2 {
lineups.insert(3, 0);
Self {
lineups ,
lineups,
position: Default::default(),
main_character: Default::default(),
scene: Default::default()
scene: Default::default(),
}
}
}
#[derive(Serialize, Deserialize, Clone, Debug, Copy)]
pub enum MainCharacter {
MalePyhsical = 8001,
@@ -544,13 +538,13 @@ pub enum MainCharacter {
impl MainCharacter {
// pub fn to_vec() -> Vec<MainCharacter> {
// return vec![
// MainCharacter::MalePyhsical,
// MainCharacter::FemalePhysical,
// MainCharacter::MalePreservation,
// MainCharacter::FemalePreservation,
// MainCharacter::MaleHarmony,
// MainCharacter::MalePyhsical,
// MainCharacter::FemalePhysical,
// MainCharacter::MalePreservation,
// MainCharacter::FemalePreservation,
// MainCharacter::MaleHarmony,
// MainCharacter::FemaleHarmony
// ]
// }
@@ -583,16 +577,19 @@ impl Default for MainCharacter {
impl JsonData {
pub async fn load() -> Self {
let mut json: JsonData = tokio::fs::read_to_string("freesr-data.json")
.await
.map(|v| serde_json::from_str(&v))
.expect("freesr-data.json is broken, pls redownload")
.expect("freesr-data.json is broken, pls redownload");
let mut json: JsonData = match serde_json::from_str(&tokio::fs::read_to_string("freesr-data.json").await.unwrap_or_default()) {
Ok(db) => db,
Err(err) => {
println!("{:#?}", err);
Self::create_dummy().await
}
};
let json2: JsonData2 = serde_json::from_str(
&tokio::fs::read_to_string("persistent")
.await
.unwrap_or_default(),
)
.unwrap_or_default();
let json2: JsonData2 = serde_json::from_str(&tokio::fs::read_to_string("persistent").await.unwrap_or_default()).unwrap_or_default();
json.lineups = json2.lineups;
json.position = json2.position;
json.scene = json2.scene;
@@ -605,7 +602,7 @@ impl JsonData {
async fn verify_lineup(&mut self) {
if self.lineups.len() == 0 {
self.lineups = BTreeMap::<u32, u32>::from([(0, 8006), (1, 0), (2, 0),(3, 0)])
self.lineups = BTreeMap::<u32, u32>::from([(0, 8006), (1, 0), (2, 0), (3, 0)])
} else if self.lineups.len() < 4 {
for i in self.lineups.len()..4 {
self.lineups.insert(i as u32, 0);
@@ -614,47 +611,6 @@ impl JsonData {
self.save().await;
}
async fn create_dummy() -> Self {
let mut db = Self {
lightcones: vec![],
relics: vec![],
avatars: BTreeMap::<u32, AvatarJson>::new(),
lineups: BTreeMap::<u32, u32>::from([(0, 8006), (1, 0), (2, 0),(3, 0)]),
scene: Default::default(),
position: Default::default(),
battle_config: Default::default(),
main_character: Default::default(),
};
db.avatars.insert(
8006,
AvatarJson {
avatar_id: 8006,
level: 80,
promotion: 6,
sp_max: Some(10_000),
sp_value: Some(10_000),
owner_uid: 0,
techniques: vec![],
data: AvatarData {
rank: 6,
skills: BTreeMap::from([
(800601, 6),
(800602, 10),
(800603, 10),
(800604, 10),
(800605, 1),
]),
},
},
);
db.lineups.insert(0, 8006);
db.save().await;
db
}
pub async fn save_lineup(&self) {
self.save().await;
}
@@ -662,14 +618,20 @@ impl JsonData {
pub async fn save(&self) {
let json = serde_json::to_string_pretty(&self).unwrap();
let _ = tokio::fs::write("freesr-data.json", json.as_bytes()).await;
let _ = tokio::fs::write("persistent", serde_json::to_string_pretty(&JsonData2 {
lineups: self.lineups.clone(),
main_character: self.main_character,
position: self.position.clone(),
scene: self.scene.clone()
}).unwrap().as_bytes()).await;
let _ = tokio::fs::write(
"persistent",
serde_json::to_string_pretty(&JsonData2 {
lineups: self.lineups.clone(),
main_character: self.main_character,
position: self.position.clone(),
scene: self.scene.clone(),
})
.unwrap()
.as_bytes(),
)
.await;
}
pub async fn get_level_group(
&self,
entry_id: u32,
@@ -683,11 +645,10 @@ impl JsonData {
.level_group
.get(&format!("P{}_F{}", enterance.plane_id, enterance.floor_id))
{
// TODO: use reference somehow, not cloning
return Some((level.clone(), enterance.clone(), plane.cloned()));
};
}
None
}
}
}
+8 -10
View File
@@ -1,7 +1,7 @@
use std::collections::HashMap;
use lazy_static::lazy_static;
use serde::{Deserialize, Serialize};
use serde_json::Value;
use std::collections::HashMap;
#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
@@ -200,7 +200,6 @@ impl Default for PlaneType {
}
}
#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct MazeProp {
@@ -254,14 +253,13 @@ pub enum PropState {
pub type IntMap<T> = HashMap<u32, T>;
pub type StringMap<T> = HashMap<String, T>;
#[derive(Debug, Serialize, Deserialize, Clone)]
pub struct SimpleLevelGroup {
pub teleports: IntMap<LevelProp>,
pub props: Vec<LevelProp>,
pub npcs: Vec<LevelNPC>,
pub monsters: Vec<LevelMonster>,
// pub level_group: IntMap<LevelGroup>,
pub group_ids: Vec<u32>,
}
#[derive(Debug, Serialize, Deserialize)]
@@ -275,14 +273,14 @@ pub struct GameResources {
impl GameResources {
pub fn new() -> Self {
let str = std::fs::read_to_string("./resources.json").unwrap();
let res: Self = serde_json::from_str(&str).unwrap();
let str = std::fs::read_to_string("./resources.json")
.expect("resources.json is broken, pls redownload");
let res: Self =
serde_json::from_str(&str).expect("resources.json is broken, pls redownload");
res
}
}
lazy_static! {
pub static ref GAME_RESOURCES: GameResources = {
GameResources::new()
};
}
pub static ref GAME_RESOURCES: GameResources = GameResources::new();
}