ticket count and attempts

This commit is contained in:
Sewmina Dilshan 2025-07-30 12:52:14 +05:30
parent 20184fdc48
commit 364b01c2d3
4 changed files with 9 additions and 4 deletions

View File

@ -2,7 +2,7 @@ use anchor_lang::prelude::*;
use anchor_spl::{associated_token::AssociatedToken, token_interface::{TokenAccount, TokenInterface}};
use crate::*;
pub fn create(ctx: Context<CreateLeaderboard>, id:u64, game_id:String) -> Result<()> {
pub fn create(ctx: Context<CreateLeaderboard>, id:u64, game_id:String, entry_ticket_count:u64, max_attempt_count:u64) -> Result<()> {
let ticket_leaderboard_list = &mut ctx.accounts.ticket_leaderboard_list;
let ticket_leaderboard = &mut ctx.accounts.ticket_leaderboard;
@ -10,6 +10,8 @@ pub fn create(ctx: Context<CreateLeaderboard>, id:u64, game_id:String) -> Result
ticket_leaderboard.players = vec![];
ticket_leaderboard.game_id = game_id;
ticket_leaderboard.is_over = false;
ticket_leaderboard.entry_ticket_count = entry_ticket_count;
ticket_leaderboard.max_attempts = max_attempt_count;
ticket_leaderboard_list.leaderboards.push(ticket_leaderboard.key());
msg!("Leaderboard created!");

View File

@ -5,9 +5,10 @@ use crate::*;
pub fn enter(ctx: Context<EnterLeaderboard>, id:u64, uid:String) -> Result<()> {
let payer = &ctx.accounts.payer;
let receipt = &mut ctx.accounts.receipt_account;
let leaderboard = &ctx.accounts.ticket_leaderboard;
// Transfer 1 token from user's vault to leaderboard vault
let transfer_amount = 1u64;
let transfer_amount = 1u64 * leaderboard.entry_ticket_count;
let cpi_program = ctx.accounts.token_program.to_account_info();
let cpi_accounts = anchor_spl::token_interface::TransferChecked {

View File

@ -63,8 +63,8 @@ pub mod bets {
init_leaderboard_list::init(ctx)
}
pub fn create_leaderboard(ctx:Context<CreateLeaderboard>, id:u64, game_id:String)->Result<()>{
create_leaderboard::create(ctx, id, game_id)
pub fn create_leaderboard(ctx:Context<CreateLeaderboard>, id:u64, game_id:String, entry_ticket_count:u64, max_attempt_count:u64)->Result<()>{
create_leaderboard::create(ctx, id, game_id, entry_ticket_count, max_attempt_count)
}
pub fn update_leaderboard(ctx:Context<UpdateLeaderboard>, id:u64, player:Pubkey, new_score:u64)->Result<()>{

View File

@ -9,5 +9,7 @@ pub struct TicketLeaderboard{
pub game_id: String,
#[max_len(150)]
pub players: Vec<Pubkey>,
pub entry_ticket_count: u64,
pub max_attempts: u64,
pub is_over: bool,
}