use std::slice::from_raw_parts;
use solana_sdk::{
instruction::{AccountMeta, Instruction}, pubkey::Pubkey, system_program
};
use crate::PROGRAM_ID;
use super::{write_bytes, InstructionDiscriminator, UNINIT_BYTE};
#[inline(always)]
pub fn initialize_player(player: &Pubkey, signer: &Pubkey, bump: u8) -> Instruction {
let account_metas: [AccountMeta; 3] = [
AccountMeta::new(*player, false),
AccountMeta::new(*signer, true),
AccountMeta::new_readonly(system_program::ID, false),
];
let data_len = 10;
let mut instruction_data = vec![UNINIT_BYTE; data_len];
write_bytes(
&mut instruction_data,
&[InstructionDiscriminator::InitializePlayer as u8],
);
write_bytes(&mut instruction_data[1..2], &bump.to_le_bytes());
Instruction {
program_id: PROGRAM_ID,
accounts: account_metas.to_vec(),
data: unsafe { from_raw_parts(instruction_data.as_ptr() as _, data_len).to_vec() },
}
}