td_program_sdk/instructions/
initialize_player.rs1use std::slice::from_raw_parts;
2
3use solana_sdk::{
4 instruction::{AccountMeta, Instruction}, pubkey::Pubkey, system_program
5};
6
7use crate::PROGRAM_ID;
8
9use super::{write_bytes, InstructionDiscriminator, UNINIT_BYTE};
10
11#[inline(always)]
12pub fn initialize_player(player: &Pubkey, signer: &Pubkey, bump: u8) -> Instruction {
13 let account_metas: [AccountMeta; 3] = [
14 AccountMeta::new(*player, false),
15 AccountMeta::new(*signer, true),
16 AccountMeta::new_readonly(system_program::ID, false),
17 ];
18
19 let data_len = 10;
24
25 let mut instruction_data = vec![UNINIT_BYTE; data_len];
26 write_bytes(
27 &mut instruction_data,
28 &[InstructionDiscriminator::InitializePlayer as u8],
29 );
30 write_bytes(&mut instruction_data[1..2], &bump.to_le_bytes());
31
32 Instruction {
33 program_id: PROGRAM_ID,
34 accounts: account_metas.to_vec(),
35 data: unsafe { from_raw_parts(instruction_data.as_ptr() as _, data_len).to_vec() },
36 }
37}