Adding modding folder with a hacked build.
This commit is contained in:
@@ -0,0 +1,65 @@
|
||||
package movies
|
||||
|
||||
import (
|
||||
"context"
|
||||
|
||||
"github.com/inkyblackness/hacked/ss1/content/movie"
|
||||
)
|
||||
|
||||
type compressionTask struct {
|
||||
width int
|
||||
height int
|
||||
input movie.Scene
|
||||
ctx context.Context
|
||||
ctxCancel context.CancelFunc
|
||||
resultChan chan compressionResult
|
||||
}
|
||||
|
||||
type compressionResult interface{}
|
||||
|
||||
type compressionAborted struct{}
|
||||
|
||||
type compressionFailed struct{ err error }
|
||||
|
||||
type compressionFinished struct{ scene movie.HighResScene }
|
||||
|
||||
func newCompressionTask(scene movie.Scene, width, height int) *compressionTask {
|
||||
task := &compressionTask{
|
||||
width: width,
|
||||
height: height,
|
||||
input: scene,
|
||||
resultChan: make(chan compressionResult),
|
||||
}
|
||||
task.ctx, task.ctxCancel = context.WithCancel(context.Background())
|
||||
|
||||
return task
|
||||
}
|
||||
|
||||
func (task *compressionTask) run() {
|
||||
defer close(task.resultChan)
|
||||
highResScene, err := movie.HighResSceneFrom(task.ctx, task.input, task.width, task.height)
|
||||
switch {
|
||||
case task.ctx.Err() != nil:
|
||||
task.resultChan <- compressionAborted{}
|
||||
case err != nil:
|
||||
task.resultChan <- compressionFailed{err: err}
|
||||
default:
|
||||
task.resultChan <- compressionFinished{scene: highResScene}
|
||||
}
|
||||
}
|
||||
|
||||
func (task *compressionTask) update() compressionResult {
|
||||
select {
|
||||
case result, ok := <-task.resultChan:
|
||||
if ok {
|
||||
return result
|
||||
}
|
||||
return compressionAborted{}
|
||||
default:
|
||||
return nil
|
||||
}
|
||||
}
|
||||
|
||||
func (task *compressionTask) cancel() {
|
||||
task.ctxCancel()
|
||||
}
|
||||
Reference in New Issue
Block a user