Documentation ¶
Index ¶
- func NewTransferDockPair(col1, row1 int16, col2, row2 int16) (*TransferDock, *TransferDock)
- type CandidateMovesPack
- func (self *CandidateMovesPack) ApplyInertia(state FloatMagnetState)
- func (self *CandidateMovesPack) CanUnlock() bool
- func (self *CandidateMovesPack) CorrectOpposing()
- func (self *CandidateMovesPack) DisableMove(targetCol, targetRow int16) bool
- func (self *CandidateMovesPack) Empty() bool
- func (self *CandidateMovesPack) TileNE() (int16, int16)
- func (self *CandidateMovesPack) TileNW() (int16, int16)
- func (self *CandidateMovesPack) TileSE() (int16, int16)
- func (self *CandidateMovesPack) TileSW() (int16, int16)
- type FallingMagnet
- type FloatMagnet
- func (self *FloatMagnet) CanDock() bool
- func (self *FloatMagnet) CanSpectre() bool
- func (self *FloatMagnet) CanSwitch() bool
- func (self *FloatMagnet) CanUndock() bool
- func (self *FloatMagnet) Column() int16
- func (self *FloatMagnet) ConfirmMove(col, row int16)
- func (self *FloatMagnet) CreateRaising() *RaisingMagnet
- func (self *FloatMagnet) Dock(dch dockChangeHandler) bool
- func (self *FloatMagnet) Draw(screen *ebiten.Image, cycle float64)
- func (self *FloatMagnet) HasPendingSwitch() bool
- func (self *FloatMagnet) IsAboveHighlight(cycle float64) bool
- func (self *FloatMagnet) LogicalY() int
- func (self *FloatMagnet) MagneticRange() int16
- func (self *FloatMagnet) MagneticSim(magnets iso.Map[Magnet]) *CandidateMovesPack
- func (self *FloatMagnet) OnDockChange(magnet *FloatMagnet)
- func (self *FloatMagnet) Polarity() PolarityType
- func (self *FloatMagnet) PreSetDockChangeHandler(dch dockChangeHandler)
- func (self *FloatMagnet) Row() int16
- func (self *FloatMagnet) Spectre() bool
- func (self *FloatMagnet) StateSim(surface iso.Map[struct{}], floatTilePolarity PolarityType, simUpdateCount int) *FallingMagnet
- func (self *FloatMagnet) Switch() bool
- func (self *FloatMagnet) Undock() bool
- func (self *FloatMagnet) Update()
- type FloatMagnetState
- type Magnet
- type MoveChoice
- type PolarityType
- type Polarized
- type PowerDock
- type RaisingMagnet
- type StaticMagnet
- type Target
- type TransferDock
- type TransferProc
- type TransferSource
- type WinPoint
- type Wire2
- type WireConn
- type WireSwitch
- func (self *WireSwitch) CanSwitch() bool
- func (self *WireSwitch) Draw(screen *ebiten.Image)
- func (self *WireSwitch) OutA() (PolarityType, color.RGBA)
- func (self *WireSwitch) OutB() (PolarityType, color.RGBA)
- func (self *WireSwitch) SetPendingSwitch()
- func (self *WireSwitch) Switch()
- func (self *WireSwitch) Update()
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func NewTransferDockPair ¶
func NewTransferDockPair(col1, row1 int16, col2, row2 int16) (*TransferDock, *TransferDock)
Types ¶
type CandidateMovesPack ¶
type CandidateMovesPack struct { Magnet *FloatMagnet NE int16 // north east move magnetism source distance, 0 if none NW int16 // north west... SE int16 // south east... SW int16 // south west... }
func (*CandidateMovesPack) ApplyInertia ¶
func (self *CandidateMovesPack) ApplyInertia(state FloatMagnetState)
what originally were distances have now been hacked to also take into account the previous inertia of the magnet... absurd
func (*CandidateMovesPack) CanUnlock ¶
func (self *CandidateMovesPack) CanUnlock() bool
must be called before applying inertia
func (*CandidateMovesPack) CorrectOpposing ¶
func (self *CandidateMovesPack) CorrectOpposing()
func (*CandidateMovesPack) DisableMove ¶
func (self *CandidateMovesPack) DisableMove(targetCol, targetRow int16) bool
Returns true if other moves are still possible, or false if no moves remain after disabling the given one.
func (*CandidateMovesPack) Empty ¶
func (self *CandidateMovesPack) Empty() bool
func (*CandidateMovesPack) TileNE ¶
func (self *CandidateMovesPack) TileNE() (int16, int16)
func (*CandidateMovesPack) TileNW ¶
func (self *CandidateMovesPack) TileNW() (int16, int16)
func (*CandidateMovesPack) TileSE ¶
func (self *CandidateMovesPack) TileSE() (int16, int16)
func (*CandidateMovesPack) TileSW ¶
func (self *CandidateMovesPack) TileSW() (int16, int16)
type FallingMagnet ¶
type FallingMagnet struct {
// contains filtered or unexported fields
}
func (*FallingMagnet) Draw ¶
func (self *FallingMagnet) Draw(screen *ebiten.Image, _ float64)
func (*FallingMagnet) FallUpdate ¶
func (self *FallingMagnet) FallUpdate() bool
if returns true, can delete already for being out of screen
func (*FallingMagnet) LogicalY ¶
func (self *FallingMagnet) LogicalY() int
type FloatMagnet ¶
type FloatMagnet struct {
// contains filtered or unexported fields
}
func NewFloatMagnet ¶
func NewFloatMagnet(col, row int16, state FloatMagnetState, polarity PolarityType) *FloatMagnet
func (*FloatMagnet) CanDock ¶
func (self *FloatMagnet) CanDock() bool
func (*FloatMagnet) CanSpectre ¶
func (self *FloatMagnet) CanSpectre() bool
func (*FloatMagnet) CanSwitch ¶
func (self *FloatMagnet) CanSwitch() bool
func (*FloatMagnet) CanUndock ¶
func (self *FloatMagnet) CanUndock() bool
func (*FloatMagnet) Column ¶
func (self *FloatMagnet) Column() int16
func (*FloatMagnet) ConfirmMove ¶
func (self *FloatMagnet) ConfirmMove(col, row int16)
func (*FloatMagnet) CreateRaising ¶
func (self *FloatMagnet) CreateRaising() *RaisingMagnet
func (*FloatMagnet) Dock ¶
func (self *FloatMagnet) Dock(dch dockChangeHandler) bool
func (*FloatMagnet) Draw ¶
func (self *FloatMagnet) Draw(screen *ebiten.Image, cycle float64)
func (*FloatMagnet) HasPendingSwitch ¶
func (self *FloatMagnet) HasPendingSwitch() bool
func (*FloatMagnet) IsAboveHighlight ¶
func (self *FloatMagnet) IsAboveHighlight(cycle float64) bool
func (*FloatMagnet) LogicalY ¶
func (self *FloatMagnet) LogicalY() int
func (*FloatMagnet) MagneticRange ¶
func (self *FloatMagnet) MagneticRange() int16
func (*FloatMagnet) MagneticSim ¶
func (self *FloatMagnet) MagneticSim(magnets iso.Map[Magnet]) *CandidateMovesPack
this is the hell we never wanted but deserved
func (*FloatMagnet) OnDockChange ¶
func (self *FloatMagnet) OnDockChange(magnet *FloatMagnet)
func (*FloatMagnet) Polarity ¶
func (self *FloatMagnet) Polarity() PolarityType
func (*FloatMagnet) PreSetDockChangeHandler ¶
func (self *FloatMagnet) PreSetDockChangeHandler(dch dockChangeHandler)
func (*FloatMagnet) Row ¶
func (self *FloatMagnet) Row() int16
func (*FloatMagnet) Spectre ¶
func (self *FloatMagnet) Spectre() bool
func (*FloatMagnet) StateSim ¶
func (self *FloatMagnet) StateSim(surface iso.Map[struct{}], floatTilePolarity PolarityType, simUpdateCount int) *FallingMagnet
func (*FloatMagnet) Switch ¶
func (self *FloatMagnet) Switch() bool
func (*FloatMagnet) Undock ¶
func (self *FloatMagnet) Undock() bool
func (*FloatMagnet) Update ¶ added in v0.0.2
func (self *FloatMagnet) Update()
type FloatMagnetState ¶
type FloatMagnetState uint8
const ( StDocked FloatMagnetState = 0 StDocking FloatMagnetState = 1 StUndocking FloatMagnetState = 2 StFloating FloatMagnetState = 3 StMoveNE FloatMagnetState = 4 StMoveNW FloatMagnetState = 5 StMoveSE FloatMagnetState = 6 StMoveSW FloatMagnetState = 7 StCreate FloatMagnetState = 8 // TODO: implement for tutorials )
type MoveChoice ¶
type MoveChoice struct { Magnet *FloatMagnet TargetColumn int16 TargetRow int16 }
func SolveCandidateMovesSystem ¶
func SolveCandidateMovesSystem(unsolvedPacks []*CandidateMovesPack, magnets iso.Map[Magnet]) []MoveChoice
type PolarityType ¶
type PolarityType uint8
const ( PolarityNeutral PolarityType = 0 PolarityPositive PolarityType = 1 PolarityNegative PolarityType = 2 PolarityHack PolarityType = 66 )
func (PolarityType) AsFunc ¶
func (self PolarityType) AsFunc() func() (PolarityType, color.RGBA)
func (PolarityType) Color ¶
func (self PolarityType) Color() color.RGBA
type Polarized ¶
type Polarized interface {
Polarity() PolarityType
}
func NewStaticSource ¶
func NewStaticSource(polarity PolarityType) Polarized
type PowerDock ¶
type PowerDock struct {
// contains filtered or unexported fields
}
func NewPowerDock ¶
func (*PowerDock) MarkEphemerousDock ¶ added in v0.0.2
func (self *PowerDock) MarkEphemerousDock()
func (*PowerDock) OnDockChange ¶
func (self *PowerDock) OnDockChange(magnet *FloatMagnet)
func (*PowerDock) PreSetMagnet ¶
func (self *PowerDock) PreSetMagnet(magnet *FloatMagnet)
type RaisingMagnet ¶
type RaisingMagnet struct {
// contains filtered or unexported fields
}
func (*RaisingMagnet) Draw ¶
func (self *RaisingMagnet) Draw(screen *ebiten.Image)
func (*RaisingMagnet) Update ¶
func (self *RaisingMagnet) Update()
func (*RaisingMagnet) Y ¶
func (self *RaisingMagnet) Y() int
type StaticMagnet ¶
type StaticMagnet struct {
// contains filtered or unexported fields
}
func NewStaticMagnet ¶
func NewStaticMagnet(col, row int16, polarityFunc func() (PolarityType, color.RGBA)) *StaticMagnet
func (*StaticMagnet) Draw ¶
func (self *StaticMagnet) Draw(screen *ebiten.Image, _ float64)
func (*StaticMagnet) IsAboveHighlight ¶
func (self *StaticMagnet) IsAboveHighlight(_ float64) bool
func (*StaticMagnet) LogicalY ¶
func (self *StaticMagnet) LogicalY() int
func (*StaticMagnet) MagneticRange ¶
func (self *StaticMagnet) MagneticRange() int16
func (*StaticMagnet) Polarity ¶
func (self *StaticMagnet) Polarity() PolarityType
func (*StaticMagnet) Update ¶
func (self *StaticMagnet) Update()
type TransferDock ¶
type TransferDock struct {
X, Y int
TargetCol, TargetRow int16
Source *TransferSource
}
func (*TransferDock) Draw ¶
func (self *TransferDock) Draw(screen *ebiten.Image)
func (*TransferDock) Update ¶ added in v0.0.2
func (self *TransferDock) Update()
type TransferProc ¶ added in v0.0.2
type TransferProc struct {
// contains filtered or unexported fields
}
A TransferProc is a temporary struct to assist in the dock/undock synchronization process between two magnets and transfer docks.
func NewTransferProc ¶ added in v0.0.2
func NewTransferProc(transfer *TransferSource, magnet *FloatMagnet) TransferProc
func (TransferProc) OnDockChange ¶ added in v0.0.2
func (self TransferProc) OnDockChange(magnet *FloatMagnet)
type TransferSource ¶ added in v0.0.2
type TransferSource struct {
// contains filtered or unexported fields
}
TransferSource is a helper struct to allow some ephemeral graphical effects that require connecting both transferDocks from a single object.
func (*TransferSource) OnDockChange ¶ added in v0.0.2
func (self *TransferSource) OnDockChange(magnet *FloatMagnet)
func (*TransferSource) Output ¶ added in v0.0.2
func (self *TransferSource) Output() (PolarityType, imgcolor.RGBA)
func (*TransferSource) Update ¶ added in v0.0.2
func (self *TransferSource) Update()
type WinPoint ¶
type WinPoint struct {
Col, Row int16
Polarity PolarityType
}
type WireSwitch ¶
type WireSwitch struct {
// contains filtered or unexported fields
}
func NewWireSwitch ¶
func NewWireSwitch(col, row int16, src, a, b WireConn, polaritySrcFunc func() (PolarityType, color.RGBA)) *WireSwitch
func (*WireSwitch) CanSwitch ¶
func (self *WireSwitch) CanSwitch() bool
func (*WireSwitch) Draw ¶
func (self *WireSwitch) Draw(screen *ebiten.Image)
func (*WireSwitch) OutA ¶
func (self *WireSwitch) OutA() (PolarityType, color.RGBA)
func (*WireSwitch) OutB ¶
func (self *WireSwitch) OutB() (PolarityType, color.RGBA)
func (*WireSwitch) SetPendingSwitch ¶
func (self *WireSwitch) SetPendingSwitch()
func (*WireSwitch) Switch ¶
func (self *WireSwitch) Switch()
func (*WireSwitch) Update ¶ added in v0.0.2
func (self *WireSwitch) Update()
Click to show internal directories.
Click to hide internal directories.