From 4d2ddaeafbc956ff86a98dc12d261d93b9512f07 Mon Sep 17 00:00:00 2001 From: "NGnius (Graham)" Date: Sun, 6 Apr 2025 11:00:37 -0400 Subject: [PATCH] Remove external state for op handlers --- Cargo.lock | 1 + rc_chat_room/src/operations/mod.rs | 12 +- rc_chat_room/src/operations/more_auth.rs | 5 +- .../src/operations/cube_inventory.rs | 5 +- .../src/operations/dev_message.rs | 7 +- rc_services_room/src/operations/eac.rs | 5 +- .../src/operations/game_quality.rs | 5 +- .../src/operations/load_analytics.rs | 5 +- .../src/operations/login_flags.rs | 5 +- .../src/operations/maintenancer.rs | 5 +- rc_services_room/src/operations/mod.rs | 192 +++++++++--------- rc_services_room/src/operations/more_auth.rs | 5 +- .../src/operations/singleplayer_campaigns.rs | 7 +- rc_services_room/src/operations/versioner.rs | 5 +- rc_singleplayer_room/src/operations/eac.rs | 5 +- rc_singleplayer_room/src/operations/mod.rs | 8 +- .../src/operations/more_auth.rs | 5 +- rc_social_room/src/operations/mod.rs | 26 +-- rc_social_room/src/operations/more_auth.rs | 5 +- 19 files changed, 150 insertions(+), 163 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 6b9e695..12622ae 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1607,6 +1607,7 @@ dependencies = [ name = "polariton_server" version = "0.2.0" dependencies = [ + "async-trait", "log", "polariton", "tokio", diff --git a/rc_chat_room/src/operations/mod.rs b/rc_chat_room/src/operations/mod.rs index bd6dc0d..4439f0f 100644 --- a/rc_chat_room/src/operations/mod.rs +++ b/rc_chat_room/src/operations/mod.rs @@ -7,10 +7,10 @@ use polariton_server::operations::OperationsHandler; pub fn handler() -> OperationsHandler { OperationsHandler::new() - .without_state(more_auth::MoreLobbyAuth) - .without_state(chat_ignores::ignores_provider()) - .without_state(pending_sanctions::pending_sanctions_checker()) - .without_state(all_joined_channels::all_channels_provider()) - .without_state(polariton_server::operations::Ack::<12, _>::default()) - //.without_state(polariton_server::operations::Ack::<00000, _>::default()) + .add(more_auth::MoreLobbyAuth) + .add(chat_ignores::ignores_provider()) + .add(pending_sanctions::pending_sanctions_checker()) + .add(all_joined_channels::all_channels_provider()) + .add(polariton_server::operations::Ack::<12, _>::default()) + //.add(polariton_server::operations::Ack::<00000, _>::default()) } diff --git a/rc_chat_room/src/operations/more_auth.rs b/rc_chat_room/src/operations/more_auth.rs index 007d9fd..5dba737 100644 --- a/rc_chat_room/src/operations/more_auth.rs +++ b/rc_chat_room/src/operations/more_auth.rs @@ -7,11 +7,10 @@ impl MoreLobbyAuth { const AUTH_PAYLOAD_KEY: u8 = 245; } -impl Operation for MoreLobbyAuth { - type State = (); +impl Operation for MoreLobbyAuth { type User = crate::UserTy; - fn handle(&self, params: polariton::operation::ParameterTable, _: &mut Self::State, user: &Self::User) -> polariton::operation::OperationResponse { + fn handle(&self, params: polariton::operation::ParameterTable, user: &Self::User) -> polariton::operation::OperationResponse { let params_dict = params.to_dict(); if let Some(Typed::Str(auth_payload)) = params_dict.get(&Self::AUTH_PAYLOAD_KEY) { if user.update_with_auth(&auth_payload.string) { diff --git a/rc_services_room/src/operations/cube_inventory.rs b/rc_services_room/src/operations/cube_inventory.rs index 1afb69a..52e7604 100644 --- a/rc_services_room/src/operations/cube_inventory.rs +++ b/rc_services_room/src/operations/cube_inventory.rs @@ -8,11 +8,10 @@ pub struct CubeInventoryProvider { cube_ids: Vec, } -impl Operation for CubeInventoryProvider { - type State = (); +impl Operation for CubeInventoryProvider { type User = crate::UserTy; - fn handle(&self, params: polariton::operation::ParameterTable, _: &mut Self::State, _user: &Self::User) -> polariton::operation::OperationResponse { + fn handle(&self, params: polariton::operation::ParameterTable, _user: &Self::User) -> polariton::operation::OperationResponse { let mut params = params.to_dict(); params.insert(PARAM_KEY, Typed::Dict(Dict { key_ty: TypePrefix::Int, // int diff --git a/rc_services_room/src/operations/dev_message.rs b/rc_services_room/src/operations/dev_message.rs index 19d4e4d..35ad2fa 100644 --- a/rc_services_room/src/operations/dev_message.rs +++ b/rc_services_room/src/operations/dev_message.rs @@ -9,11 +9,10 @@ pub struct DevMessageProvider { messages: rc_core::persist::config::DevMessageProvider, } -impl Operation for DevMessageProvider { - type State = (); +impl Operation for DevMessageProvider { type User = crate::UserTy; - fn handle(&self, params: polariton::operation::ParameterTable, _: &mut Self::State, _user: &Self::User) -> polariton::operation::OperationResponse { + fn handle(&self, params: polariton::operation::ParameterTable, _user: &Self::User) -> polariton::operation::OperationResponse { let mut params = params.to_dict(); let index = rand::rng().random::(); let dev_msg = self.messages.get(index as _); @@ -30,7 +29,7 @@ impl Operation for DevMessageProvider { impl OperationCode for DevMessageProvider { fn op_code() -> u8 { - 16 + 8 } } diff --git a/rc_services_room/src/operations/eac.rs b/rc_services_room/src/operations/eac.rs index 192cdf7..20058c3 100644 --- a/rc_services_room/src/operations/eac.rs +++ b/rc_services_room/src/operations/eac.rs @@ -2,11 +2,10 @@ use polariton_server::operations::{Operation, OperationCode}; pub struct EacChallengeIgnorer; -impl Operation for EacChallengeIgnorer { - type State = (); +impl Operation for EacChallengeIgnorer { type User = crate::UserTy; - fn handle(&self, params: polariton::operation::ParameterTable, _: &mut Self::State, _: &Self::User) -> polariton::operation::OperationResponse { + fn handle(&self, params: polariton::operation::ParameterTable, _: &Self::User) -> polariton::operation::OperationResponse { polariton::operation::OperationResponse { code: 161, // skip the challenge (hopefully) return_code: 0, diff --git a/rc_services_room/src/operations/game_quality.rs b/rc_services_room/src/operations/game_quality.rs index 09269b6..505e2d6 100644 --- a/rc_services_room/src/operations/game_quality.rs +++ b/rc_services_room/src/operations/game_quality.rs @@ -5,11 +5,10 @@ use polariton_server::operations::{Operation, OperationCode}; pub struct QualityConfigTeller; -impl Operation for QualityConfigTeller { - type State = (); +impl Operation for QualityConfigTeller { type User = crate::UserTy; - fn handle(&self, _: ParameterTable, _: &mut Self::State, _: &Self::User) -> OperationResponse { + fn handle(&self, _: ParameterTable, _: &Self::User) -> OperationResponse { let quality_levels = Typed::HashMap(vec![ (Typed::Str("extremLow".into()), Typed::Dict(Dict { key_ty: TypePrefix::Str, diff --git a/rc_services_room/src/operations/load_analytics.rs b/rc_services_room/src/operations/load_analytics.rs index 53704e6..9144c99 100644 --- a/rc_services_room/src/operations/load_analytics.rs +++ b/rc_services_room/src/operations/load_analytics.rs @@ -7,11 +7,10 @@ impl NoAnalytics { const ANALYTICS_DICT_KEY: u8 = 83; } -impl Operation for NoAnalytics { - type State = (); +impl Operation for NoAnalytics { type User = crate::UserTy; - fn handle(&self, _: polariton::operation::ParameterTable, _: &mut Self::State, _: &Self::User) -> polariton::operation::OperationResponse { + fn handle(&self, _: polariton::operation::ParameterTable, _: &Self::User) -> polariton::operation::OperationResponse { let mut resp_params = std::collections::HashMap::new(); resp_params.insert(Self::ANALYTICS_DICT_KEY, polariton::operation::Typed::Dict(Dict { key_ty: TypePrefix::Str, // str diff --git a/rc_services_room/src/operations/login_flags.rs b/rc_services_room/src/operations/login_flags.rs index 221a037..821a8e3 100644 --- a/rc_services_room/src/operations/login_flags.rs +++ b/rc_services_room/src/operations/login_flags.rs @@ -14,11 +14,10 @@ impl UserFlagsTeller { const AB_GROUP_KEY: u8 = 167; } -impl Operation for UserFlagsTeller { - type State = (); +impl Operation for UserFlagsTeller { type User = crate::UserTy; - fn handle(&self, _: polariton::operation::ParameterTable, _: &mut Self::State, _: &Self::User) -> polariton::operation::OperationResponse { + fn handle(&self, _: polariton::operation::ParameterTable, _: &Self::User) -> polariton::operation::OperationResponse { let mut resp_params = std::collections::HashMap::new(); resp_params.insert(Self::REMOVE_OBSOLETE_CUBES_KEY, polariton::operation::Typed::Bool(false.into())); resp_params.insert(Self::REMOVE_UNOWNED_CUBES_KEY, polariton::operation::Typed::Bool(false.into())); diff --git a/rc_services_room/src/operations/maintenancer.rs b/rc_services_room/src/operations/maintenancer.rs index d4c6e53..48e4c5f 100644 --- a/rc_services_room/src/operations/maintenancer.rs +++ b/rc_services_room/src/operations/maintenancer.rs @@ -4,11 +4,10 @@ use polariton_server::operations::{Operation, OperationCode}; pub struct MaintenanceModeTeller; -impl Operation for MaintenanceModeTeller { - type State = (); +impl Operation for MaintenanceModeTeller { type User = crate::UserTy; - fn handle(&self, _: polariton::operation::ParameterTable, _: &mut Self::State, _: &Self::User) -> polariton::operation::OperationResponse { + fn handle(&self, _: polariton::operation::ParameterTable, _: &Self::User) -> polariton::operation::OperationResponse { let mut resp_params = HashMap::new(); resp_params.insert(20 /* is in maintenance mode? */, polariton::operation::Typed::Bool(false.into())); resp_params.insert(19 /* maintenace mode message */, polariton::operation::Typed::Str("OpenJam's servers are currently undergoing maintenance".into())); diff --git a/rc_services_room/src/operations/mod.rs b/rc_services_room/src/operations/mod.rs index 51bde4c..5918d80 100644 --- a/rc_services_room/src/operations/mod.rs +++ b/rc_services_room/src/operations/mod.rs @@ -85,100 +85,100 @@ use polariton_server::operations::OperationsHandler; pub fn handler(init_ctx: &crate::InitConfig) -> OperationsHandler { OperationsHandler::new() - .without_state(eac::EacChallengeIgnorer) - .without_state(more_auth::MoreLobbyAuth) - .without_state(versioner::VersionTeller) - .without_state(maintenancer::MaintenanceModeTeller) - .without_state(game_quality::QualityConfigTeller) - .without_state(login_flags::UserFlagsTeller) - .without_state(polariton_server::operations::Ack::<132, _>::default()) // verify user level - .without_state(load_analytics::NoAnalytics) - .without_state(polariton_server::operations::Ack::<131, _>::default()) // analytics updated notification - .without_state(platform_config::platform_config_provider()) - .without_state(tier_banding::tiers_banding_provider()) - .without_state(cube_list::cube_list_provider(&init_ctx.cubes)) - .without_state(special_items::special_item_list_provider()) - .without_state(premium_config::premium_config_provider()) - .without_state(palette_town::kanto()) - .without_state(client_config::client_config_provider(&init_ctx.cubes)) - .without_state(crf_config::crf_config_provider()) - .without_state(weapon_stats::weapon_config_provider(&init_ctx.cubes)) - .without_state(movement_stats::movement_config_provider(&init_ctx.cubes)) - .without_state(power_bar_stats::power_bar_provider()) - .without_state(damage_boost_stats::damage_boost_provider()) - .without_state(battle_arena_config::battle_arena_config_provider()) - .without_state(cpu_limits_config::cpu_config_provider()) - .without_state(cosmetic_config::cosmetic_limits_config_provider()) - .without_state(taunts_config::taunts_config_provider()) - .without_state(all_customisations_info::all_customisations_provider()) - .without_state(tech_points::tech_points_provider()) - .without_state(cube_inventory::cube_inv_provider(&init_ctx.cubes)) - .without_state(player_level::player_level_info_provider()) - .without_state(balance_info::balance_wallet_provider()) - .without_state(premium_duration::premium_remaining_provider()) - .without_state(tutorial_status::tutorial_info_provider()) - .without_state(user_perms::user_rights_provider()) - .without_state(garage_slots::garage_slot_provider()) - .without_state(robopass_season::robopass_season_provider()) - .without_state(owned_cosmetics::owned_cosmetics_provider()) - .without_state(owned_cosmetics::selected_cosmetics_provider()) - .without_state(dev_message::dev_message_provider(&init_ctx.cubes)) - .without_state(custom_games_maps::allowed_maps_provider()) - .without_state(avatar_info::get_avatar_provider()) - .without_state(custom_game_session::get_custom_session_provider()) - .without_state(user_xp::get_user_xp_provider()) - .without_state(garage_upgrades::garage_upgrades_provider()) - .without_state(game_event_params::event_system_params_provider()) - .without_state(garage_bay_uuid::garage_id_provider()) - .without_state(tech_tree_data::tech_tree_layout_provider(&init_ctx.cubes)) - .without_state(item_shop_bundles::item_bundle_provider()) - .without_state(robot_customisations::bay_customisations_provider()) - .without_state(player_data::player_data_provider()) - .without_state(player_robopass::player_robopass_season_provider()) - .without_state(weapon_upgrades::weapons_upgrade_provider(&init_ctx.cubes)) - .without_state(polariton_server::operations::Ack::<172, _>::default()) // custom game change robot tier (param 67 is tier) - .without_state(player_rank::rank_provider()) - .without_state(player_rank::rank_static_provider()) - .without_state(ab_test_group::test_group_provider()) - .without_state(league_limits::league_battle_parameters_provider()) - .without_state(crf_limits::robot_shop_submission_infos_provider()) - .without_state(robot_mastery_settings::robot_mastery_settings_provider()) - .without_state(player_started_purchase::started_purchase_provider()) - .without_state(custom_games_team::team_setup_provider()) - .without_state(polariton_server::operations::Ack::<152, _>::default()) // custom game player state changed (188 is desired state) - .without_state(custom_games_invite::pending_invite_provider()) - .without_state(chat_settings::chat_settings_provider()) - .without_state(prebuilt_robots::garage_robot_data_provider()) - .without_state(prebuilt_colours::garage_colour_combo_provider()) - .without_state(robopass_preview_items::robopass_preview_provider()) - .without_state(singleplayer_campaigns::singleplayer_campaigns_provider(&init_ctx.cubes)) - .without_state(purchases::pending_purchases_provider()) - .without_state(building_xp_config::building_xp_config_provider()) - .without_state(weapon_rating_static::weapon_rating_provider()) - .without_state(weapon_xp_static::weapon_xp_provider()) - .without_state(machine::garage_machine_provider()) - .without_state(machine_colour::garage_machine_colour_provider()) - .without_state(last_completed_campaign::completed_campaign_provider()) - .without_state(daily_quests::player_daily_quests_provider()) - .without_state(tech_points::tech_points_awards_provider()) - .without_state(cube_awards::cube_awards_provider()) - .without_state(robot_sanction::robot_sanction_provider()) - .without_state(building_xp::building_xp_save_provider()) - .without_state(robot_sanction::all_robot_sanctions_provider()) - .without_state(reconnect_game::available_reconnect_provider()) - .without_state(machine::garage_machine_save_provider()) - .without_state(polariton_server::operations::Ack::<32, _>::default()) // TODO handle SaveMachineColorRequest instead of ignoring it - .without_state(polariton_server::operations::Ack::<45, _>::default()) // TODO handle UpdateThumbnailVersionRequest instead of ignoring it - .without_state(weapon_order::weapon_order_provider(&init_ctx.cubes)) - .without_state(regen_config::auto_regen_config_provider(&init_ctx.cubes)) - .without_state(pageantry::after_battle_vote_thresholds_provider(&init_ctx.cubes)) - .without_state(signup_time::user_signup_date_provider()) - .without_state(validate_machine::validate_robot_provider()) - .without_state(game_mode_config::game_mode_config_provider(&init_ctx.cubes)) - .without_state(score_multipliers_config::tdm_ai_score_config_provider()) - .without_state(player_robot_rank::player_robot_rank_provider()) - .without_state(validate_machine::validate_campaign_robot_provider()) - .without_state(singleplayer_campaigns::singleplayer_complete_campaign_provider(&init_ctx.cubes)) - .without_state(polariton_server::operations::Ack::<78, _>::default()) // TODO handle SaveCampaignGameAwardsRequest instead of ignoring it - .without_state(singleplayer_campaigns::singleplayer_save_complete_campaign_provider()) // TODO handle UpdatePlayerCompletedCampaignWaveRequest saving + .add(eac::EacChallengeIgnorer) + .add(more_auth::MoreLobbyAuth) + .add(versioner::VersionTeller) + .add(maintenancer::MaintenanceModeTeller) + .add(game_quality::QualityConfigTeller) + .add(login_flags::UserFlagsTeller) + .add(polariton_server::operations::Ack::<132, _>::default()) // verify user level + .add(load_analytics::NoAnalytics) + .add(polariton_server::operations::Ack::<131, _>::default()) // analytics updated notification + .add(platform_config::platform_config_provider()) + .add(tier_banding::tiers_banding_provider()) + .add(cube_list::cube_list_provider(&init_ctx.cubes)) + .add(special_items::special_item_list_provider()) + .add(premium_config::premium_config_provider()) + .add(palette_town::kanto()) + .add(client_config::client_config_provider(&init_ctx.cubes)) + .add(crf_config::crf_config_provider()) + .add(weapon_stats::weapon_config_provider(&init_ctx.cubes)) + .add(movement_stats::movement_config_provider(&init_ctx.cubes)) + .add(power_bar_stats::power_bar_provider()) + .add(damage_boost_stats::damage_boost_provider()) + .add(battle_arena_config::battle_arena_config_provider()) + .add(cpu_limits_config::cpu_config_provider()) + .add(cosmetic_config::cosmetic_limits_config_provider()) + .add(taunts_config::taunts_config_provider()) + .add(all_customisations_info::all_customisations_provider()) + .add(tech_points::tech_points_provider()) + .add(cube_inventory::cube_inv_provider(&init_ctx.cubes)) + .add(player_level::player_level_info_provider()) + .add(balance_info::balance_wallet_provider()) + .add(premium_duration::premium_remaining_provider()) + .add(tutorial_status::tutorial_info_provider()) + .add(user_perms::user_rights_provider()) + .add(garage_slots::garage_slot_provider()) + .add(robopass_season::robopass_season_provider()) + .add(owned_cosmetics::owned_cosmetics_provider()) + .add(owned_cosmetics::selected_cosmetics_provider()) + .add(dev_message::dev_message_provider(&init_ctx.cubes)) + .add(custom_games_maps::allowed_maps_provider()) + .add(avatar_info::get_avatar_provider()) + .add(custom_game_session::get_custom_session_provider()) + .add(user_xp::get_user_xp_provider()) + .add(garage_upgrades::garage_upgrades_provider()) + .add(game_event_params::event_system_params_provider()) + .add(garage_bay_uuid::garage_id_provider()) + .add(tech_tree_data::tech_tree_layout_provider(&init_ctx.cubes)) + .add(item_shop_bundles::item_bundle_provider()) + .add(robot_customisations::bay_customisations_provider()) + .add(player_data::player_data_provider()) + .add(player_robopass::player_robopass_season_provider()) + .add(weapon_upgrades::weapons_upgrade_provider(&init_ctx.cubes)) + .add(polariton_server::operations::Ack::<172, _>::default()) // custom game change robot tier (param 67 is tier) + .add(player_rank::rank_provider()) + .add(player_rank::rank_static_provider()) + .add(ab_test_group::test_group_provider()) + .add(league_limits::league_battle_parameters_provider()) + .add(crf_limits::robot_shop_submission_infos_provider()) + .add(robot_mastery_settings::robot_mastery_settings_provider()) + .add(player_started_purchase::started_purchase_provider()) + .add(custom_games_team::team_setup_provider()) + .add(polariton_server::operations::Ack::<152, _>::default()) // custom game player state changed (188 is desired state) + .add(custom_games_invite::pending_invite_provider()) + .add(chat_settings::chat_settings_provider()) + .add(prebuilt_robots::garage_robot_data_provider()) + .add(prebuilt_colours::garage_colour_combo_provider()) + .add(robopass_preview_items::robopass_preview_provider()) + .add(singleplayer_campaigns::singleplayer_campaigns_provider(&init_ctx.cubes)) + .add(purchases::pending_purchases_provider()) + .add(building_xp_config::building_xp_config_provider()) + .add(weapon_rating_static::weapon_rating_provider()) + .add(weapon_xp_static::weapon_xp_provider()) + .add(machine::garage_machine_provider()) + .add(machine_colour::garage_machine_colour_provider()) + .add(last_completed_campaign::completed_campaign_provider()) + .add(daily_quests::player_daily_quests_provider()) + .add(tech_points::tech_points_awards_provider()) + .add(cube_awards::cube_awards_provider()) + .add(robot_sanction::robot_sanction_provider()) + .add(building_xp::building_xp_save_provider()) + .add(robot_sanction::all_robot_sanctions_provider()) + .add(reconnect_game::available_reconnect_provider()) + .add(machine::garage_machine_save_provider()) + .add(polariton_server::operations::Ack::<32, _>::default()) // TODO handle SaveMachineColorRequest instead of ignoring it + .add(polariton_server::operations::Ack::<45, _>::default()) // TODO handle UpdateThumbnailVersionRequest instead of ignoring it + .add(weapon_order::weapon_order_provider(&init_ctx.cubes)) + .add(regen_config::auto_regen_config_provider(&init_ctx.cubes)) + .add(pageantry::after_battle_vote_thresholds_provider(&init_ctx.cubes)) + .add(signup_time::user_signup_date_provider()) + .add(validate_machine::validate_robot_provider()) + .add(game_mode_config::game_mode_config_provider(&init_ctx.cubes)) + .add(score_multipliers_config::tdm_ai_score_config_provider()) + .add(player_robot_rank::player_robot_rank_provider()) + .add(validate_machine::validate_campaign_robot_provider()) + .add(singleplayer_campaigns::singleplayer_complete_campaign_provider(&init_ctx.cubes)) + .add(polariton_server::operations::Ack::<78, _>::default()) // TODO handle SaveCampaignGameAwardsRequest instead of ignoring it + .add(singleplayer_campaigns::singleplayer_save_complete_campaign_provider()) // TODO handle UpdatePlayerCompletedCampaignWaveRequest saving } diff --git a/rc_services_room/src/operations/more_auth.rs b/rc_services_room/src/operations/more_auth.rs index 27504f3..c3db130 100644 --- a/rc_services_room/src/operations/more_auth.rs +++ b/rc_services_room/src/operations/more_auth.rs @@ -7,11 +7,10 @@ impl MoreLobbyAuth { const AUTH_PAYLOAD_KEY: u8 = 245; } -impl Operation for MoreLobbyAuth { - type State = (); +impl Operation for MoreLobbyAuth { type User = crate::UserTy; - fn handle(&self, params: polariton::operation::ParameterTable, _: &mut Self::State, user: &Self::User) -> polariton::operation::OperationResponse { + fn handle(&self, params: polariton::operation::ParameterTable, user: &Self::User) -> polariton::operation::OperationResponse { let params_dict = params.to_dict(); if let Some(Typed::Str(auth_payload)) = params_dict.get(&Self::AUTH_PAYLOAD_KEY) { //let mut write_lock = user.write().unwrap(); diff --git a/rc_services_room/src/operations/singleplayer_campaigns.rs b/rc_services_room/src/operations/singleplayer_campaigns.rs index 9e1b520..8f0ab6a 100644 --- a/rc_services_room/src/operations/singleplayer_campaigns.rs +++ b/rc_services_room/src/operations/singleplayer_campaigns.rs @@ -34,11 +34,10 @@ pub struct SingleplayerCompleteCampaignProvider { campaign_details: rc_core::persist::config::CompleteCampaignProvider, } -impl Operation for SingleplayerCompleteCampaignProvider { - type State = (); +impl Operation for SingleplayerCompleteCampaignProvider { type User = crate::UserTy; - fn handle(&self, params: polariton::operation::ParameterTable, _: &mut Self::State, _user: &Self::User) -> polariton::operation::OperationResponse { + fn handle(&self, params: polariton::operation::ParameterTable, _user: &Self::User) -> polariton::operation::OperationResponse { let mut params = params.to_dict(); if let Some(Typed::Str(campaign_id)) = params.get(&CAMPAIGN_ID_PARAM_KEY) { if let Some(Typed::Int(campaign_difficulty)) = params.get(&CAMPAIGN_DIFFICULTY_PARAM_KEY) { @@ -70,7 +69,7 @@ impl Operation for SingleplayerCompleteCampaignProvider { impl OperationCode for SingleplayerCompleteCampaignProvider { fn op_code() -> u8 { - 16 + 64 } } diff --git a/rc_services_room/src/operations/versioner.rs b/rc_services_room/src/operations/versioner.rs index bbcbe02..ebdc5c5 100644 --- a/rc_services_room/src/operations/versioner.rs +++ b/rc_services_room/src/operations/versioner.rs @@ -7,11 +7,10 @@ impl VersionTeller { const LATEST_VERSION: i32 = 2855; } -impl Operation for VersionTeller { - type State = (); +impl Operation for VersionTeller { type User = crate::UserTy; - fn handle(&self, _: polariton::operation::ParameterTable, _: &mut Self::State, _: &Self::User) -> polariton::operation::OperationResponse { + fn handle(&self, _: polariton::operation::ParameterTable, _: &Self::User) -> polariton::operation::OperationResponse { let mut resp_params = std::collections::HashMap::new(); resp_params.insert(Self::VERSION_NUMBER_KEY, polariton::operation::Typed::Int(Self::LATEST_VERSION)); polariton::operation::OperationResponse { diff --git a/rc_singleplayer_room/src/operations/eac.rs b/rc_singleplayer_room/src/operations/eac.rs index fc2366f..e9bbe6b 100644 --- a/rc_singleplayer_room/src/operations/eac.rs +++ b/rc_singleplayer_room/src/operations/eac.rs @@ -2,11 +2,10 @@ use polariton_server::operations::{Operation, OperationCode}; pub struct EacChallengeIgnorer; -impl Operation for EacChallengeIgnorer { - type State = (); +impl Operation for EacChallengeIgnorer { type User = crate::UserTy; - fn handle(&self, params: polariton::operation::ParameterTable, _: &mut Self::State, _: &Self::User) -> polariton::operation::OperationResponse { + fn handle(&self, params: polariton::operation::ParameterTable, _: &Self::User) -> polariton::operation::OperationResponse { polariton::operation::OperationResponse { code: 5, // skip the challenge (hopefully) return_code: 0, diff --git a/rc_singleplayer_room/src/operations/mod.rs b/rc_singleplayer_room/src/operations/mod.rs index cfc8f9f..fe2eec2 100644 --- a/rc_singleplayer_room/src/operations/mod.rs +++ b/rc_singleplayer_room/src/operations/mod.rs @@ -6,8 +6,8 @@ use polariton_server::operations::OperationsHandler; pub fn handler() -> OperationsHandler { OperationsHandler::::new() - .without_state(more_auth::MoreLobbyAuth) - .without_state(eac::EacChallengeIgnorer) - .without_state(load_ai_robots::tdm_machines_provider()) - //.without_state(polariton_server::operations::Ack::<33, _>::default()) // get user clan info (this is equivalent to not being in a clan) + .add(more_auth::MoreLobbyAuth) + .add(eac::EacChallengeIgnorer) + .add(load_ai_robots::tdm_machines_provider()) + //.add(polariton_server::operations::Ack::<33, _>::default()) // get user clan info (this is equivalent to not being in a clan) } diff --git a/rc_singleplayer_room/src/operations/more_auth.rs b/rc_singleplayer_room/src/operations/more_auth.rs index 27504f3..c3db130 100644 --- a/rc_singleplayer_room/src/operations/more_auth.rs +++ b/rc_singleplayer_room/src/operations/more_auth.rs @@ -7,11 +7,10 @@ impl MoreLobbyAuth { const AUTH_PAYLOAD_KEY: u8 = 245; } -impl Operation for MoreLobbyAuth { - type State = (); +impl Operation for MoreLobbyAuth { type User = crate::UserTy; - fn handle(&self, params: polariton::operation::ParameterTable, _: &mut Self::State, user: &Self::User) -> polariton::operation::OperationResponse { + fn handle(&self, params: polariton::operation::ParameterTable, user: &Self::User) -> polariton::operation::OperationResponse { let params_dict = params.to_dict(); if let Some(Typed::Str(auth_payload)) = params_dict.get(&Self::AUTH_PAYLOAD_KEY) { //let mut write_lock = user.write().unwrap(); diff --git a/rc_social_room/src/operations/mod.rs b/rc_social_room/src/operations/mod.rs index 92ec9bc..860ee71 100644 --- a/rc_social_room/src/operations/mod.rs +++ b/rc_social_room/src/operations/mod.rs @@ -12,17 +12,17 @@ use polariton_server::operations::OperationsHandler; pub fn handler() -> OperationsHandler { OperationsHandler::::new() - .without_state(more_auth::MoreLobbyAuth) - //.without_state(polariton_server::operations::Ack::<33, _>::default()) // get user clan info (this is equivalent to not being in a clan) - .without_state(friend_list::friends_provider()) // TODO friend object parsing Token: 0x0200169C RID: 5788 - .without_state(settings::settings_provider()) // TODO save settings persistently - .without_state(polariton_server::operations::Ack::<43, _>::default()) // get my clan info (this is equivalent to not being in a clan) - .without_state(clan_invite::clan_invites_provider()) - .without_state(polariton_server::operations::Ack::<19, _>::default()) // get pending platoon invite (this is equivalent to having no pending invite) - .without_state(clan_info::clan_info_provider()) - .without_state(search_clan::search_clans_provider()) - .without_state(polariton_server::operations::Ack::<52, _>::default()) // validate pending season rewards (this just always needs to be ack-ed) - .without_state(season_rewards::season_rewards_provider()) - .without_state(previous_battle_rewards::pending_battle_rewards_provider()) - .without_state(platoon_data::platoon_provider()) + .add(more_auth::MoreLobbyAuth) + //.add(polariton_server::operations::Ack::<33, _>::default()) // get user clan info (this is equivalent to not being in a clan) + .add(friend_list::friends_provider()) // TODO friend object parsing Token: 0x0200169C RID: 5788 + .add(settings::settings_provider()) // TODO save settings persistently + .add(polariton_server::operations::Ack::<43, _>::default()) // get my clan info (this is equivalent to not being in a clan) + .add(clan_invite::clan_invites_provider()) + .add(polariton_server::operations::Ack::<19, _>::default()) // get pending platoon invite (this is equivalent to having no pending invite) + .add(clan_info::clan_info_provider()) + .add(search_clan::search_clans_provider()) + .add(polariton_server::operations::Ack::<52, _>::default()) // validate pending season rewards (this just always needs to be ack-ed) + .add(season_rewards::season_rewards_provider()) + .add(previous_battle_rewards::pending_battle_rewards_provider()) + .add(platoon_data::platoon_provider()) } diff --git a/rc_social_room/src/operations/more_auth.rs b/rc_social_room/src/operations/more_auth.rs index bd72f7f..fcb6985 100644 --- a/rc_social_room/src/operations/more_auth.rs +++ b/rc_social_room/src/operations/more_auth.rs @@ -7,11 +7,10 @@ impl MoreLobbyAuth { const AUTH_PAYLOAD_KEY: u8 = 245; } -impl Operation for MoreLobbyAuth { - type State = (); +impl Operation for MoreLobbyAuth { type User = crate::UserTy; - fn handle(&self, params: polariton::operation::ParameterTable, _: &mut Self::State, user: &Self::User) -> polariton::operation::OperationResponse { + fn handle(&self, params: polariton::operation::ParameterTable, user: &Self::User) -> polariton::operation::OperationResponse { let params_dict = params.to_dict(); if let Some(Typed::Str(auth_payload)) = params_dict.get(&Self::AUTH_PAYLOAD_KEY) { if user.update_with_auth(&auth_payload.string) {