ticket count and attempts
This commit is contained in:
parent
20184fdc48
commit
364b01c2d3
|
|
@ -2,7 +2,7 @@ use anchor_lang::prelude::*;
|
||||||
use anchor_spl::{associated_token::AssociatedToken, token_interface::{TokenAccount, TokenInterface}};
|
use anchor_spl::{associated_token::AssociatedToken, token_interface::{TokenAccount, TokenInterface}};
|
||||||
use crate::*;
|
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_list = &mut ctx.accounts.ticket_leaderboard_list;
|
||||||
let ticket_leaderboard = &mut ctx.accounts.ticket_leaderboard;
|
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.players = vec![];
|
||||||
ticket_leaderboard.game_id = game_id;
|
ticket_leaderboard.game_id = game_id;
|
||||||
ticket_leaderboard.is_over = false;
|
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());
|
ticket_leaderboard_list.leaderboards.push(ticket_leaderboard.key());
|
||||||
msg!("Leaderboard created!");
|
msg!("Leaderboard created!");
|
||||||
|
|
|
||||||
|
|
@ -5,9 +5,10 @@ use crate::*;
|
||||||
pub fn enter(ctx: Context<EnterLeaderboard>, id:u64, uid:String) -> Result<()> {
|
pub fn enter(ctx: Context<EnterLeaderboard>, id:u64, uid:String) -> Result<()> {
|
||||||
let payer = &ctx.accounts.payer;
|
let payer = &ctx.accounts.payer;
|
||||||
let receipt = &mut ctx.accounts.receipt_account;
|
let receipt = &mut ctx.accounts.receipt_account;
|
||||||
|
let leaderboard = &ctx.accounts.ticket_leaderboard;
|
||||||
|
|
||||||
// Transfer 1 token from user's vault to leaderboard vault
|
// 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_program = ctx.accounts.token_program.to_account_info();
|
||||||
let cpi_accounts = anchor_spl::token_interface::TransferChecked {
|
let cpi_accounts = anchor_spl::token_interface::TransferChecked {
|
||||||
|
|
|
||||||
|
|
@ -63,8 +63,8 @@ pub mod bets {
|
||||||
init_leaderboard_list::init(ctx)
|
init_leaderboard_list::init(ctx)
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn create_leaderboard(ctx:Context<CreateLeaderboard>, id:u64, game_id:String)->Result<()>{
|
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)
|
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<()>{
|
pub fn update_leaderboard(ctx:Context<UpdateLeaderboard>, id:u64, player:Pubkey, new_score:u64)->Result<()>{
|
||||||
|
|
|
||||||
|
|
@ -9,5 +9,7 @@ pub struct TicketLeaderboard{
|
||||||
pub game_id: String,
|
pub game_id: String,
|
||||||
#[max_len(150)]
|
#[max_len(150)]
|
||||||
pub players: Vec<Pubkey>,
|
pub players: Vec<Pubkey>,
|
||||||
|
pub entry_ticket_count: u64,
|
||||||
|
pub max_attempts: u64,
|
||||||
pub is_over: bool,
|
pub is_over: bool,
|
||||||
}
|
}
|
||||||
Loading…
Reference in New Issue
Block a user