From bd48133097eac13a128c6d551a11e04a9c1ab5a2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?D=C3=ADdac=20Sement=C3=A9=20Fern=C3=A1ndez?= Date: Thu, 15 Feb 2024 13:32:03 +0100 Subject: [PATCH] * Adjusted toolchain * Adjusted worklfow --- .github/workflows/release.yml | 6 +- Cargo.lock | 28 ++-- docker/Dockerfile | 2 + pallets/ajuna-awesome-avatars/src/lib.rs | 25 +-- pallets/ajuna-awesome-avatars/src/tests.rs | 17 +- .../avatar/versions/v2/combinator/glimmer.rs | 58 ++++--- .../avatar/versions/v2/combinator/mate.rs | 14 +- .../avatar/versions/v2/combinator/mod.rs | 9 +- .../avatar/versions/v2/combinator/tinker.rs | 84 +++++----- .../src/types/avatar/versions/v2/mod.rs | 156 +++++++++--------- .../src/types/avatar/versions/v2/mutator.rs | 27 ++- .../ajuna-nft-staking/src/tests/ext/cancel.rs | 4 +- .../ajuna-nft-staking/src/tests/ext/claim.rs | 2 +- rust-toolchain.toml | 2 +- 14 files changed, 221 insertions(+), 213 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index d7064387..c4169d3e 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -83,15 +83,15 @@ jobs: matrix: runtime: [ajuna] env: - SUBWASM_VERSION: v0.19.1 + SUBWASM_VERSION: v0.20.0 steps: - uses: actions/checkout@v3 - id: srtool_build - uses: chevdor/srtool-actions@v0.7.0 + uses: chevdor/srtool-actions@v0.9.2 with: image: paritytech/srtool chain: ${{ matrix.runtime }} - tag: 1.74.0 + tag: 1.74.0-0.13.0 - name: Install subwasm {{ env.SUBWASM_VERSION }} run: | wget https://github.com/chevdor/subwasm/releases/download/${{ env.SUBWASM_VERSION }}/subwasm_linux_amd64_${{ env.SUBWASM_VERSION }}.deb -O subwasm.deb diff --git a/Cargo.lock b/Cargo.lock index 8436f1c4..e853d72b 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -90,9 +90,9 @@ dependencies = [ [[package]] name = "aes" -version = "0.8.3" +version = "0.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac1f845298e95f983ff1944b728ae08b8cebab80d684f0a832ed0fc74dfa27e2" +checksum = "b169f7a6d4742236a0a00c541b845991d0ac43e546831af1249753ab4c3aa3a0" dependencies = [ "cfg-if", "cipher 0.4.4", @@ -120,7 +120,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "831010a0f742e1209b3bcea8fab6a8e149051ba6099432c8cb2cc117dec3ead1" dependencies = [ "aead 0.5.2", - "aes 0.8.3", + "aes 0.8.4", "cipher 0.4.4", "ctr 0.9.2", "ghash 0.5.0", @@ -1606,9 +1606,9 @@ checksum = "19d374276b40fb8bbdee95aef7c7fa6b5316ec764510eb64b8dd0e2ed0d7e7f5" [[package]] name = "crc32fast" -version = "1.3.2" +version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b540bd8bc810d3885c6ea91e2018302f68baba2129ab3e88f32389ee9370880d" +checksum = "b3855a8a784b474f333699ef2bbca9db2c4a1f6d9088a90a2d25b1eb53111eaa" dependencies = [ "cfg-if", ] @@ -3789,9 +3789,9 @@ dependencies = [ [[package]] name = "hermit-abi" -version = "0.3.5" +version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d0c62115964e08cb8039170eb33c1d0e2388a256930279edca206fff675f82c3" +checksum = "bd5256b483761cd23699d0da46cc6fd2ee3be420bbe6d020ae4a091e70b7e9fd" [[package]] name = "hex" @@ -4182,7 +4182,7 @@ version = "1.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "eae7b9aee968036d54dce06cebaefd919e4472e753296daccd6d344e3e2df0c2" dependencies = [ - "hermit-abi 0.3.5", + "hermit-abi 0.3.6", "libc", "windows-sys 0.48.0", ] @@ -4217,7 +4217,7 @@ version = "0.4.12" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f23ff5ef2b80d608d61efee834934d862cd92461afc0560dedf493e4c033738b" dependencies = [ - "hermit-abi 0.3.5", + "hermit-abi 0.3.6", "libc", "windows-sys 0.52.0", ] @@ -5887,7 +5887,7 @@ version = "1.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43" dependencies = [ - "hermit-abi 0.3.5", + "hermit-abi 0.3.6", "libc", ] @@ -7468,9 +7468,9 @@ dependencies = [ [[package]] name = "pkg-config" -version = "0.3.29" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2900ede94e305130c13ddd391e0ab7cbaeb783945ae07a279c268cb05109c6cb" +checksum = "d231b230927b5e4ad203db57bbcbee2802f6bce620b1e4a9024a07d94e2907ec" [[package]] name = "platforms" @@ -14216,9 +14216,9 @@ checksum = "dff9641d1cd4be8d1a070daf9e3773c5f67e78b4d9d42263020c057706765c04" [[package]] name = "winnow" -version = "0.5.39" +version = "0.5.40" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5389a154b01683d28c77f8f68f49dea75f0a4da32557a58f68ee51ebba472d29" +checksum = "f593a95398737aeed53e489c785df13f3618e41dbcd6718c6addbf1395aa6876" dependencies = [ "memchr", ] diff --git a/docker/Dockerfile b/docker/Dockerfile index 869df1e0..dbd24fee 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -7,6 +7,8 @@ ARG bin COPY . /ajuna WORKDIR /ajuna +RUN rustup component add rust-src + RUN apt update && apt install -y git clang curl libssl-dev llvm libudev-dev cmake protobuf-compiler RUN cargo build --locked --release --no-default-features --features ${features} --bin ${bin} diff --git a/pallets/ajuna-awesome-avatars/src/lib.rs b/pallets/ajuna-awesome-avatars/src/lib.rs index a62f79b9..b947734b 100644 --- a/pallets/ajuna-awesome-avatars/src/lib.rs +++ b/pallets/ajuna-awesome-avatars/src/lib.rs @@ -52,7 +52,6 @@ //! * `do_mint` - Mint avatar. //! * `ensure_season` - Given a season id and a season, validate them. -#![feature(variant_count)] #![cfg_attr(not(feature = "std"), no_std)] extern crate core; @@ -611,8 +610,8 @@ pub mod pallet { let avatar = Self::ensure_ownership(&seller, &avatar_id)?; let (current_season_id, Season { fee, .. }) = Self::current_season_with_id()?; let trade_fee = fee.buy_minimum.max( - price.saturating_mul(fee.buy_percent.unique_saturated_into()) / - MAX_PERCENTAGE.unique_saturated_into(), + price.saturating_mul(fee.buy_percent.unique_saturated_into()) + / MAX_PERCENTAGE.unique_saturated_into(), ); T::Currency::withdraw(&buyer, trade_fee, WithdrawReasons::FEE, AllowDeath)?; Self::deposit_into_treasury(&avatar.season_id, trade_fee); @@ -713,9 +712,9 @@ pub mod pallet { let (current_season_id, season) = Self::current_season_with_id()?; ensure!( - season_id < current_season_id || - (season_id == current_season_id && - >::block_number() > season.end), + season_id < current_season_id + || (season_id == current_season_id + && >::block_number() > season.end), Error::::CannotClaimDuringSeason ); @@ -1168,8 +1167,8 @@ pub mod pallet { .try_push(*avatar_id) .map_err(|_| Error::::MaxOwnershipReached)?; ensure!( - to_avatar_ids.len() <= - PlayerSeasonConfigs::::get(to, season_id).storage_tier as usize, + to_avatar_ids.len() + <= PlayerSeasonConfigs::::get(to, season_id).storage_tier as usize, Error::::MaxOwnershipReached ); @@ -1331,8 +1330,9 @@ pub mod pallet { avatar_ids: vec![(leader_id, upgraded_components)], }); }, - LeaderForgeOutput::Consumed(leader_id) => - Self::remove_avatar_from(player, season_id, &leader_id), + LeaderForgeOutput::Consumed(leader_id) => { + Self::remove_avatar_from(player, season_id, &leader_id) + }, } Ok(()) @@ -1358,8 +1358,9 @@ pub mod pallet { Self::try_add_avatar_to(player, season_id, avatar_id, avatar)?; minted_avatars.push(avatar_id); }, - ForgeOutput::Consumed(avatar_id) => - Self::remove_avatar_from(player, season_id, &avatar_id), + ForgeOutput::Consumed(avatar_id) => { + Self::remove_avatar_from(player, season_id, &avatar_id) + }, } } diff --git a/pallets/ajuna-awesome-avatars/src/tests.rs b/pallets/ajuna-awesome-avatars/src/tests.rs index b375dc81..0546c1bc 100644 --- a/pallets/ajuna-awesome-avatars/src/tests.rs +++ b/pallets/ajuna-awesome-avatars/src/tests.rs @@ -969,8 +969,9 @@ mod minting { // initial checks match payment { - MintPayment::Normal => - assert_eq!(Balances::total_balance(&ALICE), initial_balance), + MintPayment::Normal => { + assert_eq!(Balances::total_balance(&ALICE), initial_balance) + }, MintPayment::Free => assert_eq!( PlayerConfigs::::get(ALICE).free_mints, initial_free_mints @@ -1180,9 +1181,9 @@ mod minting { .map(|avatar_id| Avatars::::get(avatar_id).unwrap()) .collect::>(); assert!(minted.iter().all(|(owner, avatar)| { - owner == &ALICE && - (avatar.souls >= 1 && avatar.souls <= 100) && - avatar.season_id == 1 + owner == &ALICE + && (avatar.souls >= 1 && avatar.souls <= 100) + && avatar.season_id == 1 })); } }); @@ -1844,8 +1845,8 @@ mod forging { // check for souls accumulation assert_eq!( forged_leader.souls, - original_leader.souls + - original_sacrifices.iter().map(|x| x.souls).sum::(), + original_leader.souls + + original_sacrifices.iter().map(|x| x.souls).sum::(), ); // check for the upgraded DNA @@ -2938,7 +2939,7 @@ mod account { #[test] fn upgrade_storage_should_work() { let upgrade_fee = 12_345 as MockBalance; - let num_storage_tiers = sp_std::mem::variant_count::(); + let num_storage_tiers = 6; let alice_balance = num_storage_tiers as MockBalance * upgrade_fee; let mut treasury_balance = 0; let total_supply = treasury_balance + alice_balance; diff --git a/pallets/ajuna-awesome-avatars/src/types/avatar/versions/v2/combinator/glimmer.rs b/pallets/ajuna-awesome-avatars/src/types/avatar/versions/v2/combinator/glimmer.rs index 5347df88..65020099 100644 --- a/pallets/ajuna-awesome-avatars/src/types/avatar/versions/v2/combinator/glimmer.rs +++ b/pallets/ajuna-awesome-avatars/src/types/avatar/versions/v2/combinator/glimmer.rs @@ -7,8 +7,8 @@ impl AvatarCombinator { season_id: SeasonId, hash_provider: &mut HashProvider, ) -> Result<(LeaderForgeOutput, Vec>), DispatchError> { - let color_types = variant_count::() as u8; - let forces = variant_count::() as u8; + let color_types = 5_u8; + let forces = 7_u8; let (leader_id, mut leader) = input_leader; let mut leader_consumed = false; @@ -20,19 +20,19 @@ impl AvatarCombinator { // If we consumed the leader in a previous step, we collect all // sacrifices and skip all future loops other_output.push(ForgeOutput::Forged((sacrifice_id, sacrifice), 0)); - continue + continue; } let leader_quantity = AvatarUtils::read_attribute(&leader, &AvatarAttributes::Quantity); let sacrifice_quantity = AvatarUtils::read_attribute(&sacrifice, &AvatarAttributes::Quantity); - if leader_quantity < GLIMMER_FORGE_GLIMMER_USE || - sacrifice_quantity < GLIMMER_FORGE_MATERIAL_USE + if leader_quantity < GLIMMER_FORGE_GLIMMER_USE + || sacrifice_quantity < GLIMMER_FORGE_MATERIAL_USE { // If we skip the loop then the sacrifice remains unused other_output.push(ForgeOutput::Forged((sacrifice_id, sacrifice), 0)); - continue + continue; } let (_, consumed, out_leader_souls) = @@ -69,8 +69,8 @@ impl AvatarCombinator { ); gen_avatar = gen_avatar.into_egg(&RarityTier::Rare, 0x00, soul_points, progress_array); - } else if rand_1 == - (AvatarUtils::high_nibble_of(rand_1) + AvatarUtils::low_nibble_of(rand_2)) + } else if rand_1 + == (AvatarUtils::high_nibble_of(rand_1) + AvatarUtils::low_nibble_of(rand_2)) { let color_pair = ( ColorType::from_byte(rand_1 % (color_types + 1)), @@ -102,9 +102,9 @@ impl AvatarCombinator { ); gen_avatar = gen_avatar.into_glow_spark(&force, soul_points, progress_array); } - } else if (rand_0 as u32 * SCALING_FACTOR_PERC < - (GLIMMER_PROB_PERC * TOOLBOX_PERC) * MAX_BYTE) && - AvatarUtils::can_use_avatar(&leader, GLIMMER_FORGE_TOOLBOX_USE) + } else if (rand_0 as u32 * SCALING_FACTOR_PERC + < (GLIMMER_PROB_PERC * TOOLBOX_PERC) * MAX_BYTE) + && AvatarUtils::can_use_avatar(&leader, GLIMMER_FORGE_TOOLBOX_USE) { let (_, consumed, out_leader_souls) = AvatarUtils::use_avatar(&mut leader, GLIMMER_FORGE_TOOLBOX_USE); @@ -265,10 +265,11 @@ mod test { let sacrifice_3 = create_random_material(&ALICE, &MaterialItemType::Ceramics, 20); let sacrifice_4 = create_random_material(&ALICE, &MaterialItemType::Metals, 20); - let total_soul_points = - leader.1.souls + - sacrifice_1.1.souls + sacrifice_2.1.souls + - sacrifice_3.1.souls + sacrifice_4.1.souls; + let total_soul_points = leader.1.souls + + sacrifice_1.1.souls + + sacrifice_2.1.souls + + sacrifice_3.1.souls + + sacrifice_4.1.souls; let (leader_output, sacrifice_output) = AvatarCombinator::::glimmer_avatars( leader, @@ -362,8 +363,8 @@ mod test { let qty = AvatarUtils::read_attribute(avatar, &AvatarAttributes::Quantity); assert!( - (item_sub_type == SpecialItemType::Dust && qty == 5) || - (item_sub_type == SpecialItemType::ToolBox && qty == 1) + (item_sub_type == SpecialItemType::Dust && qty == 5) + || (item_sub_type == SpecialItemType::ToolBox && qty == 1) ); } else { panic!("ForgeOutput should have been Minted!") @@ -392,10 +393,11 @@ mod test { let sacrifice_3 = create_random_material(&ALICE, &MaterialItemType::Ceramics, 20); let sacrifice_4 = create_random_material(&ALICE, &MaterialItemType::Metals, 20); - let total_soul_points = - leader.1.souls + - sacrifice_1.1.souls + sacrifice_2.1.souls + - sacrifice_3.1.souls + sacrifice_4.1.souls; + let total_soul_points = leader.1.souls + + sacrifice_1.1.souls + + sacrifice_2.1.souls + + sacrifice_3.1.souls + + sacrifice_4.1.souls; let (leader_output, sacrifice_output) = AvatarCombinator::::glimmer_avatars( leader, @@ -489,8 +491,8 @@ mod test { let qty = AvatarUtils::read_attribute(avatar, &AvatarAttributes::Quantity); assert!( - (item_sub_type == SpecialItemType::Dust && qty == 5) || - (item_sub_type == SpecialItemType::ToolBox && qty == 1) + (item_sub_type == SpecialItemType::Dust && qty == 5) + || (item_sub_type == SpecialItemType::ToolBox && qty == 1) ); } else { panic!("ForgeOutput should have been Minted!") @@ -838,7 +840,7 @@ mod test { &AvatarAttributes::ItemType, ) { ItemType::Pet => probability_array[1] += 1, - ItemType::Essence => + ItemType::Essence => { match AvatarUtils::read_attribute_as::( avatar, &AvatarAttributes::ItemSubType, @@ -846,8 +848,9 @@ mod test { EssenceItemType::ColorSpark => probability_array[2] += 1, EssenceItemType::GlowSpark => probability_array[3] += 1, _ => panic!("Generated avatar EssenceItemType not valid!"), - }, - ItemType::Special => + } + }, + ItemType::Special => { match AvatarUtils::read_attribute_as::( avatar, &AvatarAttributes::ItemSubType, @@ -856,7 +859,8 @@ mod test { SpecialItemType::Unidentified => probability_array[5] += 1, SpecialItemType::Fragment => probability_array[6] += 1, SpecialItemType::ToolBox => probability_array[7] += 1, - }, + } + }, _ => panic!("Generated avatar ItemType not valid!"), } } else { diff --git a/pallets/ajuna-awesome-avatars/src/types/avatar/versions/v2/combinator/mate.rs b/pallets/ajuna-awesome-avatars/src/types/avatar/versions/v2/combinator/mate.rs index 476922d8..874fd95b 100644 --- a/pallets/ajuna-awesome-avatars/src/types/avatar/versions/v2/combinator/mate.rs +++ b/pallets/ajuna-awesome-avatars/src/types/avatar/versions/v2/combinator/mate.rs @@ -15,7 +15,7 @@ impl AvatarCombinator { .into_iter() .map(|input| ForgeOutput::Forged(input, 0)) .collect(), - )) + )); } let (leader_id, mut leader) = input_leader; @@ -28,7 +28,7 @@ impl AvatarCombinator { return Ok(( LeaderForgeOutput::Forged((leader_id, leader), 0), vec![ForgeOutput::Forged((partner_id, partner), 0)], - )) + )); } if AvatarUtils::spec_byte_split_ten_count(&partner) < MAX_EQUIPPED_SLOTS { leader.souls += partner.souls; @@ -36,7 +36,7 @@ impl AvatarCombinator { return Ok(( LeaderForgeOutput::Forged((leader_id, leader), 0), vec![ForgeOutput::Consumed(partner_id)], - )) + )); } let (mirrors, _) = AvatarUtils::match_progress_arrays( @@ -51,7 +51,7 @@ impl AvatarCombinator { return Ok(( LeaderForgeOutput::Forged((leader_id, leader), 0), vec![ForgeOutput::Consumed(partner_id)], - )) + )); } let leader_pet_type = @@ -65,8 +65,8 @@ impl AvatarCombinator { let partner_pet_variation = AvatarUtils::read_attribute(&partner, &AvatarAttributes::CustomType2); - let legendary_egg_flag = ((hash_provider.hash[0] | hash_provider.hash[1]) == 0x7F) && - ((leader_pet_variation + partner_pet_variation) % 42) == 0; + let legendary_egg_flag = ((hash_provider.hash[0] | hash_provider.hash[1]) == 0x7F) + && ((leader_pet_variation + partner_pet_variation) % 42) == 0; let random_pet_variation = hash_provider.hash[0] & hash_provider.hash[1] & 0b0111_1111; @@ -123,7 +123,7 @@ impl AvatarCombinator { }) .transpose()?; - Ok((leader_output, other_output.into_iter().chain(additional_output.into_iter()).collect())) + Ok((leader_output, other_output.into_iter().chain(additional_output).collect())) } } diff --git a/pallets/ajuna-awesome-avatars/src/types/avatar/versions/v2/combinator/mod.rs b/pallets/ajuna-awesome-avatars/src/types/avatar/versions/v2/combinator/mod.rs index d9fae60b..40736663 100644 --- a/pallets/ajuna-awesome-avatars/src/types/avatar/versions/v2/combinator/mod.rs +++ b/pallets/ajuna-awesome-avatars/src/types/avatar/versions/v2/combinator/mod.rs @@ -12,8 +12,6 @@ mod statue; mod tinker; use super::*; -use sp_std::mem::variant_count; - pub(super) struct AvatarCombinator(pub PhantomData); impl AvatarCombinator { @@ -40,8 +38,9 @@ impl AvatarCombinator { >::block_number(), ), ForgeType::Feed => Self::feed_avatars(leader, sacrifices), - ForgeType::Glimmer => - Self::glimmer_avatars(leader, sacrifices, season_id, hash_provider), + ForgeType::Glimmer => { + Self::glimmer_avatars(leader, sacrifices, season_id, hash_provider) + }, ForgeType::Spark => Self::spark_avatars(leader, sacrifices, hash_provider), ForgeType::Flask => Self::flask_avatars(leader, sacrifices, hash_provider), ForgeType::Statue => Self::statue_avatars( @@ -115,7 +114,7 @@ impl AvatarCombinator { matching_score.retain(|item| *item != pos); if matching_score.is_empty() { - break + break; } } } diff --git a/pallets/ajuna-awesome-avatars/src/types/avatar/versions/v2/combinator/tinker.rs b/pallets/ajuna-awesome-avatars/src/types/avatar/versions/v2/combinator/tinker.rs index 3ef370db..18ae12e6 100644 --- a/pallets/ajuna-awesome-avatars/src/types/avatar/versions/v2/combinator/tinker.rs +++ b/pallets/ajuna-awesome-avatars/src/types/avatar/versions/v2/combinator/tinker.rs @@ -25,8 +25,8 @@ impl AvatarCombinator { .chunks_exact(2) .take(4) .map(|chunk| { - sacrifice_pattern == - AvatarUtils::bits_order_to_enum( + sacrifice_pattern + == AvatarUtils::bits_order_to_enum( chunk[1] as u32, 4, AvatarUtils::bits_to_enums::(chunk[0] as u32), @@ -157,11 +157,11 @@ mod test { let material_input_3 = create_random_material(&ALICE, &pattern[2], 1); let material_input_4 = create_random_material(&ALICE, &pattern[3], 1); - let total_soul_points = pet_part_input_1.1.souls + - material_input_1.1.souls + - material_input_2.1.souls + - material_input_3.1.souls + - material_input_4.1.souls; + let total_soul_points = pet_part_input_1.1.souls + + material_input_1.1.souls + + material_input_2.1.souls + + material_input_3.1.souls + + material_input_4.1.souls; assert_eq!(total_soul_points, 5); let (leader_output, sacrifice_output) = AvatarCombinator::::tinker_avatars( @@ -178,7 +178,7 @@ mod test { if let LeaderForgeOutput::Consumed(_) = leader_output { let minted_blueprint = sacrifice_output .into_iter() - .filter(|output| is_minted(output)) + .filter(is_minted) .collect::>>() .pop() .expect("Should have 1 element!"); @@ -237,11 +237,11 @@ mod test { let material_input_3 = create_random_material(&ALICE, &pattern[2], 2); let material_input_4 = create_random_material(&ALICE, &pattern[3], 1); - let total_soul_points = pet_part_input_1.1.souls + - material_input_1.1.souls + - material_input_2.1.souls + - material_input_3.1.souls + - material_input_4.1.souls; + let total_soul_points = pet_part_input_1.1.souls + + material_input_1.1.souls + + material_input_2.1.souls + + material_input_3.1.souls + + material_input_4.1.souls; assert_eq!(total_soul_points, 7); let (leader_output, sacrifice_output) = AvatarCombinator::::tinker_avatars( @@ -273,7 +273,7 @@ mod test { if let LeaderForgeOutput::Consumed(_) = leader_output { let minted_blueprint = sacrifice_output .into_iter() - .filter(|output| is_minted(output)) + .filter(is_minted) .collect::>>() .pop() .expect("Should have 1 element!"); @@ -323,11 +323,11 @@ mod test { let material_input_3 = create_random_material(&ALICE, &pattern[2], 2); let material_input_4 = create_random_material(&ALICE, &pattern[3], 2); - let total_soul_points = pet_part_input_1.1.souls + - material_input_1.1.souls + - material_input_2.1.souls + - material_input_3.1.souls + - material_input_4.1.souls; + let total_soul_points = pet_part_input_1.1.souls + + material_input_1.1.souls + + material_input_2.1.souls + + material_input_3.1.souls + + material_input_4.1.souls; assert_eq!(total_soul_points, 10); let (leader_output, sacrifice_output) = AvatarCombinator::::tinker_avatars( @@ -350,7 +350,7 @@ mod test { let minted_blueprint = sacrifice_output .into_iter() - .filter(|output| is_minted(output)) + .filter(is_minted) .collect::>>() .pop() .expect("Should have 1 element!"); @@ -399,11 +399,11 @@ mod test { let material_input_3 = create_random_material(&ALICE, &pattern[1], 1); let material_input_4 = create_random_material(&ALICE, &pattern[3], 1); - let total_soul_points = pet_part_input_1.1.souls + - material_input_1.1.souls + - material_input_2.1.souls + - material_input_3.1.souls + - material_input_4.1.souls; + let total_soul_points = pet_part_input_1.1.souls + + material_input_1.1.souls + + material_input_2.1.souls + + material_input_3.1.souls + + material_input_4.1.souls; assert_eq!(total_soul_points, 5); let (leader_output, sacrifice_output) = AvatarCombinator::::tinker_avatars( @@ -428,9 +428,10 @@ mod test { .iter() .map(|output| { match output { - ForgeOutput::Forged((_, avatar), _) => + ForgeOutput::Forged((_, avatar), _) => { AvatarUtils::read_attribute(avatar, &AvatarAttributes::Quantity) - as u32, + as u32 + }, _ => 0, } }) @@ -475,11 +476,11 @@ mod test { let material_input_4 = create_random_material(&ALICE, &MaterialItemType::Electronics, 1); - let total_soul_points = pet_part_input_1.1.souls + - material_input_1.1.souls + - material_input_2.1.souls + - material_input_3.1.souls + - material_input_4.1.souls; + let total_soul_points = pet_part_input_1.1.souls + + material_input_1.1.souls + + material_input_2.1.souls + + material_input_3.1.souls + + material_input_4.1.souls; assert_eq!(total_soul_points, 5); let (leader_output, sacrifice_output) = AvatarCombinator::::tinker_avatars( @@ -504,9 +505,10 @@ mod test { .iter() .map(|output| { match output { - ForgeOutput::Forged((_, avatar), _) => + ForgeOutput::Forged((_, avatar), _) => { AvatarUtils::read_attribute(avatar, &AvatarAttributes::Quantity) - as u32, + as u32 + }, _ => 0, } }) @@ -549,11 +551,11 @@ mod test { let material_input_3 = create_random_material(&ALICE, &pattern[2], 1); let material_input_4 = create_random_material(&ALICE, &pattern[3], 1); - let total_soul_points = pet_part_input_1.1.souls + - material_input_1.1.souls + - material_input_2.1.souls + - material_input_3.1.souls + - material_input_4.1.souls; + let total_soul_points = pet_part_input_1.1.souls + + material_input_1.1.souls + + material_input_2.1.souls + + material_input_3.1.souls + + material_input_4.1.souls; assert_eq!(total_soul_points, 5); let (leader_output, sacrifice_output) = AvatarCombinator::::tinker_avatars( @@ -570,7 +572,7 @@ mod test { if let LeaderForgeOutput::Consumed(_) = leader_output { let minted_blueprint = sacrifice_output .into_iter() - .filter(|output| is_minted(output)) + .filter(is_minted) .collect::>>() .pop() .expect("Should have 1 element!"); @@ -684,7 +686,7 @@ mod test { if let LeaderForgeOutput::Forged((_, _), _) = leader_output { let minted_blueprint = sacrifice_output .into_iter() - .filter(|output| is_minted(output)) + .filter(is_minted) .collect::>>() .pop() .expect("Should have 1 element!"); diff --git a/pallets/ajuna-awesome-avatars/src/types/avatar/versions/v2/mod.rs b/pallets/ajuna-awesome-avatars/src/types/avatar/versions/v2/mod.rs index 7475e641..855d66c0 100644 --- a/pallets/ajuna-awesome-avatars/src/types/avatar/versions/v2/mod.rs +++ b/pallets/ajuna-awesome-avatars/src/types/avatar/versions/v2/mod.rs @@ -7,14 +7,14 @@ mod slot_roller; mod test_utils; mod types; -pub(self) use avatar_utils::*; -pub(self) use combinator::*; -pub(self) use constants::*; -pub(self) use mutator::*; -pub(self) use slot_roller::*; +use avatar_utils::*; +use combinator::*; +use constants::*; +use mutator::*; +use slot_roller::*; #[cfg(test)] -pub(self) use test_utils::*; -pub(self) use types::*; +use test_utils::*; +use types::*; use super::*; use crate::{ @@ -23,7 +23,7 @@ use crate::{ Config, }; use sp_runtime::DispatchError; -use sp_std::{mem::variant_count, prelude::*}; +use sp_std::prelude::*; pub(crate) struct AttributeMapperV2; @@ -215,23 +215,23 @@ impl ForgerV2 { sacrifice, &AvatarAttributes::ItemSubType, ); - AvatarUtils::has_item_type(sacrifice, ItemType::Equippable) && - AvatarUtils::same_rarity_tier(leader, sacrifice) && - AvatarUtils::same_class_type2(leader, sacrifice) && - (equippable_item == EquippableItemType::ArmorBase || - EquippableItemType::is_weapon(equippable_item)) + AvatarUtils::has_item_type(sacrifice, ItemType::Equippable) + && AvatarUtils::same_rarity_tier(leader, sacrifice) + && AvatarUtils::same_class_type2(leader, sacrifice) + && (equippable_item == EquippableItemType::ArmorBase + || EquippableItemType::is_weapon(equippable_item)) }) { ForgeType::Equip } else if sacrifices.iter().all(|sacrifice| { - AvatarUtils::same_item_type(sacrifice, leader) && - AvatarUtils::same_item_sub_type(sacrifice, leader) && - AvatarUtils::same_rarity_tier(sacrifice, leader) + AvatarUtils::same_item_type(sacrifice, leader) + && AvatarUtils::same_item_sub_type(sacrifice, leader) + && AvatarUtils::same_rarity_tier(sacrifice, leader) }) { ForgeType::Mate } else if sacrifices.iter().all(|sacrifice| { - AvatarUtils::same_item_type(sacrifice, leader) && - AvatarUtils::has_item_sub_type(sacrifice, PetItemType::Egg) && - AvatarUtils::read_rarity(sacrifice) < RarityTier::Legendary + AvatarUtils::same_item_type(sacrifice, leader) + && AvatarUtils::has_item_sub_type(sacrifice, PetItemType::Egg) + && AvatarUtils::read_rarity(sacrifice) < RarityTier::Legendary }) { ForgeType::Feed } else { @@ -239,18 +239,18 @@ impl ForgerV2 { } }, PetItemType::PetPart => { - if AvatarUtils::has_zeroed_class_types(leader) && - sacrifices.iter().all(|sacrifice| { - AvatarUtils::same_item_type(sacrifice, leader) && - AvatarUtils::same_item_sub_type(sacrifice, leader) && - AvatarUtils::has_zeroed_class_types(sacrifice) + if AvatarUtils::has_zeroed_class_types(leader) + && sacrifices.iter().all(|sacrifice| { + AvatarUtils::same_item_type(sacrifice, leader) + && AvatarUtils::same_item_sub_type(sacrifice, leader) + && AvatarUtils::has_zeroed_class_types(sacrifice) }) { ForgeType::Statue } else if sacrifices.iter().all(|sacrifice| { - AvatarUtils::same_item_type(sacrifice, leader) && - AvatarUtils::same_item_sub_type(sacrifice, leader) && - AvatarUtils::same_class_type2(sacrifice, leader) && - AvatarUtils::has_attribute_with_value_different_than( + AvatarUtils::same_item_type(sacrifice, leader) + && AvatarUtils::same_item_sub_type(sacrifice, leader) + && AvatarUtils::same_class_type2(sacrifice, leader) + && AvatarUtils::has_attribute_with_value_different_than( sacrifice, &AvatarAttributes::ClassType2, HexType::X0, @@ -277,10 +277,10 @@ impl ForgerV2 { PetItemType::Egg => { let leader_rarity = AvatarUtils::read_rarity(leader); - if leader_rarity <= RarityTier::Epic && - sacrifices.iter().all(|sacrifice| { - AvatarUtils::same_item_type(sacrifice, leader) && - AvatarUtils::same_item_sub_type(sacrifice, leader) + if leader_rarity <= RarityTier::Epic + && sacrifices.iter().all(|sacrifice| { + AvatarUtils::same_item_type(sacrifice, leader) + && AvatarUtils::same_item_sub_type(sacrifice, leader) }) { ForgeType::Breed } else { @@ -290,8 +290,8 @@ impl ForgerV2 { }, ItemType::Material => { if sacrifices.iter().all(|sacrifice| { - AvatarUtils::same_item_type(sacrifice, leader) && - AvatarUtils::same_item_sub_type(sacrifice, leader) + AvatarUtils::same_item_type(sacrifice, leader) + && AvatarUtils::same_item_sub_type(sacrifice, leader) }) { ForgeType::Stack } else { @@ -301,14 +301,14 @@ impl ForgerV2 { ItemType::Essence => match AvatarUtils::read_sub_type::(leader) { EssenceItemType::Glimmer => { if sacrifices.iter().all(|sacrifice| { - AvatarUtils::has_item_type(sacrifice, ItemType::Material) && - AvatarUtils::read_quantity(sacrifice) >= 4 + AvatarUtils::has_item_type(sacrifice, ItemType::Material) + && AvatarUtils::read_quantity(sacrifice) >= 4 }) && AvatarUtils::read_quantity(leader) as usize >= sacrifices.len() { ForgeType::Glimmer } else if sacrifices.iter().all(|sacrifice| { - AvatarUtils::same_item_type(sacrifice, leader) && - AvatarUtils::same_item_sub_type(sacrifice, leader) + AvatarUtils::same_item_type(sacrifice, leader) + && AvatarUtils::same_item_sub_type(sacrifice, leader) }) { ForgeType::Stack } else { @@ -317,8 +317,8 @@ impl ForgerV2 { }, EssenceItemType::ColorSpark | EssenceItemType::GlowSpark => { if sacrifices.iter().all(|sacrifice| { - AvatarUtils::same_item_type(sacrifice, leader) && - AvatarUtils::same_item_sub_type(sacrifice, leader) + AvatarUtils::same_item_type(sacrifice, leader) + && AvatarUtils::same_item_sub_type(sacrifice, leader) }) { ForgeType::Spark } else { @@ -352,17 +352,17 @@ impl ForgerV2 { ], ); - same_assemble_version && - (EquippableItemType::is_armor(equipable_sacrifice_item) || is_toolbox) + same_assemble_version + && (EquippableItemType::is_armor(equipable_sacrifice_item) || is_toolbox) }); - if EquippableItemType::is_armor(leader_sub_type) && - any_same_assemble_version && - all_sacrifice_are_armor_or_toolbox + if EquippableItemType::is_armor(leader_sub_type) + && any_same_assemble_version + && all_sacrifice_are_armor_or_toolbox { ForgeType::Assemble - } else if leader_rarity == RarityTier::Epic && - leader_sub_type == EquippableItemType::ArmorBase + } else if leader_rarity == RarityTier::Epic + && leader_sub_type == EquippableItemType::ArmorBase { let has_one_paint_flask_or_glow = sacrifices .iter() @@ -376,8 +376,8 @@ impl ForgerV2 { &AvatarAttributes::ItemSubType, ); - item_sub_type == EssenceItemType::PaintFlask || - item_sub_type == EssenceItemType::GlowFlask + item_sub_type == EssenceItemType::PaintFlask + || item_sub_type == EssenceItemType::GlowFlask }; is_essence && is_flask_or_glow @@ -397,9 +397,9 @@ impl ForgerV2 { &AvatarAttributes::ItemSubType, ); - item_sub_type == EssenceItemType::Glimmer || - item_sub_type == EssenceItemType::PaintFlask || - item_sub_type == EssenceItemType::GlowFlask + item_sub_type == EssenceItemType::Glimmer + || item_sub_type == EssenceItemType::PaintFlask + || item_sub_type == EssenceItemType::GlowFlask }; is_essence && is_glimmer_flask_or_force @@ -416,36 +416,38 @@ impl ForgerV2 { }, ItemType::Blueprint => { if sacrifices.iter().all(|sacrifice| { - AvatarUtils::same_item_type(leader, sacrifice) && - AvatarUtils::same_item_sub_type(leader, sacrifice) && - AvatarUtils::same_class_type1(leader, sacrifice) && - AvatarUtils::same_class_type2(leader, sacrifice) && - AvatarUtils::has_same_spec_byte_as( + AvatarUtils::same_item_type(leader, sacrifice) + && AvatarUtils::same_item_sub_type(leader, sacrifice) + && AvatarUtils::same_class_type1(leader, sacrifice) + && AvatarUtils::same_class_type2(leader, sacrifice) + && AvatarUtils::has_same_spec_byte_as( sacrifice, leader, &AvatarSpecBytes::SpecByte3, ) }) { ForgeType::Stack - } else if sacrifices.len() == 4 && - sacrifices.iter().all(|sacrifice| { - AvatarUtils::has_item_type(sacrifice, ItemType::Material) - }) { + } else if sacrifices.len() == 4 + && sacrifices + .iter() + .all(|sacrifice| AvatarUtils::has_item_type(sacrifice, ItemType::Material)) + { ForgeType::Build } else { ForgeType::None } }, ItemType::Special => match AvatarUtils::read_sub_type::(leader) { - SpecialItemType::Dust => + SpecialItemType::Dust => { if sacrifices.iter().all(|sacrifice| { - AvatarUtils::same_item_type(sacrifice, leader) && - AvatarUtils::same_item_sub_type(sacrifice, leader) + AvatarUtils::same_item_type(sacrifice, leader) + && AvatarUtils::same_item_sub_type(sacrifice, leader) }) { ForgeType::Stack } else { ForgeType::None - }, + } + }, _ => ForgeType::None, }, } @@ -1161,12 +1163,12 @@ mod test { let mut avatar = avatar; let class_type_1 = SlotType::from_byte( - (random_hash.get_hash_byte() % SlotType::range().end as u8) + - SlotType::range().start as u8, + (random_hash.get_hash_byte() % SlotType::range().end as u8) + + SlotType::range().start as u8, ); let class_type_2 = PetType::from_byte( - (random_hash.get_hash_byte() % PetType::range().end as u8) + - PetType::range().start as u8, + (random_hash.get_hash_byte() % PetType::range().end as u8) + + PetType::range().start as u8, ); let rarity_type = RarityTier::from_byte( (random_hash.get_hash_byte() % RarityTier::Mythical.as_byte()) + 1, @@ -1177,18 +1179,18 @@ mod test { (random_hash.get_hash_byte() % PetItemType::Egg.as_byte()) + 1, ), ItemType::Material => HexType::from_byte( - (random_hash.get_hash_byte() % - MaterialItemType::Nanomaterials.as_byte()) + - 1, + (random_hash.get_hash_byte() + % MaterialItemType::Nanomaterials.as_byte()) + + 1, ), ItemType::Essence => HexType::from_byte( - (random_hash.get_hash_byte() % EssenceItemType::GlowFlask.as_byte()) + - 1, + (random_hash.get_hash_byte() % EssenceItemType::GlowFlask.as_byte()) + + 1, ), ItemType::Equippable => HexType::from_byte( - (random_hash.get_hash_byte() % - EquippableItemType::WeaponVersion3.as_byte()) + - 1, + (random_hash.get_hash_byte() + % EquippableItemType::WeaponVersion3.as_byte()) + + 1, ), ItemType::Blueprint | ItemType::Special => HexType::X0, }; diff --git a/pallets/ajuna-awesome-avatars/src/types/avatar/versions/v2/mutator.rs b/pallets/ajuna-awesome-avatars/src/types/avatar/versions/v2/mutator.rs index b3e68688..84a1ee03 100644 --- a/pallets/ajuna-awesome-avatars/src/types/avatar/versions/v2/mutator.rs +++ b/pallets/ajuna-awesome-avatars/src/types/avatar/versions/v2/mutator.rs @@ -101,8 +101,9 @@ impl AvatarMutator for EssenceItemType { let souls = (hash_provider.get_hash_byte() % 99) + 1; let avatar = match *self { - EssenceItemType::Glimmer => - AvatarBuilder::with_base_avatar(base_avatar).into_glimmer(1), + EssenceItemType::Glimmer => { + AvatarBuilder::with_base_avatar(base_avatar).into_glimmer(1) + }, EssenceItemType::ColorSpark | EssenceItemType::PaintFlask => { let hash_byte = hash_provider.get_hash_byte(); let color_pair = ( @@ -187,10 +188,10 @@ impl AvatarMutator for EquippableItemType { let pet_type = SlotRoller::::roll_on(&PET_TYPE_PROBABILITIES, hash_provider); let avatar = match *self { - EquippableItemType::ArmorBase | - EquippableItemType::ArmorComponent1 | - EquippableItemType::ArmorComponent2 | - EquippableItemType::ArmorComponent3 => { + EquippableItemType::ArmorBase + | EquippableItemType::ArmorComponent1 + | EquippableItemType::ArmorComponent2 + | EquippableItemType::ArmorComponent3 => { let slot_type = SlotRoller::::roll_on(&ARMOR_SLOT_PROBABILITIES, hash_provider); let rarity = { @@ -212,9 +213,9 @@ impl AvatarMutator for EquippableItemType { hash_provider, ) }, - EquippableItemType::WeaponVersion1 | - EquippableItemType::WeaponVersion2 | - EquippableItemType::WeaponVersion3 => { + EquippableItemType::WeaponVersion1 + | EquippableItemType::WeaponVersion2 + | EquippableItemType::WeaponVersion3 => { let slot_type = SlotRoller::::roll_on(&WEAPON_SLOT_PROBABILITIES, hash_provider); let hash_byte = hash_provider.get_hash_byte(); @@ -222,9 +223,7 @@ impl AvatarMutator for EquippableItemType { ColorType::from_byte(AvatarUtils::high_nibble_of(hash_byte)), ColorType::from_byte(AvatarUtils::low_nibble_of(hash_byte)), ); - let force = Force::from_byte( - hash_provider.get_hash_byte() % variant_count::() as u8, - ); + let force = Force::from_byte(hash_provider.get_hash_byte() % 7_u8); AvatarBuilder::with_base_avatar(base_avatar).try_into_weapon( &pet_type, @@ -292,9 +291,7 @@ impl AvatarMutator for SpecialItemType { ColorType::from_byte(AvatarUtils::high_nibble_of(hash_byte)), ColorType::from_byte(AvatarUtils::low_nibble_of(hash_byte)), ); - let force = Force::from_byte( - hash_provider.get_hash_byte() % variant_count::() as u8, - ); + let force = Force::from_byte(hash_provider.get_hash_byte() % 7_u8); AvatarBuilder::with_base_avatar(base_avatar) .into_unidentified(color_pair, force, soul_count) diff --git a/pallets/ajuna-nft-staking/src/tests/ext/cancel.rs b/pallets/ajuna-nft-staking/src/tests/ext/cancel.rs index f447d614..105689c2 100644 --- a/pallets/ajuna-nft-staking/src/tests/ext/cancel.rs +++ b/pallets/ajuna-nft-staking/src/tests/ext/cancel.rs @@ -48,7 +48,7 @@ fn works_with_token_reward() { .build() .execute_with(|| { // Initial balances. - let initial_balance_bob = Balances::free_balance(&BOB); + let initial_balance_bob = Balances::free_balance(BOB); assert_eq!(NftStake::account_balance(), reward); // Cancel and check. @@ -107,7 +107,7 @@ fn works_with_nft_reward() { .build() .execute_with(|| { // Initial balances. - let initial_balance_bob = CurrencyOf::::free_balance(&BOB); + let initial_balance_bob = CurrencyOf::::free_balance(BOB); assert_eq!(Nft::owner(reward_addr.0, reward_addr.1), Some(NftStake::account_id())); // Cancel and check. diff --git a/pallets/ajuna-nft-staking/src/tests/ext/claim.rs b/pallets/ajuna-nft-staking/src/tests/ext/claim.rs index 83b4dc93..181c13a4 100644 --- a/pallets/ajuna-nft-staking/src/tests/ext/claim.rs +++ b/pallets/ajuna-nft-staking/src/tests/ext/claim.rs @@ -46,7 +46,7 @@ fn works_with_token_reward() { .accept_contract(vec![(BOB, stakes)], vec![(BOB, fees)], contract_id, BOB) .build() .execute_with(|| { - let initial_balance = CurrencyOf::::free_balance(&BOB); + let initial_balance = CurrencyOf::::free_balance(BOB); let accepted_at = ContractAccepted::::get(contract_id).unwrap(); run_to_block(accepted_at + stake_duration); diff --git a/rust-toolchain.toml b/rust-toolchain.toml index 16966939..ffdbe483 100644 --- a/rust-toolchain.toml +++ b/rust-toolchain.toml @@ -1,5 +1,5 @@ [toolchain] -channel = "nightly-2023-12-10" +channel = "1.74.1" components = [ "clippy", "rustfmt" ] profile = "minimal" targets = [ "wasm32-unknown-unknown" ]