Rewrite to Go: engine, plugin system, D2R plugin, API, loot filter

This commit is contained in:
Hoid 2026-02-14 09:43:39 +00:00
parent e0282a7111
commit 3b363192f2
60 changed files with 1576 additions and 3407 deletions

65
plugins/d2r/plugin.go Normal file
View file

@ -0,0 +1,65 @@
// Package d2r implements the Diablo II: Resurrected game plugin.
package d2r
import (
"image"
"git.cloonar.com/openclawd/iso-bot/pkg/plugin"
)
// Plugin implements plugin.Plugin for D2R.
type Plugin struct {
config Config
services plugin.EngineServices
detector *Detector
reader *Reader
}
// New creates a new D2R plugin with default config.
func New() *Plugin {
return &Plugin{
config: DefaultConfig(),
}
}
// Info returns plugin metadata.
func (p *Plugin) Info() plugin.PluginInfo {
return plugin.PluginInfo{
ID: "d2r",
Name: "Diablo II: Resurrected",
Version: "0.1.0",
Description: "Bot plugin for Diablo II: Resurrected — MF runs, rune farming, and more",
Resolution: image.Point{X: 1920, Y: 1080},
}
}
// Init initializes the plugin with engine services.
func (p *Plugin) Init(services plugin.EngineServices) error {
p.services = services
p.detector = NewDetector(p.config)
p.reader = NewReader(p.config)
return nil
}
// Detector returns the game state detector.
func (p *Plugin) Detector() plugin.GameDetector {
return p.detector
}
// Reader returns the screen reader.
func (p *Plugin) Reader() plugin.ScreenReader {
return p.reader
}
// Routines returns available farming routines.
func (p *Plugin) Routines() []plugin.Routine {
return []plugin.Routine{
// TODO: Initialize routines with plugin services
}
}
// DefaultLootFilter returns the default D2R loot filter.
func (p *Plugin) DefaultLootFilter() plugin.LootFilter {
// TODO: Return default rule engine
return nil
}