feat(scum): add bounded vehicle spawn adapter
This commit is contained in:
@@ -17,6 +17,7 @@ type SafeAdapter interface {
|
||||
PatchGameState(context.Context, map[string]any) (map[string]any, error)
|
||||
DeliverReward(context.Context, map[string]any) (map[string]any, error)
|
||||
NotifyPlayer(context.Context, map[string]any) (map[string]any, error)
|
||||
SpawnVehicle(context.Context, map[string]any) (map[string]any, error)
|
||||
}
|
||||
|
||||
type HandlerAvailability struct {
|
||||
@@ -54,6 +55,9 @@ func NewHandlerRegistry(availability HandlerAvailability, adapter SafeAdapter) *
|
||||
registry.handlers["player.notify"] = func(ctx context.Context, payload map[string]any) (map[string]any, error) {
|
||||
return adapter.NotifyPlayer(ctx, payload)
|
||||
}
|
||||
registry.handlers["vehicle.spawn"] = func(ctx context.Context, payload map[string]any) (map[string]any, error) {
|
||||
return adapter.SpawnVehicle(ctx, payload)
|
||||
}
|
||||
return registry
|
||||
}
|
||||
|
||||
@@ -189,6 +193,18 @@ func validateCommandPayload(commandType string, payload map[string]any) error {
|
||||
return fmt.Errorf("notification payload is invalid")
|
||||
}
|
||||
return nil
|
||||
case "vehicle.spawn":
|
||||
if err := require("vehicleCode"); err != nil {
|
||||
return err
|
||||
}
|
||||
if err := noUnknown("vehicleCode"); err != nil {
|
||||
return err
|
||||
}
|
||||
vehicleCode, vehicleOK := payload["vehicleCode"].(string)
|
||||
if !vehicleOK || !supportedVehicleSpawnCode(vehicleCode) {
|
||||
return fmt.Errorf("vehicle spawn payload is invalid")
|
||||
}
|
||||
return nil
|
||||
default:
|
||||
return fmt.Errorf("command type is not declared")
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user