td_program_sdk/instructions/
initialize_player.rs1use std::slice::from_raw_parts;
2
3use solana_program::{
4 instruction::{AccountMeta, Instruction},
5 pubkey::Pubkey, system_program,
6};
7
8use crate::PROGRAM_ID;
9
10use super::{write_bytes, InstructionDiscriminator, UNINIT_BYTE};
11
12#[inline(always)]
13pub fn initialize_player(
14 player: &Pubkey,
15 signer: &Pubkey,
16 last_time_played: u64,
17 bump: u8,
18) -> Instruction {
19 let account_metas: [AccountMeta; 3] = [
20 AccountMeta::new(*player, false),
21 AccountMeta::new(*signer, true),
22 AccountMeta::new_readonly(system_program::ID, false),
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::InitializePlayer 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], &bump.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}