Documentation ¶
Index ¶
- Constants
- func ActorCullBounds(center coord.Cell) coord.Bounds
- func LoginAndConnectActor(loginConn PreLoginConn, actorConnector ActorConnector) error
- func NewActor(id entity.Id, dsactor datastore.Actor, stateWriter InitialStateWriter) *actor
- func NewSimShard(c ShardConfig) (*http.Server, error)
- func NewSimulation(actorIndex *ActorIndexLocker, sim rpg2d.RunningSimulation) rpg2d.RunningSimulation
- type ActorConnector
- type ActorEntityState
- type ActorIndex
- type ActorIndexLocker
- type AssailEntityState
- type ChatRequest
- type ChatRequestType
- type ClientSettings
- type Conn
- type ConnectedActorConn
- type DiffWriter
- type EncodedType
- type InitialStateWriter
- type InputReceiver
- type LoggedInConn
- type MoveRequest
- type MoveRequestType
- type PreLoginConn
- type ReqConnect
- type ReqCreate
- type ReqLogin
- type RespActorAlreadyConnected
- type RespActorDoesntExist
- type RespActorExists
- type RespAuthFailed
- type RespCreateSuccess
- type RespLoginSuccess
- type SayEntityState
- type ShardConfig
- type SimulationSettings
- type UseRequest
- type UseRequestType
- type WallEntityState
Constants ¶
View Source
const RespDisconnect = "disconnected"
Variables ¶
This section is empty.
Functions ¶
func LoginAndConnectActor ¶
func LoginAndConnectActor(loginConn PreLoginConn, actorConnector ActorConnector) error
func NewActor ¶
func NewActor(id entity.Id, dsactor datastore.Actor, stateWriter InitialStateWriter) *actor
func NewSimShard ¶
func NewSimShard(c ShardConfig) (*http.Server, error)
func NewSimulation ¶
func NewSimulation(actorIndex *ActorIndexLocker, sim rpg2d.RunningSimulation) rpg2d.RunningSimulation
Types ¶
type ActorConnector ¶
type ActorConnector func(datastore.Actor, InitialStateWriter) (InputReceiver, entity.State)
type ActorEntityState ¶
type ActorEntityState struct { Id entity.Id `json:"id"` Name string `json:"name"` // Movement and position Facing coord.Direction `json:"facing"` Cell coord.Cell `json:"cell"` PathAction *coord.PathActionState `json:"pathAction"` // Health and Mana Hp int `json:"hp"` HpMax int `json:"hpMax"` Mp int `json:"mp"` MpMax int `json:"mpMax"` // contains filtered or unexported fields }
func (ActorEntityState) Bounds ¶
func (e ActorEntityState) Bounds() coord.Bounds
func (ActorEntityState) EntityId ¶
func (e ActorEntityState) EntityId() entity.Id
func (ActorEntityState) IsDifferentFrom ¶
func (e ActorEntityState) IsDifferentFrom(other entity.State) (different bool)
type ActorIndexLocker ¶
A wrapper for actorIndex that provides safety for concurrent access.
func NewActorIndexLocker ¶
func NewActorIndexLocker(around ActorIndex) *ActorIndexLocker
func (*ActorIndexLocker) Lock ¶
func (m *ActorIndexLocker) Lock() ActorIndex
func (*ActorIndexLocker) RLock ¶
func (m *ActorIndexLocker) RLock() ActorIndex
func (*ActorIndexLocker) Unlock ¶
func (m *ActorIndexLocker) Unlock(index ActorIndex)
type AssailEntityState ¶
type AssailEntityState struct { Type string `json:"type"` Id entity.Id `json:"id"` SpawnedBy entity.Id `json:"spawnedBy"` SpawnedAt stime.Time `json:"spawnedAt"` Cell coord.Cell `json:"cell"` }
func (AssailEntityState) Bounds ¶
func (e AssailEntityState) Bounds() coord.Bounds
func (AssailEntityState) EntityId ¶
func (e AssailEntityState) EntityId() entity.Id
func (AssailEntityState) IsDifferentFrom ¶
func (e AssailEntityState) IsDifferentFrom(entity.State) bool
type ChatRequest ¶
type ChatRequest struct { ChatRequestType stime.Time Msg string }
type ChatRequestType ¶
type ChatRequestType int
const ( CR_ERROR ChatRequestType = iota CR_SAY CR_SIZE )
func (ChatRequestType) String ¶
func (i ChatRequestType) String() string
type ClientSettings ¶
type ClientSettings struct { JsMain string WebsocketURL string Simulation SimulationSettings }
A set of data that the index page template will have access to when it is executed.
type Conn ¶
type Conn interface { EncodeAndSend(EncodedType, interface{}) error ReadNextType() (EncodedType, error) Decode(interface{}) error }
func NewGobConn ¶
func NewGobConn(rw io.ReadWriter) Conn
type ConnectedActorConn ¶
type ConnectedActorConn interface {
HandleIO() error
}
type DiffWriter ¶
type DiffWriter interface {
WriteWorldStateDiff(rpg2d.WorldStateDiff)
}
type EncodedType ¶
type EncodedType int
Used to determine the next type that's in the buffer so we can decode it into a real value. We'll decode an encoded type and switch on its value so we'll have the correct value to decode into.
const ( ET_ERROR EncodedType = iota ET_DISCONNECT ET_REQ_LOGIN ET_REQ_CREATE ET_RESP_ACTOR_ALREADY_CONNECTED ET_RESP_AUTH_FAILED ET_RESP_ACTOR_EXISTS ET_RESP_ACTOR_DOESNT_EXIST ET_RESP_LOGIN_SUCCESS ET_RESP_CREATE_SUCCESS ET_REQ_CONNECT ET_CONNECTED ET_WORLD_STATE ET_WORLD_STATE_DIFF ET_REQ_MOVE ET_REQ_USE ET_REQ_CHAT )
func (EncodedType) String ¶
func (i EncodedType) String() string
type InitialStateWriter ¶
type InitialStateWriter interface {
WriteWorldState(rpg2d.WorldState) DiffWriter
}
type InputReceiver ¶
type InputReceiver interface { SubmitMoveRequest(MoveRequest) SubmitUseRequest(UseRequest) SubmitChatRequest(ChatRequest) Close() }
type LoggedInConn ¶
type LoggedInConn interface {
HandleConnect(ActorConnector) (ConnectedActorConn, error)
}
type MoveRequest ¶
type MoveRequest struct { MoveRequestType stime.Time coord.Direction }
type MoveRequestType ¶
type MoveRequestType int
const ( MR_ERROR MoveRequestType = iota MR_MOVE MR_MOVE_CANCEL MR_SIZE )
func (MoveRequestType) String ¶
func (i MoveRequestType) String() string
type PreLoginConn ¶
type PreLoginConn interface {
HandleLogin() (LoggedInConn, error)
}
func NewPreLoginConn ¶
func NewPreLoginConn(conn Conn, ds datastore.Datastore) PreLoginConn
type ReqConnect ¶
type ReqConnect struct{ Name string }
type RespActorAlreadyConnected ¶
type RespActorAlreadyConnected struct{ Name string }
type RespActorDoesntExist ¶
type RespActorDoesntExist struct{ Name, Password string }
type RespActorExists ¶
type RespActorExists struct{ Name string }
type RespAuthFailed ¶
type RespAuthFailed struct{ Name string }
type RespCreateSuccess ¶
type RespCreateSuccess struct{ Name string }
type RespLoginSuccess ¶
type RespLoginSuccess struct{ Name string }
type SayEntityState ¶
type SayEntityState struct { Type string `json:"type"` Id entity.Id `json:"id"` SaidBy entity.Id `json:"saidBy"` SaidAt stime.Time `json:"saidAt"` Cell coord.Cell `json:"cell"` Msg string `json:"msg"` }
func (SayEntityState) Bounds ¶
func (e SayEntityState) Bounds() coord.Bounds
func (SayEntityState) EntityId ¶
func (e SayEntityState) EntityId() entity.Id
func (SayEntityState) IsDifferentFrom ¶
func (e SayEntityState) IsDifferentFrom(other entity.State) bool
type ShardConfig ¶
type ShardConfig struct { // Flag whether the server is running from heroku OnHeroku bool // FQDN that the server is running at Domain, Port, JsDir, JsMain, AssetDir, CssDir string // A template for the index page. The template // will be executed with a game.ClientSettings{} struct. IndexTmpl *template.Template // A mux that http server will use. Is provided so the // user can extend the server with additional routes. Mux *http.ServeMux // A handler that will be used instead of the Mux // when setting the Handler field of the *http.Server. // If Handler is nil, the Mux will be used instead. Handler http.Handler }
type SimulationSettings ¶
type SimulationSettings struct {
Width, Height int
}
Part of the ClientSettings that are rpg2d.Simulation specific
type UseRequest ¶
type UseRequest struct { UseRequestType stime.Time Skill string }
type UseRequestType ¶
type UseRequestType int
const ( UR_ERROR UseRequestType = iota UR_USE UR_USE_CANCEL UR_SIZE )
func (UseRequestType) String ¶
func (i UseRequestType) String() string
type WallEntityState ¶
type WallEntityState struct { Type string `json:"type"` Id entity.Id `json:"id"` Cell coord.Cell `jsonZ:"cell"` }
func (WallEntityState) Bounds ¶
func (w WallEntityState) Bounds() coord.Bounds
func (WallEntityState) EntityId ¶
func (w WallEntityState) EntityId() entity.Id
func (WallEntityState) IsDifferentFrom ¶
func (w WallEntityState) IsDifferentFrom(entity.State) bool
Source Files ¶
Click to show internal directories.
Click to hide internal directories.