From 856043d8ac1d38f52a5d6292be15b62741c60851 Mon Sep 17 00:00:00 2001 From: Tim Sarbin Date: Sun, 26 Jul 2020 15:17:00 -0400 Subject: [PATCH] Updated music logic (#629) --- d2app/app.go | 2 +- d2common/d2resource/resource_paths.go | 5 ++ d2common/music_defs.go | 75 ++++++++++++----------- d2core/d2map/d2maprenderer/camera.go | 1 + d2core/d2map/d2maprenderer/renderer.go | 7 ++- d2game/d2gamescreen/map_engine_testing.go | 23 ++++--- 6 files changed, 68 insertions(+), 45 deletions(-) diff --git a/d2app/app.go b/d2app/app.go index fe5f1285..61a86c3c 100644 --- a/d2app/app.go +++ b/d2app/app.go @@ -636,7 +636,7 @@ func (a *App) ToCharacterSelect(connType d2clientconnectiontype.ClientConnection } func (a *App) ToMapEngineTest(region int, level int) { - met := d2gamescreen.CreateMapEngineTest(0, 1, a.terminal, a.renderer, a.inputManager) + met := d2gamescreen.CreateMapEngineTest(0, 1, a.terminal, a.renderer, a.inputManager, a.audio) d2screen.SetNextScreen(met) } diff --git a/d2common/d2resource/resource_paths.go b/d2common/d2resource/resource_paths.go index f3495576..a30bbe9d 100644 --- a/d2common/d2resource/resource_paths.go +++ b/d2common/d2resource/resource_paths.go @@ -265,7 +265,12 @@ const ( BGMAct4Mesa = "/data/global/music/Act4/mesa.wav" BGMAct4Town4 = "/data/global/music/Act4/town4.wav" BGMAct5Baal = "/data/global/music/Act5/baal.wav" + BGMAct5Siege = "/data/global/music/Act5/siege.wav" + BGMAct5Shenk = "/data/global/music/Act5/shenkmusic.wav" BGMAct5XTown = "/data/global/music/Act5/xtown.wav" + BGMAct5XTemple = "/data/global/music/Act5/xtemple.wav" + BGMAct5IceCaves = "/data/global/music/Act5/icecaves.wav" + BGMAct5Nihlathak = "/data/global/music/Act5/nihlathakmusic.wav" // --- Sound Effects --- diff --git a/d2common/music_defs.go b/d2common/music_defs.go index 17004767..e40bd6f9 100644 --- a/d2common/music_defs.go +++ b/d2common/music_defs.go @@ -1,6 +1,9 @@ package d2common -import "github.com/OpenDiablo2/OpenDiablo2/d2common/d2enum" +import ( + "github.com/OpenDiablo2/OpenDiablo2/d2common/d2enum" + "github.com/OpenDiablo2/OpenDiablo2/d2common/d2resource" +) // MusicDef stores the music definitions of a region type MusicDef struct { @@ -11,41 +14,41 @@ type MusicDef struct { func getMusicDefs() []MusicDef { return []MusicDef{ - {d2enum.RegionAct1Town, false, "/data/global/music/Act1/town1.wav"}, - {d2enum.RegionAct1Wilderness, false, "/data/global/music/Act1/wild.wav"}, - {d2enum.RegionAct1Cave, false, "/data/global/music/Act1/caves.wav"}, - {d2enum.RegionAct1Crypt, false, "/data/global/music/Act1/crypt.wav"}, - {d2enum.RegionAct1Monestary, false, "/data/global/music/Act1/monastery.wav"}, - {d2enum.RegionAct1Courtyard, false, "/data/global/music/Act1/wild.wav"}, // ? - {d2enum.RegionAct1Barracks, false, "/data/global/music/Act1/wild.wav"}, // ? - {d2enum.RegionAct1Jail, false, "/data/global/music/Act1/wild.wav"}, // ? - {d2enum.RegionAct1Cathedral, false, "/data/global/music/Act1/monastery.wav"}, // ? - {d2enum.RegionAct1Catacombs, false, "/data/global/music/Act1/crypt.wav"}, // ? - {d2enum.RegionAct1Tristram, false, "/data/global/music/Act1/tristram.wav"}, // ? - {d2enum.RegionAct2Town, false, "/data/global/music/Act2/town2.wav"}, - {d2enum.RegionAct2Sewer, false, "/data/global/music/Act2/sewer.wav"}, - {d2enum.RegionAct2Harem, false, "/data/global/music/Act2/harem.wav"}, - {d2enum.RegionAct2Basement, false, "/data/global/music/Act2/lair.wav"}, // ? - {d2enum.RegionAct2Desert, false, "/data/global/music/Act2/desrt.wav"}, - {d2enum.RegionAct2Tomb, false, "/data/global/music/Act2/tombs.wav"}, - {d2enum.RegionAct2Lair, false, "/data/global/music/Act2/lair.wav"}, - {d2enum.RegionAct2Arcane, false, "/data/global/music/Act2/sanctuary.wav"}, // ? - {d2enum.RegionAct3Town, false, "/data/global/music/Act3/town3.wav"}, - {d2enum.RegionAct3Jungle, false, "/data/global/music/Act3/jungle.wav"}, - {d2enum.RegionAct3Kurast, false, "/data/global/music/Act3/kurast.wav"}, - {d2enum.RegionAct3Spider, false, "/data/global/music/Act3/spider.wav"}, - {d2enum.RegionAct3Dungeon, false, "/data/global/music/Act3/kurastsewer.wav"}, // ? - {d2enum.RegionAct3Sewer, false, "/data/global/music/Act3/kurastsewer.wav"}, - {d2enum.RegionAct4Town, false, "/data/global/music/Act4/town4.wav"}, - {d2enum.RegionAct4Mesa, false, "/data/global/music/Act4/mesa.wav"}, - {d2enum.RegionAct4Lava, false, "/data/global/music/Act4/diablo.wav"}, // ? - {d2enum.RegonAct5Town, false, "/data/global/music/Act5/xtown.wav"}, - {d2enum.RegionAct5Siege, false, "/data/global/music/Act5/siege.wav"}, - {d2enum.RegionAct5Barricade, false, "/data/global/music/Act5/shenkmusic.wav"}, // ? - {d2enum.RegionAct5Temple, false, "/data/global/music/Act5/xtemple.wav"}, - {d2enum.RegionAct5IceCaves, false, "/data/global/music/Act5/icecaves.wav"}, - {d2enum.RegionAct5Baal, false, "/data/global/music/Act5/baal.wav"}, - {d2enum.RegionAct5Lava, false, "/data/global/music/Act5/nihlathakmusic.wav"}, // ? + {d2enum.RegionAct1Town, false, d2resource.BGMAct1Town1}, + {d2enum.RegionAct1Wilderness, false, d2resource.BGMAct1Wild}, + {d2enum.RegionAct1Cave, false, d2resource.BGMAct1Caves}, + {d2enum.RegionAct1Crypt, false, d2resource.BGMAct1Crypt}, + {d2enum.RegionAct1Monestary, false, d2resource.BGMAct1Monastery}, + {d2enum.RegionAct1Courtyard, false, d2resource.BGMAct1Monastery}, + {d2enum.RegionAct1Barracks, false, d2resource.BGMAct1Monastery}, + {d2enum.RegionAct1Jail, false, d2resource.BGMAct1Monastery}, + {d2enum.RegionAct1Cathedral, false, d2resource.BGMAct1Monastery}, + {d2enum.RegionAct1Catacombs, false, d2resource.BGMAct1Monastery}, + {d2enum.RegionAct1Tristram, false, d2resource.BGMAct1Tristram}, + {d2enum.RegionAct2Town, false, d2resource.BGMAct2Town2}, + {d2enum.RegionAct2Sewer, false, d2resource.BGMAct2Sewer}, + {d2enum.RegionAct2Harem, false, d2resource.BGMAct2Harem}, + {d2enum.RegionAct2Basement, false, d2resource.BGMAct2Harem}, + {d2enum.RegionAct2Desert, false, d2resource.BGMAct2Desert}, + {d2enum.RegionAct2Tomb, false, d2resource.BGMAct2Tombs}, + {d2enum.RegionAct2Lair, false, d2resource.BGMAct2Lair}, + {d2enum.RegionAct2Arcane, false, d2resource.BGMAct2Sanctuary}, + {d2enum.RegionAct3Town, false, d2resource.BGMAct3Town3}, + {d2enum.RegionAct3Jungle, false, d2resource.BGMAct3Jungle}, + {d2enum.RegionAct3Kurast, false, d2resource.BGMAct3Kurast}, + {d2enum.RegionAct3Spider, false, d2resource.BGMAct3Spider}, + {d2enum.RegionAct3Dungeon, false, d2resource.BGMAct3KurastSewer}, + {d2enum.RegionAct3Sewer, false, d2resource.BGMAct3KurastSewer}, + {d2enum.RegionAct4Town, false, d2resource.BGMAct4Town4}, + {d2enum.RegionAct4Mesa, false, d2resource.BGMAct4Mesa}, + {d2enum.RegionAct4Lava, false, d2resource.BGMAct4Mesa}, + {d2enum.RegonAct5Town, false, d2resource.BGMAct5XTown}, + {d2enum.RegionAct5Siege, false, d2resource.BGMAct5Siege}, + {d2enum.RegionAct5Barricade, false, d2resource.BGMAct5Siege}, // ? + {d2enum.RegionAct5Temple, false, d2resource.BGMAct5XTemple}, + {d2enum.RegionAct5IceCaves, false, d2resource.BGMAct5IceCaves}, + {d2enum.RegionAct5Baal, false, d2resource.BGMAct5Baal}, + {d2enum.RegionAct5Lava, false, d2resource.BGMAct5Nihlathak}, // ? } } diff --git a/d2core/d2map/d2maprenderer/camera.go b/d2core/d2map/d2maprenderer/camera.go index 9294a997..78eafe7b 100644 --- a/d2core/d2map/d2maprenderer/camera.go +++ b/d2core/d2map/d2maprenderer/camera.go @@ -11,6 +11,7 @@ type Camera struct { // MoveTo sets the position of the Camera to the given position func (c *Camera) MoveTo(position *d2vector.Position) { c.position = position + c.target = position } // MoveBy adds the given vector to the current position of the Camera. diff --git a/d2core/d2map/d2maprenderer/renderer.go b/d2core/d2map/d2maprenderer/renderer.go index 07f1d3a8..44132a0a 100644 --- a/d2core/d2map/d2maprenderer/renderer.go +++ b/d2core/d2map/d2maprenderer/renderer.go @@ -502,11 +502,16 @@ func (mr *MapRenderer) ViewportDefault() { mr.viewport.resetAlign() } -// SetCameraTarget sts the Camera target +// SetCameraTarget sets the Camera target func (mr *MapRenderer) SetCameraTarget(position *d2vector.Position) { mr.Camera.SetTarget(position) } +// SetCameraPosition sets the Camera position +func (mr *MapRenderer) SetCameraPosition(position *d2vector.Position) { + mr.Camera.MoveTo(position) +} + // InvalidateImageCache the global region image cache. Call this when you are changing regions. func (mr *MapRenderer) InvalidateImageCache() { mr.imageCacheRecords = nil diff --git a/d2game/d2gamescreen/map_engine_testing.go b/d2game/d2gamescreen/map_engine_testing.go index 8398120c..f2a21fbd 100644 --- a/d2game/d2gamescreen/map_engine_testing.go +++ b/d2game/d2gamescreen/map_engine_testing.go @@ -7,6 +7,8 @@ import ( "strings" "time" + "github.com/OpenDiablo2/OpenDiablo2/d2common" + "github.com/OpenDiablo2/OpenDiablo2/d2common/d2math/d2vector" "github.com/OpenDiablo2/OpenDiablo2/d2core/d2map/d2mapgen" @@ -85,12 +87,13 @@ func getRegions() []regionSpec { // MapEngineTest represents the MapEngineTest screen type MapEngineTest struct { - gameState *d2player.PlayerState - mapEngine *d2mapengine.MapEngine - mapRenderer *d2maprenderer.MapRenderer - terminal d2interface.Terminal - renderer d2interface.Renderer - inputManager d2interface.InputManager + gameState *d2player.PlayerState + mapEngine *d2mapengine.MapEngine + mapRenderer *d2maprenderer.MapRenderer + terminal d2interface.Terminal + renderer d2interface.Renderer + inputManager d2interface.InputManager + audioProvider d2interface.AudioProvider lastMouseX, lastMouseY int selX, selY int @@ -111,6 +114,7 @@ func CreateMapEngineTest(currentRegion, term d2interface.Terminal, renderer d2interface.Renderer, inputManager d2interface.InputManager, + audioProvider d2interface.AudioProvider, ) *MapEngineTest { result := &MapEngineTest{ currentRegion: currentRegion, @@ -121,6 +125,7 @@ func CreateMapEngineTest(currentRegion, terminal: term, renderer: renderer, inputManager: inputManager, + audioProvider: audioProvider, } result.gameState = d2player.CreateTestGameState() @@ -171,7 +176,11 @@ func (met *MapEngineTest) loadRegionByIndex(n, levelPreset, fileIndex int) { met.mapRenderer.SetMapEngine(met.mapEngine) position := d2vector.NewPosition(met.mapRenderer.WorldToOrtho(met.mapEngine.GetCenterPosition())) - met.mapRenderer.SetCameraTarget(&position) + met.mapRenderer.SetCameraPosition(&position) + + musicDef := d2common.GetMusicDef(met.regionSpec.regionType) + + met.audioProvider.PlayBGM(musicDef.MusicFile) } // OnLoad loads the resources for the Map Engine Test screen