From 4e849022acfe54ec433d0192defe13fc58c1217e Mon Sep 17 00:00:00 2001 From: Trevor Slocum Date: Sun, 31 Oct 2021 14:58:29 -0700 Subject: [PATCH] Reposition interface --- assets/ojas-dungeon/dungeon-tileset-1.png | Bin 31161 -> 32346 bytes creep.go | 2 +- game.go | 151 ++++++++++++---------- go.mod | 6 +- go.sum | 12 +- level.go | 13 +- player.go | 2 - 7 files changed, 99 insertions(+), 87 deletions(-) diff --git a/assets/ojas-dungeon/dungeon-tileset-1.png b/assets/ojas-dungeon/dungeon-tileset-1.png index b3f7506859ee003e4b0a1cd644481f6544aaf4d4..cc8ae6c0a7a462905c66997d0ec6cd54718b761d 100644 GIT binary patch delta 28956 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⪕!UL_ZxX-hn*OI!sC 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 diff --git a/creep.go b/creep.go index 7dda6a6..8b0ce80 100644 --- a/creep.go +++ b/creep.go @@ -140,7 +140,7 @@ func (c *gameCreep) moveSpeed() float64 { if c.creepType == TypeSoul { return 0.5 / 4 } - return 0.1 + (float64(c.level.num) * 0.1) + return 0.29 + (float64(c.level.num) * 0.01) } func (c *gameCreep) seekPlayer() { diff --git a/game.go b/game.go index 6c4d663..fc762d9 100644 --- a/game.go +++ b/game.go @@ -34,15 +34,14 @@ const ( playerDieVolume = 1.6 munchVolume = 0.8 - spawnVampire = 777 - spawnGarlic = 6 + spawnGarlic = 6 garlicActiveTime = 7 * time.Second holyWaterActiveTime = time.Second - maxCreeps = 3333 // TODO optimize and raise - batSoundDelay = 250 * time.Millisecond + + screenPadding = 33 ) var startButtons = []ebiten.StandardGamepadButton{ @@ -270,7 +269,13 @@ func (g *game) generateLevel() error { g.level.items = append(g.level.items, item) // Spawn creeps. - for i := 0; i < spawnVampire; i++ { + spawnAmount := 66 + if g.levelNum == 2 { + spawnAmount = 666 + } else if g.levelNum == 3 { + spawnAmount = 1111 + } + for i := 0; i < spawnAmount; i++ { g.level.addCreep(TypeVampire) } return nil @@ -349,8 +354,6 @@ func (g *game) handlePlayerDeath() { return } - g.player.holyWaters = 0 - g.gameOverTime = time.Now() // Play die sound. @@ -468,29 +471,23 @@ func (g *game) Update() error { } g.checkLevelComplete() } else if !g.godMode && !c.repelled() { - if g.player.holyWaters > 0 { - // TODO g.playSound(SoundItemUseHolyWater, useholyWaterVolume) - g.player.holyWaterUntil = time.Now().Add(holyWaterActiveTime) - g.player.holyWaters-- - } else { - err := g.hurtCreep(c, -1) - if err != nil { - // TODO - panic(err) - } + err := g.hurtCreep(c, -1) + if err != nil { + // TODO + panic(err) + } - g.player.health-- + g.player.health-- - if g.player.health == 2 { - g.playSound(SoundPlayerHurt, playerHurtVolume/2) - } else if g.player.health == 1 { - g.playSound(SoundPlayerHurt, playerHurtVolume) - } + if g.player.health == 2 { + g.playSound(SoundPlayerHurt, playerHurtVolume/2) + } else if g.player.health == 1 { + g.playSound(SoundPlayerHurt, playerHurtVolume) + } - g.addBloodSplatter(g.player.x, g.player.y) + g.addBloodSplatter(g.player.x, g.player.y) - g.handlePlayerDeath() - } + g.handlePlayerDeath() } } else if c.creepType == TypeBat && (dx <= 12 && dy <= 7) && rand.Intn(166) == 6 && time.Since(g.lastBatSound) >= batSoundDelay { g.playSound(SoundBat, batDieVolume) @@ -581,8 +578,8 @@ func (g *game) Update() error { g.playSound(SoundMunch, munchVolume) g.player.garlicUntil = time.Now().Add(garlicActiveTime) } else if item.itemType == itemTypeHolyWater { - // TODO g.playSound(SoundItemPickup, munchVolume) - g.player.holyWaters++ + // TODO g.playSound(SoundItemPickup, pickupVolume) + g.player.health++ } } } @@ -720,11 +717,23 @@ UPDATEPROJECTILES: } } + maxCreeps := 666 + if g.levelNum == 2 { + maxCreeps = 1999 + } else if g.levelNum == 3 { + maxCreeps = 3333 + } if len(g.level.creeps) < maxCreeps { // Spawn vampires. if g.tick%144 == 0 { spawnAmount := rand.Intn(26 + (g.tick / (144 * 3))) - if len(g.level.creeps) < 500 { + minCreeps := 0 + if g.levelNum == 2 { + minCreeps = 500 + } else if g.levelNum == 3 { + minCreeps = 1000 + } + if len(g.level.creeps) < minCreeps { spawnAmount *= 4 } if g.debugMode && spawnAmount > 0 { @@ -851,8 +860,8 @@ UPDATEPROJECTILES: } g.flashMessage(fmt.Sprintf("SPAWNED %d GHOSTS", spawnAmount)) case inpututil.IsKeyJustPressed(ebiten.Key7): - g.player.holyWaters++ - g.flashMessage("SPAWNED HOLY WATER") + g.player.health++ + g.flashMessage("INCREASED HEALTH") case inpututil.IsKeyJustPressed(ebiten.Key8): // TODO Add garlic to inventory //g.flashMessage("+ GARLIC") @@ -872,7 +881,18 @@ UPDATEPROJECTILES: return nil } -func (g *game) drawText(target *ebiten.Image, offsetX float64, y float64, scale float64, alpha float64, text string) { +func (g *game) drawText(target *ebiten.Image, x float64, y float64, scale float64, alpha float64, text string) { + g.overlayImg.Clear() + ebitenutil.DebugPrint(g.overlayImg, text) + g.op.GeoM.Reset() + g.op.GeoM.Scale(scale, scale) + g.op.GeoM.Translate(x, y) + g.op.ColorM.Scale(1, 1, 1, alpha) + target.DrawImage(g.overlayImg, g.op) + g.op.ColorM.Reset() +} + +func (g *game) drawCenteredText(target *ebiten.Image, offsetX float64, y float64, scale float64, alpha float64, text string) { g.overlayImg.Clear() ebitenutil.DebugPrint(g.overlayImg, text) g.op.GeoM.Reset() @@ -891,14 +911,14 @@ func (g *game) Draw(screen *ebiten.Image) { if g.gameStartTime.IsZero() { screen.Fill(colorBlood) - g.drawText(screen, 0, float64(g.h/2)-350, 16, 1.0, "CAROTID") - g.drawText(screen, 0, float64(g.h/2)-100, 16, 1.0, "ARTILLERY") + g.drawCenteredText(screen, 0, float64(g.h/2)-350, 16, 1.0, "CAROTID") + g.drawCenteredText(screen, 0, float64(g.h/2)-100, 16, 1.0, "ARTILLERY") - g.drawText(screen, 0, float64(g.h-210), 4, 1.0, "WASD + MOUSE = OK") - g.drawText(screen, 0, float64(g.h-145), 4, 1.0, "FULLSCREEN + GAMEPAD = BEST") + g.drawCenteredText(screen, 0, float64(g.h-210), 4, 1.0, "WASD + MOUSE = OK") + g.drawCenteredText(screen, 0, float64(g.h-145), 4, 1.0, "FULLSCREEN + GAMEPAD = BEST") if time.Now().UnixMilli()%2000 < 1500 { - g.drawText(screen, 0, float64(g.h-80), 4, 1.0, "PRESS ANY KEY OR BUTTON TO START") + g.drawCenteredText(screen, 0, float64(g.h-80), 4, 1.0, "PRESS ANY KEY OR BUTTON TO START") } return @@ -942,47 +962,46 @@ func (g *game) Draw(screen *ebiten.Image) { screen.DrawImage(img, g.op) g.op.ColorM.Reset() - g.drawText(screen, 0, float64(g.h/2)-150, 16, a, "GAME OVER") + g.drawCenteredText(screen, 0, float64(g.h/2)-150, 16, a, "GAME OVER") if time.Since(g.gameOverTime).Milliseconds()%2000 < 1500 { - g.drawText(screen, 0, 8, 4, a, "PRESS ENTER OR START TO PLAY AGAIN") + g.drawCenteredText(screen, 0, 8, 4, a, "PRESS ENTER OR START TO PLAY AGAIN") } } if g.gameOverTime.IsZero() { // Draw health. - heartSpace := 32 - heartX := (g.w / 2) - ((heartSpace * g.player.health) / 2) + healthScale := 1.3 + heartSpace := int(32 * healthScale) + heartY := float64(g.h - screenPadding - heartSpace) for i := 0; i < g.player.health; i++ { g.op.GeoM.Reset() - g.op.GeoM.Translate(float64(heartX+(i*heartSpace)), 32) + g.op.GeoM.Scale(healthScale, healthScale) + g.op.GeoM.Translate(screenPadding+(float64((i)*heartSpace)), heartY) screen.DrawImage(imageAtlas[ImageHeart], g.op) } - // Draw holy waters. - holyWaterSpace := 16 - holyWaterX := (g.w / 2) - ((holyWaterSpace * g.player.holyWaters) / 2) - 8 - for i := 0; i < g.player.holyWaters; i++ { - g.op.GeoM.Reset() - g.op.GeoM.Translate(float64(holyWaterX+(i*holyWaterSpace)), 76) - screen.DrawImage(imageAtlas[ImageHolyWater], g.op) - } - - scale := 3.0 - soulsY := 104.0 + scale := 4.0 + soulsY := float64(g.h-int(scale*14)) - screenPadding if g.level.exitOpenTime.IsZero() { // Draw souls. soulsLabel := fmt.Sprintf("%d", g.level.requiredSouls-g.player.soulsRescued) + soulImgSize := 50.0 + + soulsX := float64(g.w-screenPadding) - (float64((len(soulsLabel)) * 4 * 6)) - soulImgSize + + soulImgScale := 1.5 g.op.GeoM.Reset() - g.op.GeoM.Translate(float64(g.w/2)-(float64(len(soulsLabel))*3*scale)-40, soulsY+8) + g.op.GeoM.Translate((soulsX+soulImgSize)/soulImgScale, (soulsY+9)/soulImgScale) + g.op.GeoM.Scale(soulImgScale, soulImgScale) screen.DrawImage(ojasDungeonSS.Soul1, g.op) - g.drawText(screen, 0, soulsY, scale, 1.0, soulsLabel) + g.drawText(screen, soulsX, soulsY, scale, 1.0, soulsLabel) } else { // Draw exit message. if time.Since(g.level.exitOpenTime).Milliseconds()%2000 < 1500 { - g.drawText(screen, 0, soulsY, scale, 1.0, "EXIT OPEN") + g.drawCenteredText(screen, 0, soulsY, scale, 1.0, "EXIT OPEN") } } } @@ -993,16 +1012,17 @@ func (g *game) Draw(screen *ebiten.Image) { if alpha > 1 { alpha = 1 } - g.drawText(screen, 0, float64(g.h-40), 2, alpha, g.flashMessageText) + g.drawCenteredText(screen, 0, float64(g.h-screenPadding-32), 2, alpha, g.flashMessageText) } - if !g.gameWon { + if !g.gameOverTime.IsZero() && !g.gameWon { a := g.minLevelColorScale if a == -1 { a = 1 } + scale := 5 scoreLabel := numberPrinter.Sprintf("%d", g.player.score) - g.drawText(screen, 0, float64(g.h-150), 8, a, scoreLabel) + g.drawCenteredText(screen, 0, float64(g.h-(scale*14))-screenPadding, float64(scale), a, scoreLabel) } if !g.debugMode { @@ -1183,7 +1203,7 @@ func (g *game) renderLevel(screen *ebiten.Image) int { a := 1.0 if c.creepType == TypeSoul { - a = 0.35 + a = 0.3 } drawn += g.renderSprite(c.x, c.y, 0, 0, c.angle, 1.0, g.levelColorScale(c.x, c.y), a, c.sprites[c.frame], screen) @@ -1571,15 +1591,12 @@ func (g *game) showWinScreen() { } } - if i > int(144*12) { + if i > 144*12 { p.angle -= 0.0025 * (float64(i-(144*12)) / (144 * 3)) - addStar() - addStar() - addStar() - addStar() - addStar() - addStar() + for j := 0; j < 6; j++ { + addStar() + } } p.x += 0.05 diff --git a/go.mod b/go.mod index 36b4bd7..9d3aef4 100644 --- a/go.mod +++ b/go.mod @@ -13,8 +13,8 @@ require ( github.com/go-gl/glfw/v3.3/glfw v0.0.0-20211024062804-40e447a793be // indirect github.com/hajimehoshi/oto/v2 v2.1.0-alpha.3 // indirect github.com/jezek/xgb v0.0.0-20210312150743-0e0f116e1240 // indirect - golang.org/x/exp v0.0.0-20211029153326-98a2daa683e3 // indirect - golang.org/x/mobile v0.0.0-20211029123140-7b8bfe09930c // indirect + golang.org/x/exp v0.0.0-20211029182501-9b944d235b9d // indirect + golang.org/x/mobile v0.0.0-20211030030900-170e11ba2351 // indirect golang.org/x/sync v0.0.0-20210220032951-036812b2e83c // indirect - golang.org/x/sys v0.0.0-20211025201205-69cdffdb9359 // indirect + golang.org/x/sys v0.0.0-20211031064116-611d5d643895 // indirect ) diff --git a/go.sum b/go.sum index 51fdbaf..895208e 100644 --- a/go.sum +++ b/go.sum @@ -293,8 +293,8 @@ golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5y golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190731235908-ec7cb31e5a56/go.mod h1:JhuoJpWY28nO4Vef9tZUw9qufEGTyX1+7lmHxV5q5G4= -golang.org/x/exp v0.0.0-20211029153326-98a2daa683e3 h1:EThhdleNHAYpuHkwXUPv0bjZuNhSMmNrIvCandX6jSU= -golang.org/x/exp v0.0.0-20211029153326-98a2daa683e3/go.mod h1:OyI624f2tQ/aU3IMa7GB16Hk54CHURAfHfj6tMqtyhA= +golang.org/x/exp v0.0.0-20211029182501-9b944d235b9d h1:MKwb3mzSy4CTpgAm10+7Ru8Hq8ZnHOGgWAjo9fNVK+o= +golang.org/x/exp v0.0.0-20211029182501-9b944d235b9d/go.mod h1:OyI624f2tQ/aU3IMa7GB16Hk54CHURAfHfj6tMqtyhA= golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= golang.org/x/image v0.0.0-20190703141733-d6a02ce849c9/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= @@ -310,8 +310,8 @@ golang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU golang.org/x/mobile v0.0.0-20190415191353-3e0bab5405d6/go.mod h1:E/iHnbuqvinMTCcRqshq8CkpyQDoeVncDDYHnLhea+o= golang.org/x/mobile v0.0.0-20201217150744-e6ae53a27f4f/go.mod h1:skQtrUTUwhdJvXM/2KKJzY8pDgNr9I/FOMqDVRPBUS4= golang.org/x/mobile v0.0.0-20210902104108-5d9a33257ab5/go.mod h1:c4YKU3ZylDmvbw+H/PSvm42vhdWbuxCzbonauEAP9B8= -golang.org/x/mobile v0.0.0-20211029123140-7b8bfe09930c h1:K3U/yO0T6tX3GbBJxRdmhVD/JAQBtDXynUQW38GUujM= -golang.org/x/mobile v0.0.0-20211029123140-7b8bfe09930c/go.mod h1:pe2sM7Uk+2Su1y7u/6Z8KJ24D7lepUjFZbhFOrmDfuQ= +golang.org/x/mobile v0.0.0-20211030030900-170e11ba2351 h1:e6m5p6EjRXHjmiHMe3gCyuL1f82OdkJ0m7WJOn8mnjo= +golang.org/x/mobile v0.0.0-20211030030900-170e11ba2351/go.mod h1:pe2sM7Uk+2Su1y7u/6Z8KJ24D7lepUjFZbhFOrmDfuQ= golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc= golang.org/x/mod v0.1.0/go.mod h1:0QHyrYULN0/3qlju5TqG8bIK38QM8yzMo5ekMj3DlcY= golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= @@ -380,8 +380,8 @@ golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20210809222454-d867a43fc93e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210917161153-d61c044b1678/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211019181941-9d821ace8654/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20211025201205-69cdffdb9359 h1:2B5p2L5IfGiD7+b9BOoRMC6DgObAVZV+Fsp050NqXik= -golang.org/x/sys v0.0.0-20211025201205-69cdffdb9359/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20211031064116-611d5d643895 h1:iaNpwpnrgL5jzWS0vCNnfa8HqzxveCFpFx3uC/X4Tps= +golang.org/x/sys v0.0.0-20211031064116-611d5d643895/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= diff --git a/level.go b/level.go index 2388c77..5e92374 100644 --- a/level.go +++ b/level.go @@ -98,14 +98,11 @@ SPAWNLOCATION: // NewLevel returns a new randomly generated Level. func NewLevel(levelNum int, p *gamePlayer) (*Level, error) { - multiplier := levelNum - if multiplier > 2 { - multiplier = 2 - } + div := 4 - levelNum l := &Level{ num: levelNum, - w: 336 * multiplier, - h: 336 * multiplier, + w: 336 / div, + h: 336 / div, tileSize: 32, player: p, } @@ -124,9 +121,9 @@ func NewLevel(levelNum int, p *gamePlayer) (*Level, error) { } rooms := 33 - if multiplier == 2 { + /*if multiplier == 2 { rooms = 66 - } + }*/ d := dungeon.NewDungeon(l.w/dungeonScale, rooms) dungeonFloor := 1 l.tiles = make([][]*Tile, l.h) diff --git a/player.go b/player.go index 3c5c770..ebc323d 100644 --- a/player.go +++ b/player.go @@ -24,8 +24,6 @@ type gamePlayer struct { health int - holyWaters int - garlicUntil time.Time holyWaterUntil time.Time }