gamification

package
v0.10.0 Latest Latest
Warning

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

Go to latest
Published: Jun 25, 2025 License: MIT Imports: 7 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

func GetTerminalInfo added in v0.9.2

func GetTerminalInfo() map[string]string

GetTerminalInfo returns information about the current terminal

func IsModernTerminal added in v0.9.2

func IsModernTerminal() bool

IsModernTerminal checks if the current terminal supports modern features

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