Continuing Work
This commit is contained in:
		
							
								
								
									
										1
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							@@ -24,3 +24,4 @@ go.work
 | 
			
		||||
 | 
			
		||||
# Ignore fonts for now
 | 
			
		||||
*.otf
 | 
			
		||||
*.ttf
 | 
			
		||||
							
								
								
									
										1
									
								
								game/config.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								game/config.go
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1 @@
 | 
			
		||||
package game
 | 
			
		||||
							
								
								
									
										128
									
								
								game/entities.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										128
									
								
								game/entities.go
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,128 @@
 | 
			
		||||
package game
 | 
			
		||||
 | 
			
		||||
// Attributes
 | 
			
		||||
type stat struct {
 | 
			
		||||
	name string
 | 
			
		||||
	short string
 | 
			
		||||
	value int
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
type attributes struct {
 | 
			
		||||
	health       stat 
 | 
			
		||||
	strength     stat
 | 
			
		||||
	endurance    stat
 | 
			
		||||
	dexterity    stat
 | 
			
		||||
	wisdom       stat
 | 
			
		||||
	intelligence stat
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Levels
 | 
			
		||||
type level struct {
 | 
			
		||||
	experience int
 | 
			
		||||
	points     int
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Inventory
 | 
			
		||||
type Item struct {
 | 
			
		||||
	name string
 | 
			
		||||
	id   int
 | 
			
		||||
	drop int
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
type Slot struct {
 | 
			
		||||
	amount  int
 | 
			
		||||
	content Item
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Player and Non Player Characters
 | 
			
		||||
type Player struct {
 | 
			
		||||
	name      string
 | 
			
		||||
	levels    []level
 | 
			
		||||
	money     int
 | 
			
		||||
	stats     attributes
 | 
			
		||||
	inventory []Slot
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
type Enemy struct {
 | 
			
		||||
	name  string
 | 
			
		||||
	stats attributes
 | 
			
		||||
	loot  []Item
 | 
			
		||||
	money int
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Initialization Functions
 | 
			
		||||
func makeAttributes() attributes {
 | 
			
		||||
	return attributes{
 | 
			
		||||
		health: stat{
 | 
			
		||||
			name: "Health",
 | 
			
		||||
			short: "HP",
 | 
			
		||||
			value: 10,
 | 
			
		||||
		},
 | 
			
		||||
		strength: stat{
 | 
			
		||||
			name: "Strength",
 | 
			
		||||
			short: "Str",
 | 
			
		||||
			value: 1,
 | 
			
		||||
		},
 | 
			
		||||
		endurance: stat{
 | 
			
		||||
			name: "Endurance",
 | 
			
		||||
			short: "End",
 | 
			
		||||
			value: 1,
 | 
			
		||||
		},
 | 
			
		||||
		dexterity: stat{
 | 
			
		||||
			name: "Dexterity",
 | 
			
		||||
			short: "Dex",
 | 
			
		||||
			value: 1,
 | 
			
		||||
		},
 | 
			
		||||
		wisdom: stat{
 | 
			
		||||
			name: "Wisdom",
 | 
			
		||||
			short: "Wis",
 | 
			
		||||
			value: 1,
 | 
			
		||||
		},
 | 
			
		||||
		intelligence: stat{
 | 
			
		||||
			name: "Intelligence",
 | 
			
		||||
			short: "Int",
 | 
			
		||||
			value: 1,
 | 
			
		||||
		},
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func makeLevelTable() []level {
 | 
			
		||||
	var ourLevels = make([]level, 0, 10)
 | 
			
		||||
 | 
			
		||||
	for i := 0; i < 11; i++ {
 | 
			
		||||
		var baseXP int = 100
 | 
			
		||||
		var ourPoints int = 0
 | 
			
		||||
 | 
			
		||||
		if i > 0 && i%2 == 0 {
 | 
			
		||||
			ourPoints = 5
 | 
			
		||||
		} else if i > 0 && i%2 == 1 {
 | 
			
		||||
			ourPoints = 4
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		ourLevels = append(ourLevels, level{
 | 
			
		||||
			experience: baseXP*i,
 | 
			
		||||
			points: ourPoints,
 | 
			
		||||
		})
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	return ourLevels
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func MakeNewPlayer(playerName string) Player {
 | 
			
		||||
	return Player{
 | 
			
		||||
		name: playerName,
 | 
			
		||||
		levels: makeLevelTable(),
 | 
			
		||||
		money: 0,
 | 
			
		||||
		stats: makeAttributes(),
 | 
			
		||||
		inventory: make([]Slot, 0, 15),
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func MakeNewEnemy(enemyName string) Enemy {
 | 
			
		||||
	return Enemy{
 | 
			
		||||
		name: enemyName,
 | 
			
		||||
		stats: makeAttributes(),
 | 
			
		||||
		loot: make([]Item, 0, 5),
 | 
			
		||||
		money: 0,
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										39
									
								
								game/logic.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										39
									
								
								game/logic.go
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,39 @@
 | 
			
		||||
package game
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"git.vertinext.com/roryejinn/Ultralight/game"
 | 
			
		||||
	"strings"
 | 
			
		||||
	"math/rand/v2"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
func (p *Player) AdjustStats(which string, newvalue int) *Player {
 | 
			
		||||
	switch strings.ToLower(which) {
 | 
			
		||||
	case "strength","str":
 | 
			
		||||
		p.stats.strength.value = newvalue
 | 
			
		||||
	case "endurance","end":
 | 
			
		||||
		p.stats.endurance.value = newvalue
 | 
			
		||||
		p.stats.health.value = 5 + (5*newvalue)
 | 
			
		||||
	case "wisdom","wis":
 | 
			
		||||
		p.stats.wisdom.value = newvalue
 | 
			
		||||
	case "intelligence","int":
 | 
			
		||||
		p.stats.intelligence.value = newvalue
 | 
			
		||||
	case "dexterity","dex":
 | 
			
		||||
		p.stats.dexterity.value = newvalue
 | 
			
		||||
	}
 | 
			
		||||
	return p
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (p *Player) AdjustMoney(adjustment int) *Player {
 | 
			
		||||
	p.money += adjustment
 | 
			
		||||
	return p
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (i Item) GetAmount() int {
 | 
			
		||||
	chance := rand.IntN(100)+1
 | 
			
		||||
 | 
			
		||||
	if chance <= i.drop {
 | 
			
		||||
		return 2
 | 
			
		||||
	} else {
 | 
			
		||||
		return 1
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										83
									
								
								ui/theme.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										83
									
								
								ui/theme.go
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,83 @@
 | 
			
		||||
package ui
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"github.com/charmbracelet/lipgloss"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
// base - background
 | 
			
		||||
// surface - not active popups, inputs, etc
 | 
			
		||||
// overlay - active popups, inputs ,etc
 | 
			
		||||
// muted - ignored, not needed
 | 
			
		||||
// subtle - inactive tabs, items, etc
 | 
			
		||||
// text - text color
 | 
			
		||||
// err - errors
 | 
			
		||||
// info - informational messages
 | 
			
		||||
// cyan, green, blue, magenta - accessory colors for styling
 | 
			
		||||
 | 
			
		||||
type rosepine struct {
 | 
			
		||||
	base lipgloss.AdaptiveColor
 | 
			
		||||
	surface lipgloss.AdaptiveColor
 | 
			
		||||
	overlay lipgloss.AdaptiveColor
 | 
			
		||||
	muted lipgloss.AdaptiveColor
 | 
			
		||||
	subtle lipgloss.AdaptiveColor
 | 
			
		||||
	text lipgloss.AdaptiveColor
 | 
			
		||||
	err lipgloss.AdaptiveColor
 | 
			
		||||
	info lipgloss.AdaptiveColor
 | 
			
		||||
	cyan lipgloss.AdaptiveColor
 | 
			
		||||
	green lipgloss.AdaptiveColor
 | 
			
		||||
	blue lipgloss.AdaptiveColor
 | 
			
		||||
	magenta lipgloss.AdaptiveColor
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func MakeTheme() rosepine {
 | 
			
		||||
	return rosepine{
 | 
			
		||||
		base: lipgloss.AdaptiveColor{
 | 
			
		||||
			Light:"#faf4ed",
 | 
			
		||||
			Dark:"#232136",
 | 
			
		||||
		},
 | 
			
		||||
		surface: lipgloss.AdaptiveColor{
 | 
			
		||||
			Light:"#fffaf3",
 | 
			
		||||
			Dark:"#2a273f",
 | 
			
		||||
		},
 | 
			
		||||
		overlay: lipgloss.AdaptiveColor{
 | 
			
		||||
			Light:"#f2e9e1",
 | 
			
		||||
			Dark:"#393552",
 | 
			
		||||
		},
 | 
			
		||||
		muted: lipgloss.AdaptiveColor{
 | 
			
		||||
			Light:"#9893a5",
 | 
			
		||||
			Dark:"#6e6a86",
 | 
			
		||||
		},
 | 
			
		||||
		subtle: lipgloss.AdaptiveColor{
 | 
			
		||||
			Light:"#797593",
 | 
			
		||||
			Dark:"#908caa",
 | 
			
		||||
		},
 | 
			
		||||
		text: lipgloss.AdaptiveColor{
 | 
			
		||||
			Light:"#575279",
 | 
			
		||||
			Dark:"#e0def4",
 | 
			
		||||
		},
 | 
			
		||||
		err: lipgloss.AdaptiveColor{
 | 
			
		||||
			Light:"#b4637a",
 | 
			
		||||
			Dark:"#eb6f92",
 | 
			
		||||
		},
 | 
			
		||||
		info: lipgloss.AdaptiveColor{
 | 
			
		||||
			Light:"#ea9d34",
 | 
			
		||||
			Dark:"#f6c177",
 | 
			
		||||
		},
 | 
			
		||||
		cyan: lipgloss.AdaptiveColor{
 | 
			
		||||
			Light:"#d7827e",
 | 
			
		||||
			Dark:"#ea9a97",
 | 
			
		||||
		},
 | 
			
		||||
		green: lipgloss.AdaptiveColor{
 | 
			
		||||
			Light:"#286983",
 | 
			
		||||
			Dark:"#3e8fb0",
 | 
			
		||||
		},
 | 
			
		||||
		blue: lipgloss.AdaptiveColor{
 | 
			
		||||
			Light:"#56949f",
 | 
			
		||||
			Dark:"#9ccfd8",
 | 
			
		||||
		},
 | 
			
		||||
		magenta: lipgloss.AdaptiveColor{
 | 
			
		||||
			Light:"#907aa9",
 | 
			
		||||
			Dark:"#c4a7e7",
 | 
			
		||||
		},
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
@@ -38,7 +38,7 @@ func (m model) View() string {
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func main() {
 | 
			
		||||
	fonts, err := crt.LoadFaces("FiraMonoNerdFont-Regular.otf", "FiraMonoNerdFont-Bold.otf", "FiraMonoNerdFont-Medium.otf", crt.GetFontDPI(), 16.0)
 | 
			
		||||
	fonts, err := crt.LoadFaces("assets/fonts/IosevkaTerm-Extended.ttf", "assets/fonts/IosevkaTerm-ExtendedBold.ttf", "assets/fonts/IosevkaTerm-ExtendedMedium.ttf", crt.GetFontDPI(), 16.0)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		panic(err)
 | 
			
		||||
	}
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user