dev

package
v0.0.3 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Dec 21, 2022 License: MIT Imports: 8 Imported by: 0

Documentation

Index

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 Magnet

type Magnet interface {
	Polarized
	MagneticRange() int16
	Draw(screen *ebiten.Image, cycle float64)
	LogicalY() int
	IsAboveHighlight(cycle float64) bool
}

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 NewPowerDock(col, row int16) *PowerDock

func (*PowerDock) Draw

func (self *PowerDock) Draw(screen *ebiten.Image)

func (*PowerDock) MarkEphemerousDock added in v0.0.2

func (self *PowerDock) MarkEphemerousDock()

func (*PowerDock) OnDockChange

func (self *PowerDock) OnDockChange(magnet *FloatMagnet)

func (*PowerDock) Output

func (self *PowerDock) Output() (PolarityType, color.RGBA)

func (*PowerDock) PreSetMagnet

func (self *PowerDock) PreSetMagnet(magnet *FloatMagnet)

func (*PowerDock) Update added in v0.0.2

func (self *PowerDock) Update()

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 Target added in v0.0.2

type Target struct {
	// contains filtered or unexported fields
}

func NewTarget added in v0.0.2

func NewTarget(initCol, initRow int16, looping bool) *Target

func (*Target) AddPos added in v0.0.2

func (self *Target) AddPos(col, row int16)

func (*Target) Draw added in v0.0.2

func (self *Target) Draw(screen *ebiten.Image)

func (*Target) GetColRow added in v0.0.2

func (self *Target) GetColRow() (int16, int16)

func (*Target) Move added in v0.0.2

func (self *Target) Move()

func (*Target) Update added in v0.0.2

func (self *Target) 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
}

func (*WinPoint) Draw

func (self *WinPoint) Draw(screen *ebiten.Image)

func (*WinPoint) Update added in v0.0.2

func (self *WinPoint) Update()

type Wire2

type Wire2 struct {
	// contains filtered or unexported fields
}

func NewWire2

func NewWire2(col, row int16, a, b WireConn, polaritySrcFunc func() (PolarityType, color.RGBA)) *Wire2

func (*Wire2) Draw

func (self *Wire2) Draw(screen *ebiten.Image)

func (*Wire2) Update added in v0.0.2

func (self *Wire2) Update()

type WireConn

type WireConn uint8
const (
	ConnNW WireConn = 0
	ConnNE WireConn = 1
	ConnSW WireConn = 2
	ConnSE WireConn = 3
)

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()

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL