fixed some performance things

This commit is contained in:
MrDonuts
2023-11-20 23:25:38 -05:00
parent a875a4ed57
commit 7af60685db
7 changed files with 15 additions and 21 deletions

BIN
.DS_Store vendored Normal file

Binary file not shown.

BIN
assets/.DS_Store vendored

Binary file not shown.

BIN
assets/audio/.DS_Store vendored

Binary file not shown.

View File

@@ -12,12 +12,12 @@ var defaultSquareSpacing = 5
var minBorder = 20 var minBorder = 20
var ScoreOffset = 50 var ScoreOffset = 50
var HighScoreOffset = 10 var HighScoreOffset = 10
var GameGrid Grid var GameGrid *Grid
var MaxGridDimension = 20 var MaxGridDimension = 20
type Grid struct { type Grid struct {
squareSpacing int squareSpacing int
squares [][]Square squares [][]*Square
startX int startX int
startY int startY int
squareSize int squareSize int
@@ -77,14 +77,14 @@ func BuildGrid(numRows int, numColumns int) {
grd.startY = currentY grd.startY = currentY
grd.squareSize = sqSize grd.squareSize = sqSize
table := make([][]Square, numRows) table := make([][]*Square, numRows)
for i := 0; i < numRows; i++ { for i := 0; i < numRows; i++ {
row := make([]Square, numColumns) row := make([]*Square, numColumns)
for j := 0; j < numColumns; j++ { for j := 0; j < numColumns; j++ {
sq := MakeSquare(sqSize) sq := MakeSquare(sqSize)
sq.SetPosition(currentX, currentY) sq.SetPosition(currentX, currentY)
row[j] = sq row[j] = &sq
currentX += sqSize + grd.squareSpacing currentX += sqSize + grd.squareSpacing
} }
table[i] = row table[i] = row
@@ -133,7 +133,7 @@ func BuildGrid(numRows int, numColumns int) {
} }
grd.coloredSquaresRemaining = squaresToColour grd.coloredSquaresRemaining = squaresToColour
GameGrid = grd GameGrid = &grd
} }
func (grd *Grid) Draw(screen *ebiten.Image) { func (grd *Grid) Draw(screen *ebiten.Image) {
@@ -174,7 +174,7 @@ func (grd *Grid) ChangeColour(row int, column int, clr color.Color) {
} }
func (grd *Grid) GetSquareAt(row int, column int) *Square { func (grd *Grid) GetSquareAt(row int, column int) *Square {
return &grd.squares[row-1][column-1] return grd.squares[row-1][column-1]
} }
func (grd *Grid) ColouredSquaresRemaining() int { func (grd *Grid) ColouredSquaresRemaining() int {

View File

@@ -21,7 +21,7 @@ var CurrentEnergy = defaultStartingEnergy
var CurrentLevel = 1 var CurrentLevel = 1
type Player struct { type Player struct {
square Square square *Square
row int row int
col int col int
currColorIndex int currColorIndex int
@@ -41,7 +41,7 @@ func SetupPlayer() {
sq.SetPosition(gridSq.x, gridSq.y) sq.SetPosition(gridSq.x, gridSq.y)
//setup struct for passing around //setup struct for passing around
ply := Player{square: sq, row: rows, col: 1, currColorIndex: 0} ply := Player{square: &sq, row: rows, col: 1, currColorIndex: 0}
MainPlayer = &ply MainPlayer = &ply
} }

View File

@@ -67,5 +67,5 @@ func (s *PlayLevelState) Update() {
func (s *PlayLevelState) Draw(screen *ebiten.Image) { func (s *PlayLevelState) Draw(screen *ebiten.Image) {
geom.GameGrid.Draw(screen) geom.GameGrid.Draw(screen)
geom.MainPlayer.Draw(screen) geom.MainPlayer.Draw(screen)
score.ScoreMngr.Draw(screen) score.ScoreMngr.Draw(screen) //something in here is causing big time CPU usage
} }

View File

@@ -14,6 +14,8 @@ import (
) )
var ScoreMngr ScoreManager var ScoreMngr ScoreManager
var smallFace = assets.LoadFontFace("fonts/robot.otf", 12)
var bigFace = assets.LoadFontFace("fonts/robot.otf", 20)
type ScoreManager struct{} type ScoreManager struct{}
@@ -24,22 +26,14 @@ func (sm *ScoreManager) Draw(screen *ebiten.Image) {
w, h := ebiten.WindowSize() w, h := ebiten.WindowSize()
//highScoreStr := fmt.Sprintf("High Score: %v", highScore)
levelStr := fmt.Sprintf("Level: %v", geom.CurrentLevel) levelStr := fmt.Sprintf("Level: %v", geom.CurrentLevel)
face := assets.LoadFontFace("fonts/robot.otf", 12)
//draw high score (i.e. best level)
//stringWidth := font.MeasureString(face, highScoreStr).Ceil()
//text.Draw(screen, highScoreStr, face, w-stringWidth-geom.HighScoreOffset, h-geom.HighScoreOffset, color.White)
//draw current level //draw current level
//stringWidth = font.MeasureString(face, levelStr).Ceil() text.Draw(screen, levelStr, smallFace, geom.HighScoreOffset, h-geom.HighScoreOffset, color.White)
text.Draw(screen, levelStr, face, geom.HighScoreOffset, h-geom.HighScoreOffset, color.White)
//draw energy at the top //draw energy at the top
energyStr := fmt.Sprintf("Energy: %v", geom.CurrentEnergy) energyStr := fmt.Sprintf("Energy: %v", geom.CurrentEnergy)
face = assets.LoadFontFace("fonts/robot.otf", 20) stringWidth := font.MeasureString(bigFace, energyStr).Ceil()
stringWidth := font.MeasureString(face, energyStr).Ceil() text.Draw(screen, energyStr, bigFace, w/2-stringWidth/2, geom.ScoreOffset, color.White)
text.Draw(screen, energyStr, face, w/2-stringWidth/2, geom.ScoreOffset, color.White)
} }