td_program_sdk/instructions/
update_player_game_values.rs1use std::slice::from_raw_parts;
2
3use solana_sdk::{
4 instruction::{AccountMeta, Instruction},
5 pubkey::Pubkey,
6};
7
8use crate::PROGRAM_ID;
9
10use super::{write_bytes, InstructionDiscriminator, UNINIT_BYTE};
11
12
13#[inline(always)]
14pub fn update_player_game_values(
15 player: &Pubkey,
16 signer: &Pubkey,
17 last_time_played: u64,
18 wave_count: u8,
19) -> Instruction {
20 let account_metas: [AccountMeta; 2] = [
21 AccountMeta::new(*player, false),
22 AccountMeta::new(*signer, true),
23 ];
24
25 let data_len = 10;
30
31 let mut instruction_data = vec![UNINIT_BYTE; data_len];
32 write_bytes(
33 &mut instruction_data,
34 &[InstructionDiscriminator::UpdatePlayerGameValues as u8],
35 );
36 write_bytes(&mut instruction_data[1..9], &last_time_played.to_le_bytes());
37 write_bytes(&mut instruction_data[9..10], &wave_count.to_le_bytes());
38
39 Instruction {
40 program_id: PROGRAM_ID,
41 accounts: account_metas.to_vec(),
42 data: unsafe { from_raw_parts(instruction_data.as_ptr() as _, data_len).to_vec() },
43 }
44}