Skip to content

Commit 45e8115

Browse files
authored
Merge branch 'master' into gno-resolver
2 parents 4686c7c + 815cf51 commit 45e8115

File tree

8 files changed

+1004
-0
lines changed

8 files changed

+1004
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
package fomo3d
2+
3+
import "errors"
4+
5+
var (
6+
// Game state errors
7+
ErrGameInProgress = errors.New("fomo3d: game already in progress")
8+
ErrGameNotInProgress = errors.New("fomo3d: game not in progress")
9+
ErrGameEnded = errors.New("fomo3d: game has ended")
10+
ErrGameTimeExpired = errors.New("fomo3d: game time expired")
11+
ErrNoKeysPurchased = errors.New("fomo3d: no keys purchased")
12+
ErrPlayerNotInGame = errors.New("fomo3d: player is not in the game")
13+
14+
// Payment errors
15+
ErrInvalidPayment = errors.New("fomo3d: must send ugnot only")
16+
ErrInsufficientPayment = errors.New("fomo3d: insufficient payment for key")
17+
18+
// Dividend errors
19+
ErrNoDividendsToClaim = errors.New("fomo3d: no dividends to claim")
20+
21+
// Fee errors
22+
ErrNoFeesToClaim = errors.New("fomo3d: no owner fees to claim")
23+
24+
// Resolution errors
25+
ErrInvalidAddressOrName = errors.New("fomo3d: invalid address or unregistered username")
26+
27+
// NFT errors
28+
ErrUnauthorizedMint = errors.New("fomo3d: only the Fomo3D game realm can mint winner NFTs")
29+
ErrZeroAddress = errors.New("fomo3d: zero address")
30+
)
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,94 @@
1+
package fomo3d
2+
3+
import (
4+
"std"
5+
6+
"gno.land/p/demo/ufmt"
7+
)
8+
9+
// Event names
10+
const (
11+
// Game events
12+
GameStartedEvent = "GameStarted"
13+
GameEndedEvent = "GameEnded"
14+
KeysPurchasedEvent = "KeysPurchased"
15+
16+
// Player events
17+
DividendsClaimedEvent = "DividendsClaimed"
18+
19+
// Admin events
20+
OwnerFeeClaimedEvent = "OwnerFeeClaimed"
21+
)
22+
23+
// Event keys
24+
const (
25+
// Common keys
26+
EventRoundKey = "round"
27+
EventAmountKey = "amount"
28+
29+
// Game keys
30+
EventStartBlockKey = "startBlock"
31+
EventEndBlockKey = "endBlock"
32+
EventStartingPotKey = "startingPot"
33+
EventWinnerKey = "winner"
34+
EventJackpotKey = "jackpot"
35+
36+
// Player keys
37+
EventBuyerKey = "buyer"
38+
EventNumKeysKey = "numKeys"
39+
EventPriceKey = "price"
40+
EventJackpotShareKey = "jackpotShare"
41+
EventDividendShareKey = "dividendShare"
42+
EventClaimerKey = "claimer"
43+
44+
// Admin keys
45+
EventOwnerKey = "owner"
46+
EventPreviousOwnerKey = "previousOwner"
47+
EventNewOwnerKey = "newOwner"
48+
)
49+
50+
func emitGameStarted(round, startBlock, endBlock, startingPot int64) {
51+
std.Emit(
52+
GameStartedEvent,
53+
EventRoundKey, ufmt.Sprintf("%d", round),
54+
EventStartBlockKey, ufmt.Sprintf("%d", startBlock),
55+
EventEndBlockKey, ufmt.Sprintf("%d", endBlock),
56+
EventStartingPotKey, ufmt.Sprintf("%d", startingPot),
57+
)
58+
}
59+
60+
func emitGameEnded(round int64, winner std.Address, jackpot int64) {
61+
std.Emit(
62+
GameEndedEvent,
63+
EventRoundKey, ufmt.Sprintf("%d", round),
64+
EventWinnerKey, winner.String(),
65+
EventJackpotKey, ufmt.Sprintf("%d", jackpot),
66+
)
67+
}
68+
69+
func emitKeysPurchased(buyer std.Address, numKeys, price, jackpotShare, dividendShare int64) {
70+
std.Emit(
71+
KeysPurchasedEvent,
72+
EventBuyerKey, buyer.String(),
73+
EventNumKeysKey, ufmt.Sprintf("%d", numKeys),
74+
EventPriceKey, ufmt.Sprintf("%d", price),
75+
EventJackpotShareKey, ufmt.Sprintf("%d", jackpotShare),
76+
EventDividendShareKey, ufmt.Sprintf("%d", dividendShare),
77+
)
78+
}
79+
80+
func emitDividendsClaimed(claimer std.Address, amount int64) {
81+
std.Emit(
82+
DividendsClaimedEvent,
83+
EventClaimerKey, claimer.String(),
84+
EventAmountKey, ufmt.Sprintf("%d", amount),
85+
)
86+
}
87+
88+
func emitOwnerFeeClaimed(owner std.Address, amount int64) {
89+
std.Emit(
90+
OwnerFeeClaimedEvent,
91+
EventOwnerKey, owner.String(),
92+
EventAmountKey, ufmt.Sprintf("%d", amount),
93+
)
94+
}

0 commit comments

Comments
 (0)