1
1
mirror of https://github.com/OpenDiablo2/OpenDiablo2 synced 2024-06-09 09:20:44 +00:00

Add RenderFromOrigin method to Animation (#317)

* Configuration cleanup

* Cleanup

* Add RenderFromOrigin option
This commit is contained in:
Alex Yatskov 2020-02-24 20:04:01 -08:00 committed by GitHub
parent 6f2c212417
commit 418c798c2c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -41,8 +41,9 @@ type Animation struct {
lastFrameTime float64
playedCount int
compositeMode d2render.CompositeMode
colorMod color.Color
compositeMode d2render.CompositeMode
colorMod color.Color
originAtBottom bool
playMode playMode
playLength float64
@ -116,8 +117,9 @@ func createAnimationFromDCC(dcc *d2dcc.DCC, palette *d2datadict.PaletteRec, tran
func createAnimationFromDC6(dc6 *d2dc6.DC6File) (*Animation, error) {
animation := &Animation{
playLength: 1.0,
playLoop: true,
playLength: 1.0,
playLoop: true,
originAtBottom: true,
}
for frameIndex, dc6Frame := range dc6.Frames {
@ -218,6 +220,17 @@ func (a *Animation) Render(target d2render.Surface) error {
return target.Render(frame.image)
}
func (a *Animation) RenderFromOrigin(target d2render.Surface) error {
if a.originAtBottom {
direction := a.directions[a.directionIndex]
frame := direction.frames[a.frameIndex]
target.PushTranslation(0, -frame.height)
defer target.Pop()
}
return a.Render(target)
}
func (a *Animation) GetFrameSize(frameIndex int) (int, int, error) {
direction := a.directions[a.directionIndex]
if frameIndex >= len(direction.frames) {