diff --git a/client/src/config/cartridgeConnector.tsx b/client/src/config/cartridgeConnector.tsx index de71861..adf326f 100644 --- a/client/src/config/cartridgeConnector.tsx +++ b/client/src/config/cartridgeConnector.tsx @@ -42,7 +42,7 @@ const options: ControllerOptions = { theme, colorMode, namespace: "golem_runner", - slot: "golem6", + slot: "golem7", }; const cartridgeConnector = new ControllerConnector( diff --git a/client/src/config/manifest_sepolia.json b/client/src/config/manifest_sepolia.json index 61a785f..8c0fafd 100644 --- a/client/src/config/manifest_sepolia.json +++ b/client/src/config/manifest_sepolia.json @@ -1313,7 +1313,7 @@ "contracts": [ { "address": "0x36a518498c1d7de4106b8904f0878e1e7b78c73614001fba22eba0adca80387", - "class_hash": "0x75e15e84fe204faeaa58f91e626f7e4d0a8ca897763f28e0d96ffc1b0a52c2", + "class_hash": "0x71d1daf669d44dd29373944d2172201edcd498d74b472b61e62074ecc2939b4", "abi": [ { "type": "impl", @@ -1745,7 +1745,7 @@ }, { "members": [], - "class_hash": "0x2d620c3d3bc76ab5016d9707bcc9ca995ee446492cb26fc41744600d04ecf0f", + "class_hash": "0x310813b32e78c263bae18ccdb161ea6ad27e231607262e6f7d82ba5a7a26a7e", "tag": "golem_runner-Mission", "selector": "0x53894aba2c90ef9aeb7f37e5690c7f994547a79dcce91e9f2f098baa85587a" }, diff --git a/contract/manifest_sepolia.json b/contract/manifest_sepolia.json index 61a785f..8c0fafd 100644 --- a/contract/manifest_sepolia.json +++ b/contract/manifest_sepolia.json @@ -1313,7 +1313,7 @@ "contracts": [ { "address": "0x36a518498c1d7de4106b8904f0878e1e7b78c73614001fba22eba0adca80387", - "class_hash": "0x75e15e84fe204faeaa58f91e626f7e4d0a8ca897763f28e0d96ffc1b0a52c2", + "class_hash": "0x71d1daf669d44dd29373944d2172201edcd498d74b472b61e62074ecc2939b4", "abi": [ { "type": "impl", @@ -1745,7 +1745,7 @@ }, { "members": [], - "class_hash": "0x2d620c3d3bc76ab5016d9707bcc9ca995ee446492cb26fc41744600d04ecf0f", + "class_hash": "0x310813b32e78c263bae18ccdb161ea6ad27e231607262e6f7d82ba5a7a26a7e", "tag": "golem_runner-Mission", "selector": "0x53894aba2c90ef9aeb7f37e5690c7f994547a79dcce91e9f2f098baa85587a" }, diff --git a/contract/src/store.cairo b/contract/src/store.cairo index 67b51ff..78f7aa7 100644 --- a/contract/src/store.cairo +++ b/contract/src/store.cairo @@ -327,7 +327,7 @@ pub impl StoreImpl of StoreTrait { } fn reward_mission(mut self: Store, mission_id: u256, coins_collected: u64) -> bool { - let mission = self.read_mission(mission_id); + let mut mission = self.read_mission(mission_id); // Verify mission if mission.is_zero() { @@ -343,8 +343,13 @@ pub impl StoreImpl of StoreTrait { let mut player = self.read_player(); player.add_coins(coins_collected); + // Update mission status + mission.status = MissionStatus::Claimed; + // Save the updated player self.world.write_model(@player); + // Save the updated mission + self.world.write_model(@mission); return true; // Mission rewarded successfully } diff --git a/contract/src/tests/test_mission.cairo b/contract/src/tests/test_mission.cairo index 5bcfc1d..8c3ddbb 100644 --- a/contract/src/tests/test_mission.cairo +++ b/contract/src/tests/test_mission.cairo @@ -353,9 +353,9 @@ mod tests { let mission2: Mission = world.read_model((mission_id2, PLAYER())); let mission3: Mission = world.read_model((mission_id3, PLAYER())); - assert(mission1.status == MissionStatus::Completed, 'Mission 1 is completed'); + assert(mission1.status == MissionStatus::Claimed, 'Mission 1 is claimed'); assert(mission2.status == MissionStatus::Pending, 'Mission 2 is pending'); - assert(mission3.status == MissionStatus::Completed, 'Mission 3 is completed'); + assert(mission3.status == MissionStatus::Claimed, 'Mission 3 is completed'); // Verify player received coins from completed missions only let player_final: Player = world.read_model(PLAYER()); diff --git a/contract/src/types/mission_status.cairo b/contract/src/types/mission_status.cairo index 32caab8..d0a161a 100644 --- a/contract/src/types/mission_status.cairo +++ b/contract/src/types/mission_status.cairo @@ -1,7 +1,8 @@ #[derive(Copy, Drop, Serde, Debug, Introspect, PartialEq)] pub enum MissionStatus { Pending, - Completed + Completed, + Claimed } pub impl IntoMissionStatusFelt252 of Into { @@ -10,6 +11,7 @@ pub impl IntoMissionStatusFelt252 of Into { match self { MissionStatus::Pending => 0, MissionStatus::Completed => 1, + MissionStatus::Claimed => 2, } } } @@ -20,6 +22,7 @@ pub impl IntoMissionStatusU8 of Into { match self { MissionStatus::Pending => 0, MissionStatus::Completed => 1, + MissionStatus::Claimed => 2, } } } @@ -31,6 +34,7 @@ pub impl Intou8MissionStatus of Into { match mission { 0 => MissionStatus::Pending, 1 => MissionStatus::Completed, + 2 => MissionStatus::Claimed, _ => MissionStatus::Pending, } } @@ -41,6 +45,7 @@ pub impl MissionStatusDisplay of core::fmt::Display { let s = match self { MissionStatus::Pending => "Pending", MissionStatus::Completed => "Completed", + MissionStatus::Claimed => "Claimed", }; f.buffer.append(@s); Result::Ok(())