From 19257abddb7299b62dc20471955df20ca6bedc1a Mon Sep 17 00:00:00 2001 From: nicholas-eden Date: Sun, 24 Nov 2019 14:58:23 -0800 Subject: [PATCH] Extract sprite from dc6 from D2Shared (#234) Remove processing of dc6 file type from sprite creation. Use dc6 loader from D2Shared. --- d2core/d2scene/character_select.go | 10 ++- d2core/d2scene/credits.go | 4 +- d2core/d2scene/game.go | 7 +- d2core/d2scene/main_menu.go | 19 +++-- d2core/d2scene/select_hero_class.go | 4 +- d2core/engine.go | 5 +- d2render/d2ui/Scrollbar.go | 4 +- d2render/d2ui/button.go | 4 +- d2render/d2ui/checkbox.go | 4 +- d2render/d2ui/font.go | 4 +- d2render/d2ui/manager.go | 4 +- d2render/d2ui/textbox.go | 4 +- d2render/sprite.go | 108 +++++++--------------------- go.mod | 2 +- go.sum | 8 +++ 15 files changed, 85 insertions(+), 106 deletions(-) diff --git a/d2core/d2scene/character_select.go b/d2core/d2scene/character_select.go index 927ac9bb..707ea575 100644 --- a/d2core/d2scene/character_select.go +++ b/d2core/d2scene/character_select.go @@ -1,6 +1,7 @@ package d2scene import ( + "github.com/OpenDiablo2/D2Shared/d2data/d2dc6" "image/color" "math" "os" @@ -70,7 +71,8 @@ func (v *CharacterSelect) Load() []func() { v.soundManager.PlayBGM(d2resource.BGMTitle) return []func(){ func() { - v.background = d2render.CreateSprite(v.fileProvider.LoadFile(d2resource.CharacterSelectionBackground), d2datadict.Palettes[d2enum.Sky]) + dc6, _ := d2dc6.LoadDC6(v.fileProvider.LoadFile(d2resource.CharacterSelectionBackground), d2datadict.Palettes[d2enum.Sky]) + v.background = d2render.CreateSpriteFromDC6(dc6) v.background.MoveTo(0, 0) }, func() { @@ -130,11 +132,13 @@ func (v *CharacterSelect) Load() []func() { v.deleteCharConfirmLabel.MoveTo(400, 185) }, func() { - v.selectionBox = d2render.CreateSprite(v.fileProvider.LoadFile(d2resource.CharacterSelectionSelectBox), d2datadict.Palettes[d2enum.Sky]) + dc6, _ := d2dc6.LoadDC6(v.fileProvider.LoadFile(d2resource.CharacterSelectionSelectBox), d2datadict.Palettes[d2enum.Sky]) + v.selectionBox = d2render.CreateSpriteFromDC6(dc6) v.selectionBox.MoveTo(37, 86) }, func() { - v.okCancelBox = d2render.CreateSprite(v.fileProvider.LoadFile(d2resource.PopUpOkCancel), d2datadict.Palettes[d2enum.Fechar]) + dc6, _ := d2dc6.LoadDC6(v.fileProvider.LoadFile(d2resource.PopUpOkCancel), d2datadict.Palettes[d2enum.Fechar]) + v.okCancelBox = d2render.CreateSpriteFromDC6(dc6) v.okCancelBox.MoveTo(270, 175) }, func() { diff --git a/d2core/d2scene/credits.go b/d2core/d2scene/credits.go index ba67fd80..a915ada2 100644 --- a/d2core/d2scene/credits.go +++ b/d2core/d2scene/credits.go @@ -2,6 +2,7 @@ package d2scene import ( "bufio" + "github.com/OpenDiablo2/D2Shared/d2data/d2dc6" "image/color" "log" "os" @@ -83,7 +84,8 @@ func (v *Credits) LoadContributors() []string { func (v *Credits) Load() []func() { return []func(){ func() { - v.creditsBackground = d2render.CreateSprite(v.fileProvider.LoadFile(d2resource.CreditsBackground), d2datadict.Palettes[d2enum.Sky]) + dc6, _ := d2dc6.LoadDC6(v.fileProvider.LoadFile(d2resource.CreditsBackground), d2datadict.Palettes[d2enum.Sky]) + v.creditsBackground = d2render.CreateSpriteFromDC6(dc6) v.creditsBackground.MoveTo(0, 0) }, func() { diff --git a/d2core/d2scene/game.go b/d2core/d2scene/game.go index a91c224e..6afe7930 100644 --- a/d2core/d2scene/game.go +++ b/d2core/d2scene/game.go @@ -1,6 +1,7 @@ package d2scene import ( + "github.com/OpenDiablo2/D2Shared/d2data/d2dc6" "image/color" "github.com/OpenDiablo2/D2Shared/d2helper" @@ -51,14 +52,16 @@ func CreateGame( func (v *Game) Load() []func() { return []func(){ func() { - v.pentSpinLeft = d2render.CreateSprite(v.fileProvider.LoadFile(d2resource.PentSpin), d2datadict.Palettes[d2enum.Sky]) + dc6, _ := d2dc6.LoadDC6(v.fileProvider.LoadFile(d2resource.PentSpin), d2datadict.Palettes[d2enum.Sky]) + v.pentSpinLeft = d2render.CreateSpriteFromDC6(dc6) v.pentSpinLeft.Animate = true v.pentSpinLeft.AnimateBackwards = true v.pentSpinLeft.SpecialFrameTime = 475 v.pentSpinLeft.MoveTo(100, 300) }, func() { - v.pentSpinRight = d2render.CreateSprite(v.fileProvider.LoadFile(d2resource.PentSpin), d2datadict.Palettes[d2enum.Sky]) + dc6, _ := d2dc6.LoadDC6(v.fileProvider.LoadFile(d2resource.PentSpin), d2datadict.Palettes[d2enum.Sky]) + v.pentSpinRight = d2render.CreateSpriteFromDC6(dc6) v.pentSpinRight.Animate = true v.pentSpinRight.SpecialFrameTime = 475 v.pentSpinRight.MoveTo(650, 300) diff --git a/d2core/d2scene/main_menu.go b/d2core/d2scene/main_menu.go index 64cf1fc7..37bcee9f 100644 --- a/d2core/d2scene/main_menu.go +++ b/d2core/d2scene/main_menu.go @@ -2,6 +2,7 @@ package d2scene import ( "fmt" + "github.com/OpenDiablo2/D2Shared/d2data/d2dc6" "image/color" "log" "os" @@ -109,31 +110,37 @@ func (v *MainMenu) Load() []func() { v.openDiabloLabel.MoveTo(400, 580) }, func() { - v.background = d2render.CreateSprite(v.fileProvider.LoadFile(d2resource.GameSelectScreen), d2datadict.Palettes[d2enum.Sky]) + dc6, _ := d2dc6.LoadDC6(v.fileProvider.LoadFile(d2resource.GameSelectScreen), d2datadict.Palettes[d2enum.Sky]) + v.background = d2render.CreateSpriteFromDC6(dc6) v.background.MoveTo(0, 0) }, func() { - v.trademarkBackground = d2render.CreateSprite(v.fileProvider.LoadFile(d2resource.TrademarkScreen), d2datadict.Palettes[d2enum.Sky]) + dc6, _ := d2dc6.LoadDC6(v.fileProvider.LoadFile(d2resource.TrademarkScreen), d2datadict.Palettes[d2enum.Sky]) + v.trademarkBackground = d2render.CreateSpriteFromDC6(dc6) v.trademarkBackground.MoveTo(0, 0) }, func() { - v.diabloLogoLeft = d2render.CreateSprite(v.fileProvider.LoadFile(d2resource.Diablo2LogoFireLeft), d2datadict.Palettes[d2enum.Units]) + dc6, _ := d2dc6.LoadDC6(v.fileProvider.LoadFile(d2resource.Diablo2LogoFireLeft), d2datadict.Palettes[d2enum.Units]) + v.diabloLogoLeft = d2render.CreateSpriteFromDC6(dc6) v.diabloLogoLeft.Blend = true v.diabloLogoLeft.Animate = true v.diabloLogoLeft.MoveTo(400, 120) }, func() { - v.diabloLogoRight = d2render.CreateSprite(v.fileProvider.LoadFile(d2resource.Diablo2LogoFireRight), d2datadict.Palettes[d2enum.Units]) + dc6, _ := d2dc6.LoadDC6(v.fileProvider.LoadFile(d2resource.Diablo2LogoFireRight), d2datadict.Palettes[d2enum.Units]) + v.diabloLogoRight = d2render.CreateSpriteFromDC6(dc6) v.diabloLogoRight.Blend = true v.diabloLogoRight.Animate = true v.diabloLogoRight.MoveTo(400, 120) }, func() { - v.diabloLogoLeftBack = d2render.CreateSprite(v.fileProvider.LoadFile(d2resource.Diablo2LogoBlackLeft), d2datadict.Palettes[d2enum.Units]) + dc6, _ := d2dc6.LoadDC6(v.fileProvider.LoadFile(d2resource.Diablo2LogoBlackLeft), d2datadict.Palettes[d2enum.Units]) + v.diabloLogoLeftBack = d2render.CreateSpriteFromDC6(dc6) v.diabloLogoLeftBack.MoveTo(400, 120) }, func() { - v.diabloLogoRightBack = d2render.CreateSprite(v.fileProvider.LoadFile(d2resource.Diablo2LogoBlackRight), d2datadict.Palettes[d2enum.Units]) + dc6, _ := d2dc6.LoadDC6(v.fileProvider.LoadFile(d2resource.Diablo2LogoBlackRight), d2datadict.Palettes[d2enum.Units]) + v.diabloLogoRightBack = d2render.CreateSpriteFromDC6(dc6) v.diabloLogoRightBack.MoveTo(400, 120) }, func() { diff --git a/d2core/d2scene/select_hero_class.go b/d2core/d2scene/select_hero_class.go index 5132eb20..2c8dc0de 100644 --- a/d2core/d2scene/select_hero_class.go +++ b/d2core/d2scene/select_hero_class.go @@ -1,6 +1,7 @@ package d2scene import ( + "github.com/OpenDiablo2/D2Shared/d2data/d2dc6" "image" "image/color" @@ -79,7 +80,8 @@ func CreateSelectHeroClass( } func (v *SelectHeroClass) loadSprite(path string, palette d2enum.PaletteType) d2render.Sprite { - return d2render.CreateSprite(v.fileProvider.LoadFile(path), d2datadict.Palettes[palette]) + dc6, _ := d2dc6.LoadDC6(v.fileProvider.LoadFile(path), d2datadict.Palettes[palette]) + return d2render.CreateSpriteFromDC6(dc6) } func (v *SelectHeroClass) Load() []func() { diff --git a/d2core/engine.go b/d2core/engine.go index 3d48004d..2bb93825 100644 --- a/d2core/engine.go +++ b/d2core/engine.go @@ -1,6 +1,7 @@ package d2core import ( + "github.com/OpenDiablo2/D2Shared/d2data/d2dc6" "log" "math" "path" @@ -152,8 +153,8 @@ func (v Engine) IsLoading() bool { // LoadSprite loads a sprite from the game's data files func (v Engine) LoadSprite(fileName string, palette d2enum.PaletteType) d2render.Sprite { - data := v.LoadFile(fileName) - sprite := d2render.CreateSprite(data, d2datadict.Palettes[palette]) + dc6, _ := d2dc6.LoadDC6(v.LoadFile(fileName), d2datadict.Palettes[palette]) + sprite := d2render.CreateSpriteFromDC6(dc6) return sprite } diff --git a/d2render/d2ui/Scrollbar.go b/d2render/d2ui/Scrollbar.go index 359b4540..ccc509d5 100644 --- a/d2render/d2ui/Scrollbar.go +++ b/d2render/d2ui/Scrollbar.go @@ -5,6 +5,7 @@ import ( "github.com/OpenDiablo2/D2Shared/d2common/d2interface" "github.com/OpenDiablo2/D2Shared/d2common/d2resource" "github.com/OpenDiablo2/D2Shared/d2data/d2datadict" + "github.com/OpenDiablo2/D2Shared/d2data/d2dc6" "github.com/OpenDiablo2/OpenDiablo2/d2render" "github.com/hajimehoshi/ebiten" ) @@ -21,13 +22,14 @@ type Scrollbar struct { } func CreateScrollbar(fileProvider d2interface.FileProvider, x, y, height int) Scrollbar { + dc6, _ := d2dc6.LoadDC6(fileProvider.LoadFile(d2resource.Scrollbar), d2datadict.Palettes[d2enum.Sky]) result := Scrollbar{ visible: true, enabled: true, x: x, y: y, height: height, - scrollbarSprite: d2render.CreateSprite(fileProvider.LoadFile(d2resource.Scrollbar), d2datadict.Palettes[d2enum.Sky]), + scrollbarSprite: d2render.CreateSpriteFromDC6(dc6), } return result } diff --git a/d2render/d2ui/button.go b/d2render/d2ui/button.go index c91b2659..1db92db1 100644 --- a/d2render/d2ui/button.go +++ b/d2render/d2ui/button.go @@ -1,6 +1,7 @@ package d2ui import ( + "github.com/OpenDiablo2/D2Shared/d2data/d2dc6" "image" "image/color" @@ -123,7 +124,8 @@ func CreateButton(buttonType ButtonType, fileProvider d2interface.FileProvider, result.buttonLayout = buttonLayout font := GetFont(buttonLayout.FontPath, d2enum.Units, fileProvider) - buttonSprite := d2render.CreateSprite(fileProvider.LoadFile(buttonLayout.ResourceName), d2datadict.Palettes[buttonLayout.PaletteName]) + dc6, _ := d2dc6.LoadDC6(fileProvider.LoadFile(buttonLayout.ResourceName), d2datadict.Palettes[buttonLayout.PaletteName]) + buttonSprite := d2render.CreateSpriteFromDC6(dc6) totalButtonTypes := buttonSprite.GetTotalFrames() / (buttonLayout.XSegments * buttonLayout.YSegments) for i := 0; i < buttonLayout.XSegments; i++ { w, _ := buttonSprite.GetFrameSize(i) diff --git a/d2render/d2ui/checkbox.go b/d2render/d2ui/checkbox.go index 464a4d32..918c94fd 100644 --- a/d2render/d2ui/checkbox.go +++ b/d2render/d2ui/checkbox.go @@ -5,6 +5,7 @@ import ( "github.com/OpenDiablo2/D2Shared/d2common/d2interface" "github.com/OpenDiablo2/D2Shared/d2common/d2resource" "github.com/OpenDiablo2/D2Shared/d2data/d2datadict" + "github.com/OpenDiablo2/D2Shared/d2data/d2dc6" "github.com/OpenDiablo2/OpenDiablo2/d2render" "github.com/hajimehoshi/ebiten" ) @@ -28,7 +29,8 @@ func CreateCheckbox(fileProvider d2interface.FileProvider, checkState bool) Chec height: 0, enabled: true, } - checkboxSprite := d2render.CreateSprite(fileProvider.LoadFile(d2resource.Checkbox), d2datadict.Palettes[d2enum.Fechar]) + dc6, _ := d2dc6.LoadDC6(fileProvider.LoadFile(d2resource.Checkbox), d2datadict.Palettes[d2enum.Fechar]) + checkboxSprite := d2render.CreateSpriteFromDC6(dc6) result.width, result.height = checkboxSprite.GetFrameSize(0) checkboxSprite.MoveTo(0, 0) diff --git a/d2render/d2ui/font.go b/d2render/d2ui/font.go index d09ed504..bca19476 100644 --- a/d2render/d2ui/font.go +++ b/d2render/d2ui/font.go @@ -1,6 +1,7 @@ package d2ui import ( + "github.com/OpenDiablo2/D2Shared/d2data/d2dc6" "image/color" "strings" @@ -54,7 +55,8 @@ func CreateFont(font string, palette d2enum.PaletteType, fileProvider d2interfac metrics: make(map[uint16]FontSize), } // bug: performance issue when using CJK fonts, because ten thousand frames will be rendered PER font - result.fontSprite = d2render.CreateSprite(fileProvider.LoadFile(font+".dc6"), d2datadict.Palettes[palette]) + dc6, _ := d2dc6.LoadDC6(fileProvider.LoadFile(font+".dc6"), d2datadict.Palettes[palette]) + result.fontSprite = d2render.CreateSpriteFromDC6(dc6) woo := "Woo!\x01" fontData := fileProvider.LoadFile(font + ".tbl") if string(fontData[0:5]) != woo { diff --git a/d2render/d2ui/manager.go b/d2render/d2ui/manager.go index 869c0b19..a6f4d66e 100644 --- a/d2render/d2ui/manager.go +++ b/d2render/d2ui/manager.go @@ -1,6 +1,7 @@ package d2ui import ( + "github.com/OpenDiablo2/D2Shared/d2data/d2dc6" "github.com/OpenDiablo2/OpenDiablo2/d2audio" "github.com/OpenDiablo2/D2Shared/d2common/d2enum" "github.com/OpenDiablo2/D2Shared/d2common/d2interface" @@ -34,10 +35,11 @@ type Manager struct { // CreateManager creates a new instance of a UI manager func CreateManager(fileProvider d2interface.FileProvider, soundManager d2audio.Manager) *Manager { + dc6, _ := d2dc6.LoadDC6(fileProvider.LoadFile(d2resource.CursorDefault), d2datadict.Palettes[d2enum.Units]) result := &Manager{ pressedIndex: -1, widgets: make([]Widget, 0), - cursorSprite: d2render.CreateSprite(fileProvider.LoadFile(d2resource.CursorDefault), d2datadict.Palettes[d2enum.Units]), + cursorSprite: d2render.CreateSpriteFromDC6(dc6), clickSfx: soundManager.LoadSoundEffect(d2resource.SFXButtonClick), waitForLeftMouseUp: false, } diff --git a/d2render/d2ui/textbox.go b/d2render/d2ui/textbox.go index fe9292f6..334e976d 100644 --- a/d2render/d2ui/textbox.go +++ b/d2render/d2ui/textbox.go @@ -1,6 +1,7 @@ package d2ui import ( + "github.com/OpenDiablo2/D2Shared/d2data/d2dc6" "strings" "time" @@ -27,8 +28,9 @@ type TextBox struct { } func CreateTextbox(fileProvider d2interface.FileProvider) TextBox { + dc6, _ := d2dc6.LoadDC6(fileProvider.LoadFile(d2resource.TextBox2), d2datadict.Palettes[d2enum.Units]) result := TextBox{ - bgSprite: d2render.CreateSprite(fileProvider.LoadFile(d2resource.TextBox2), d2datadict.Palettes[d2enum.Units]), + bgSprite: d2render.CreateSpriteFromDC6(dc6), textLabel: CreateLabel(fileProvider, d2resource.FontFormal11, d2enum.Units), lineBar: CreateLabel(fileProvider, d2resource.FontFormal11, d2enum.Units), enabled: true, diff --git a/d2render/sprite.go b/d2render/sprite.go index c07cc69e..07db299c 100644 --- a/d2render/sprite.go +++ b/d2render/sprite.go @@ -1,16 +1,14 @@ package d2render import ( - "encoding/binary" "image/color" "log" "sync" + "github.com/OpenDiablo2/D2Shared/d2data/d2dc6" "github.com/OpenDiablo2/D2Shared/d2helper" "github.com/OpenDiablo2/OpenDiablo2/d2corehelper" - "github.com/OpenDiablo2/D2Shared/d2data/d2datadict" - "github.com/hajimehoshi/ebiten" ) @@ -46,8 +44,7 @@ type SpriteFrame struct { Image *ebiten.Image } -// CreateSprite creates an instance of a sprite -func CreateSprite(data []byte, palette d2datadict.PaletteRec) Sprite { +func CreateSpriteFromDC6(dc6 d2dc6.DC6File) Sprite { result := Sprite{ X: 50, Y: 50, @@ -55,96 +52,39 @@ func CreateSprite(data []byte, palette d2datadict.PaletteRec) Sprite { Direction: 0, Blend: false, ColorMod: nil, - Directions: binary.LittleEndian.Uint32(data[16:20]), - FramesPerDirection: binary.LittleEndian.Uint32(data[20:24]), + Directions: dc6.Directions, + FramesPerDirection: dc6.FramesPerDirection, Animate: false, LastFrameTime: d2helper.Now(), SpecialFrameTime: -1, StopOnLastFrame: false, - valid: false, + valid: true, AnimateBackwards: false, } - dataPointer := uint32(24) - totalFrames := result.Directions * result.FramesPerDirection - framePointers := make([]uint32, totalFrames) - for i := uint32(0); i < totalFrames; i++ { - framePointers[i] = binary.LittleEndian.Uint32(data[dataPointer : dataPointer+4]) - dataPointer += 4 - } - result.Frames = make([]SpriteFrame, totalFrames) - wg := sync.WaitGroup{} - wg.Add(int(totalFrames)) - for i := uint32(0); i < totalFrames; i++ { - go func(i uint32) { - defer wg.Done() - dataPointer := framePointers[i] - result.Frames[i] = SpriteFrame{} - result.Frames[i].Flip = binary.LittleEndian.Uint32(data[dataPointer : dataPointer+4]) - dataPointer += 4 - result.Frames[i].Width = binary.LittleEndian.Uint32(data[dataPointer : dataPointer+4]) - dataPointer += 4 - result.Frames[i].Height = binary.LittleEndian.Uint32(data[dataPointer : dataPointer+4]) - dataPointer += 4 - result.Frames[i].OffsetX = d2helper.BytesToInt32(data[dataPointer : dataPointer+4]) - dataPointer += 4 - result.Frames[i].OffsetY = d2helper.BytesToInt32(data[dataPointer : dataPointer+4]) - dataPointer += 4 - result.Frames[i].Unknown = binary.LittleEndian.Uint32(data[dataPointer : dataPointer+4]) - dataPointer += 4 - result.Frames[i].NextBlock = binary.LittleEndian.Uint32(data[dataPointer : dataPointer+4]) - dataPointer += 4 - result.Frames[i].Length = binary.LittleEndian.Uint32(data[dataPointer : dataPointer+4]) - dataPointer += 4 - result.Frames[i].ImageData = make([]int16, result.Frames[i].Width*result.Frames[i].Height) - for fi := range result.Frames[i].ImageData { - result.Frames[i].ImageData[fi] = -1 - } - x := uint32(0) - y := result.Frames[i].Height - 1 - for { - b := data[dataPointer] - dataPointer++ - if b == 0x80 { - if y == 0 { - break - } - y-- - x = 0 - } else if (b & 0x80) > 0 { - transparentPixels := b & 0x7F - for ti := byte(0); ti < transparentPixels; ti++ { - result.Frames[i].ImageData[x+(y*result.Frames[i].Width)+uint32(ti)] = -1 - } - x += uint32(transparentPixels) - } else { - for bi := 0; bi < int(b); bi++ { - result.Frames[i].ImageData[x+(y*result.Frames[i].Width)+uint32(bi)] = int16(data[dataPointer]) - dataPointer++ - } - x += uint32(b) - } + result.Frames = make([]SpriteFrame, len(dc6.Frames)) + wg := sync.WaitGroup{} + wg.Add(len(dc6.Frames)) + for i, f := range dc6.Frames { + go func(i int, frame *d2dc6.DC6Frame) { + defer wg.Done() + result.Frames[i] = SpriteFrame{ + Flip: frame.Flipped, + Width: frame.Width, + Height: frame.Height, + OffsetX: frame.OffsetX, + OffsetY: frame.OffsetY, + Unknown: frame.Unknown, + NextBlock: frame.NextBlock, + Length: frame.Length, + ImageData: frame.ImageData(), + //FrameData: frame.FrameData, // TODO: Is the field needed? + Image: frame.Image(), } - var img = make([]byte, int(result.Frames[i].Width)*int(result.Frames[i].Height)*4) - for ii := uint32(0); ii < result.Frames[i].Width*result.Frames[i].Height; ii++ { - if result.Frames[i].ImageData[ii] < 1 { // TODO: Is this == -1 or < 1? - continue - } - img[ii*4] = palette.Colors[result.Frames[i].ImageData[ii]].R - img[(ii*4)+1] = palette.Colors[result.Frames[i].ImageData[ii]].G - img[(ii*4)+2] = palette.Colors[result.Frames[i].ImageData[ii]].B - img[(ii*4)+3] = 0xFF - } - newImage, _ := ebiten.NewImage(int(result.Frames[i].Width), int(result.Frames[i].Height), ebiten.FilterNearest) - newImage.ReplacePixels(img) - result.Frames[i].Image = newImage - img = nil - }(i) + }(i, f) } wg.Wait() - result.valid = true return result - } func (v Sprite) IsValid() bool { diff --git a/go.mod b/go.mod index 096ecd0b..267be90c 100644 --- a/go.mod +++ b/go.mod @@ -3,7 +3,7 @@ module github.com/OpenDiablo2/OpenDiablo2 go 1.12 require ( - github.com/OpenDiablo2/D2Shared v0.0.0-20191124053203-a445d5d8cbe0 + github.com/OpenDiablo2/D2Shared v0.0.0-20191124224548-cf6a3b59eadb github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751 // indirect github.com/alecthomas/units v0.0.0-20190924025748-f65c72e2690d // indirect github.com/hajimehoshi/ebiten v1.11.0-alpha.0.20191121152720-3df198f68eea diff --git a/go.sum b/go.sum index 600fa3e0..69c64f5a 100644 --- a/go.sum +++ b/go.sum @@ -4,6 +4,10 @@ github.com/JoshVarga/blast v0.0.0-20180421040937-681c804fb9f0 h1:tDnuU0igiBiQFjs github.com/JoshVarga/blast v0.0.0-20180421040937-681c804fb9f0/go.mod h1:h/5OEGj4G+fpYxluLjSMZbFY011ZxAntO98nCl8mrCs= github.com/OpenDiablo2/D2Shared v0.0.0-20191124053203-a445d5d8cbe0 h1:AvMIpYAhSC3xpDwAHHXUt8LN75oeH3sHrzXys/DgJU4= github.com/OpenDiablo2/D2Shared v0.0.0-20191124053203-a445d5d8cbe0/go.mod h1:zRNOUiglwakbufN8EsNWqLLDHsZoQDA6/dI2GIu2nnU= +github.com/OpenDiablo2/D2Shared v0.0.0-20191124133124-e4652c013e40 h1:NjjCVr+4GCH9NWyfCcwYI5QrYiW3DiOhPxlvEqY2h/g= +github.com/OpenDiablo2/D2Shared v0.0.0-20191124133124-e4652c013e40/go.mod h1:zRNOUiglwakbufN8EsNWqLLDHsZoQDA6/dI2GIu2nnU= +github.com/OpenDiablo2/D2Shared v0.0.0-20191124224548-cf6a3b59eadb h1:4W+jWE86ZuDgHTg/RhWEcUoK7UpRJC/hEnlQ9/SEep4= +github.com/OpenDiablo2/D2Shared v0.0.0-20191124224548-cf6a3b59eadb/go.mod h1:fG8OQsAulB/t/RC9QeUjYAAEXZWY5kHvgWXmMgLhRwI= github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751 h1:JYp7IbQjafoB+tBA3gMyHYHrpOtNuDiK/uB5uXxq5wM= github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= github.com/alecthomas/units v0.0.0-20190924025748-f65c72e2690d h1:UQZhZ2O0vMHr2cI+DC1Mbh0TJxzA3RcLoMsFw+aXw7E= @@ -12,6 +16,8 @@ github.com/davecgh/go-spew v1.1.0 h1:ZDRjVQ15GmhC3fiQ8ni8+OwkZQO4DARzQgrnXU1Liz8 github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1 h1:QbL/5oDUmRBzO9/Z7Seo6zf912W/a6Sr4Eu0G/3Jho0= github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= +github.com/go-restruct/restruct v0.0.0-20191018101351-5fb876c952c9 h1:f25lTFrAliLucJ3G6a9PcgyaGXA6omEF+682jgfC+7U= +github.com/go-restruct/restruct v0.0.0-20191018101351-5fb876c952c9/go.mod h1:KqrpKpn4M8OLznErihXTGLlsXFGeLxHUrLRRI/1YjGk= github.com/gofrs/flock v0.7.1 h1:DP+LD/t0njgoPBvT5MJLeliUIVQR03hiKR6vezdwHlc= github.com/gofrs/flock v0.7.1/go.mod h1:F1TvTiK9OcQqauNUHlbJvyl9Qa1QvF/gOUDKA14jxHU= github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0/go.mod h1:E/TSTwGwJL78qG/PmXZO1EjYhfJinVAhrmmHX6Z8B9k= @@ -33,6 +39,8 @@ github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y= github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= github.com/pkg/browser v0.0.0-20180916011732-0a3d74bf9ce4/go.mod h1:4OwLy04Bl9Ef3GJJCoec+30X3LQs/0/m4HFRt/2LUSA= +github.com/pkg/errors v0.8.1 h1:iURUrRGxPUNPdy5/HRSm+Yj6okJ6UtLINN0Q9M4+h3I= +github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=