Hello everyone, I have this function get_good_index and i want to use it here and replace this &(mint_number + 1).to_string()
with it to get random index.
pub fn get_good_index(
arr: &mut RefMut<&mut [u8]>,
items_available: usize,
index: usize,
pos: bool,
) -> Result<(usize, bool)> {
let mut index_to_use = index;
let mut taken = 1;
let mut found = false;
let bit_mask_vec_start = CONFIG_ARRAY_START
+ 4
+ (items_available) * CONFIG_LINE_SIZE
+ 4
+ items_available
.checked_div(8)
.ok_or(CandyError::NumericalOverflowError)?
+ 4;
while taken > 0 && index_to_use < items_available {
let my_position_in_vec = bit_mask_vec_start
+ index_to_use
.checked_div(8)
.ok_or(CandyError::NumericalOverflowError)?;
if arr[my_position_in_vec] == 255 {
let eight_remainder = 8 - index_to_use
.checked_rem(8)
.ok_or(CandyError::NumericalOverflowError)?;
let reversed = 8 - eight_remainder + 1;
if (eight_remainder != 0 && pos) || (reversed != 0 && !pos) {
if pos {
index_to_use += eight_remainder;
} else {
if index_to_use < 8 {
break;
}
index_to_use -= reversed;
}
} else if pos {
index_to_use += 8;
} else {
index_to_use -= 8;
}
} else {
let position_from_right = 7 - index_to_use
.checked_rem(8)
.ok_or(CandyError::NumericalOverflowError)?;
let mask = u8::pow(2, position_from_right as u32);
taken = mask & arr[my_position_in_vec];
match taken {
x if x > 0 => {
if pos {
index_to_use += 1;
} else {
if index_to_use == 0 {
break;
}
index_to_use -= 1;
}
}
0 => {
found = true;
arr[my_position_in_vec] |= mask;
}
_ => (),
}
}
}
Ok((index_to_use, found))
}
I need to use get_good_index
on place of the mint_number
pub fn get_config_line(
a: &Account<'_, CandyMachine>,
index: usize,
mint_number: u64,
) -> Result<ConfigLine> {
if let Some(hs) = &a.data.hidden_settings {
return Ok(ConfigLine {
name: hs.name.clone() + "#" + &(mint_number + 1).to_string(),
uri: hs.uri.clone(),
});
}