gamification

package
v0.9.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jun 18, 2025 License: MIT Imports: 6 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func FormatAchievement

func FormatAchievement(achievement *Achievement, userAchievement *UserAchievement) string

FormatAchievement formats an achievement for display

func FormatEasterEggMessage

func FormatEasterEggMessage(message string) string

FormatEasterEggMessage formats the easter egg message with proper styling

Types

type Achievement

type Achievement struct {
	ID          string          `json:"id"`
	Name        string          `json:"name"`
	Description string          `json:"description"`
	Icon        string          `json:"icon"`
	Type        AchievementType `json:"type"`
	Target      int             `json:"target"`
	XPReward    int             `json:"xp_reward"`
	Hidden      bool            `json:"hidden"`
	Rare        bool            `json:"rare"`
}

Achievement represents an achievement definition

type AchievementManager

type AchievementManager struct {
	// contains filtered or unexported fields
}

AchievementManager manages achievements

func NewAchievementManager

func NewAchievementManager() *AchievementManager

NewAchievementManager creates a new achievement manager

func (*AchievementManager) CheckAchievements

func (am *AchievementManager) CheckAchievements(stats *UserStats, earnedAchievements map[string]*UserAchievement) []*UserAchievement

CheckAchievements checks which achievements should be unlocked based on user stats

func (*AchievementManager) GetAchievement

func (am *AchievementManager) GetAchievement(id string) (*Achievement, bool)

GetAchievement returns a specific achievement by ID

func (*AchievementManager) GetAllAchievements

func (am *AchievementManager) GetAllAchievements() map[string]*Achievement

GetAllAchievements returns all available achievements

func (*AchievementManager) GetProgressToAchievement

func (am *AchievementManager) GetProgressToAchievement(achievementID string, stats *UserStats) (int, int, float64)

GetProgressToAchievement returns progress information for an achievement

type AchievementType

type AchievementType string

AchievementType represents different types of achievements

const (
	CommandCount    AchievementType = "command_count"
	UniqueCommands  AchievementType = "unique_commands"
	Streak          AchievementType = "streak"
	SessionCount    AchievementType = "session_count"
	TimeBasedUsage  AchievementType = "time_based"
	CategoryMastery AchievementType = "category_mastery"
	XPMilestone     AchievementType = "xp_milestone"
	LevelMilestone  AchievementType = "level_milestone"
)

type CommandCombo

type CommandCombo struct {
	Commands    []string
	Multiplier  float64
	Name        string
	Icon        string
	Description string
}

CommandCombo represents a command combination chain

type CommandRarity

type CommandRarity string

CommandRarity determines the rarity of commands

const (
	RarityCommon    CommandRarity = "common"
	RarityUncommon  CommandRarity = "uncommon"
	RarityRare      CommandRarity = "rare"
	RarityEpic      CommandRarity = "epic"
	RarityLegendary CommandRarity = "legendary"
)

type DailyQuest

type DailyQuest struct {
	ID          string
	Name        string
	Description string
	Icon        string
	Target      int
	Progress    int
	Reward      int
	XPReward    int
	IsCompleted bool
}

DailyQuest represents daily challenges

type EasterEggContext

type EasterEggContext struct {
	CommandsInTimeframe int
	TimeframeDuration   time.Duration
	IdleDuration        time.Duration
	IsFirstCommandToday bool
	LastCommand         string
	CommandHistory      []string
	QuotesMismatched    bool
}

EasterEggContext contains context information for easter egg evaluation

type EasterEggManager

type EasterEggManager struct {
	// contains filtered or unexported fields
}

EasterEggManager handles easter egg triggering and display

func NewEasterEggManager

func NewEasterEggManager() *EasterEggManager

NewEasterEggManager creates a new easter egg manager

func (*EasterEggManager) CheckForEasterEgg

func (eem *EasterEggManager) CheckForEasterEgg(context *EasterEggContext) string

CheckForEasterEgg checks if any easter egg should be triggered

func (*EasterEggManager) GetRandomMotivationalQuote

func (eem *EasterEggManager) GetRandomMotivationalQuote() string

GetRandomMotivationalQuote returns a random motivational quote

type EasterEggTrigger

type EasterEggTrigger struct {
	ID          string
	Condition   func(context *EasterEggContext) bool
	Messages    []string
	Probability float64 // 0.0 to 1.0
}

EasterEggTrigger represents different trigger conditions for easter eggs

type GameEnhancements

type GameEnhancements struct {
	// contains filtered or unexported fields
}

GameEnhancements provides enhanced gaming features

func NewGameEnhancements

func NewGameEnhancements() *GameEnhancements

NewGameEnhancements creates a new game enhancements manager

func (*GameEnhancements) CalculateXPWithMultipliers

func (ge *GameEnhancements) CalculateXPWithMultipliers(baseXP int, userProgress *models.UserProgress) (int, []XPMultiplier)

CalculateXPWithMultipliers calculates XP with active multipliers

func (*GameEnhancements) FormatEnhancedXPGain

func (ge *GameEnhancements) FormatEnhancedXPGain(baseXP, finalXP int, multipliers []XPMultiplier, rarity CommandRarity) string

FormatEnhancedXPGain formats XP gain with enhancements

func (*GameEnhancements) GenerateDailyQuests

func (ge *GameEnhancements) GenerateDailyQuests(userProgress *models.UserProgress) []DailyQuest

GenerateDailyQuests creates random daily quests

func (*GameEnhancements) GenerateWeeklyChallenge

func (ge *GameEnhancements) GenerateWeeklyChallenge(userProgress *models.UserProgress) WeeklyChallenge

GenerateWeeklyChallenge creates a weekly challenge

func (*GameEnhancements) GetActiveMultipliers

func (ge *GameEnhancements) GetActiveMultipliers(userProgress *models.UserProgress) []XPMultiplier

GetActiveMultipliers returns currently active XP multipliers

func (*GameEnhancements) GetAvailablePowerUps

func (ge *GameEnhancements) GetAvailablePowerUps() []PowerUp

GetAvailablePowerUps returns all available power-ups

func (*GameEnhancements) GetCommandCombos

func (ge *GameEnhancements) GetCommandCombos() []CommandCombo

GetCommandCombos returns available command combinations

func (*GameEnhancements) GetCommandRarity

func (ge *GameEnhancements) GetCommandRarity(command string, totalUsage int) CommandRarity

GetCommandRarity determines rarity based on usage frequency

func (*GameEnhancements) GetLevelUpReward

func (ge *GameEnhancements) GetLevelUpReward(level int) LevelUpReward

GetLevelUpReward returns rewards for reaching a specific level

func (*GameEnhancements) GetRarityInfo

func (ge *GameEnhancements) GetRarityInfo(rarity CommandRarity) (string, string, float64)

GetRarityInfo returns information about command rarity

func (*GameEnhancements) ProgressBar

func (ge *GameEnhancements) ProgressBar(current, target int, width int) string

ProgressBar creates an ASCII progress bar

func (*GameEnhancements) TriggerRandomPowerUp

func (ge *GameEnhancements) TriggerRandomPowerUp() *PowerUp

TriggerRandomPowerUp has a chance to activate a random power-up

type LevelCalculator

type LevelCalculator struct{}

LevelCalculator handles level calculations

func NewLevelCalculator

func NewLevelCalculator() *LevelCalculator

NewLevelCalculator creates a new level calculator

func (*LevelCalculator) CalculateLevel

func (lc *LevelCalculator) CalculateLevel(totalXP int) int

CalculateLevel calculates level from total XP

func (*LevelCalculator) CalculateXPForLevel

func (lc *LevelCalculator) CalculateXPForLevel(level int) int

CalculateXPForLevel calculates XP required for a specific level

func (*LevelCalculator) CalculateXPToNextLevel

func (lc *LevelCalculator) CalculateXPToNextLevel(currentXP int) (int, int, int)

CalculateXPToNextLevel calculates XP needed to reach next level

func (*LevelCalculator) GetLevelTitle

func (lc *LevelCalculator) GetLevelTitle(level int) string

GetLevelTitle returns a themed title for the level

type LevelUpReward

type LevelUpReward struct {
	Level       int
	Title       string
	Icon        string
	Description string
	Rewards     []string
}

LevelUpReward represents rewards for leveling up

type PowerUp

type PowerUp struct {
	ID          string
	Name        string
	Icon        string
	Description string
	Effect      string
	Duration    time.Duration
	Rarity      float64 // 0.0 to 1.0, lower = rarer
}

PowerUp represents temporary power-ups

type ProgressCalculator

type ProgressCalculator struct {
	// contains filtered or unexported fields
}

ProgressCalculator handles progress tracking

func NewProgressCalculator

func NewProgressCalculator(xpConfig *XPConfig) *ProgressCalculator

NewProgressCalculator creates a new progress calculator

func (*ProgressCalculator) CalculateProgress

func (pc *ProgressCalculator) CalculateProgress(totalXP int, commandsToday int, streak int) *ProgressInfo

CalculateProgress calculates comprehensive progress information

type ProgressInfo

type ProgressInfo struct {
	CurrentLevel      int     `json:"current_level"`
	LevelTitle        string  `json:"level_title"`
	TotalXP           int     `json:"total_xp"`
	XPInCurrentLevel  int     `json:"xp_in_current_level"`
	XPToNextLevel     int     `json:"xp_to_next_level"`
	XPForCurrentLevel int     `json:"xp_for_current_level"`
	ProgressPercent   float64 `json:"progress_percent"`
	CommandsToday     int     `json:"commands_today"`
	CurrentStreak     int     `json:"current_streak"`
}

ProgressInfo holds comprehensive progress information

type UserAchievement

type UserAchievement struct {
	Achievement *Achievement `json:"achievement"`
	EarnedAt    time.Time    `json:"earned_at"`
	Progress    int          `json:"progress"`
	Completed   bool         `json:"completed"`
}

UserAchievement represents an earned achievement

type UserStats

type UserStats struct {
	TotalCommands     int `json:"total_commands"`
	UniqueCommands    int `json:"unique_commands"`
	TotalSessions     int `json:"total_sessions"`
	CurrentStreak     int `json:"current_streak"`
	LongestStreak     int `json:"longest_streak"`
	TotalXP           int `json:"total_xp"`
	CurrentLevel      int `json:"current_level"`
	CommandsToday     int `json:"commands_today"`
	EarlyBirdCommands int `json:"early_bird_commands"`
	NightOwlCommands  int `json:"night_owl_commands"`
}

UserStats represents user statistics for achievement checking

type WeeklyChallenge

type WeeklyChallenge struct {
	ID          string
	Name        string
	Description string
	Icon        string
	Target      int
	Progress    int
	Reward      int
	XPReward    int
	IsCompleted bool
	StartDate   time.Time
	EndDate     time.Time
}

WeeklyChallenge represents weekly challenges

type XPCalculator

type XPCalculator struct {
	// contains filtered or unexported fields
}

XPCalculator handles XP calculations

func NewXPCalculator

func NewXPCalculator(config *XPConfig) *XPCalculator

NewXPCalculator creates a new XP calculator

func (*XPCalculator) CalculateCommandXP

func (xp *XPCalculator) CalculateCommandXP(cmd *models.Command, isNewCommand bool, streak int, category string) int

CalculateCommandXP calculates XP for a single command

type XPConfig

type XPConfig struct {
	BaseXPPerCommand    int                `json:"base_xp_per_command"`
	NewCommandBonus     int                `json:"new_command_bonus"`
	StreakMultiplier    float64            `json:"streak_multiplier"`
	CategoryMultipliers map[string]float64 `json:"category_multipliers"`
	TimeDecayEnabled    bool               `json:"time_decay_enabled"`
	MaxDailyXP          int                `json:"max_daily_xp"`
}

XPConfig holds XP calculation configuration

func DefaultXPConfig

func DefaultXPConfig() *XPConfig

DefaultXPConfig returns the default XP configuration

type XPMultiplier

type XPMultiplier struct {
	Name        string
	Multiplier  float64
	Duration    time.Duration
	Icon        string
	Description string
}

XPMultiplier represents different XP multiplier events

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL