game

package
v0.0.0-...-28fda05 Latest Latest
Warning

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

Go to latest
Published: Sep 8, 2022 License: AGPL-3.0 Imports: 14 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var AIFightPhase = make(map[protos.CardType]func(e *FightPhaseIdle, card ICard) bool)
View Source
var AIMainPhase = make(map[protos.CardType]func(e *MainPhaseIdle, card ICard) bool)
View Source
var AISendPhase = make(map[protos.CardType]func(e *SendPhaseIdle, card ICard) bool)
View Source
var AISkillMainPhase = make(map[SkillId]func(e *MainPhaseIdle, skill ISkill) bool)
View Source
var Cache = make(map[uint32]*Game)
View Source
var DefaultDeck []ICard
View Source
var RoleCache []*RoleSkillsData

Functions

func Post

func Post(callback func())

func Start

func Start(totalCount int)

Types

type AfterDieGiveCard

type AfterDieGiveCard struct {
	DieGiveCard *WaitForDieGiveCard
}

func (*AfterDieGiveCard) Resolve

func (dg *AfterDieGiveCard) Resolve() (next Fsm, continueResolve bool)

type BaseCard

type BaseCard struct {
	Id        uint32
	Color     []protos.Color
	Direction protos.Direction
	Lockable  bool
}

func (*BaseCard) CanLock

func (card *BaseCard) CanLock() bool

func (*BaseCard) GetColors

func (card *BaseCard) GetColors() []protos.Color

func (*BaseCard) GetDirection

func (card *BaseCard) GetDirection() protos.Direction

func (*BaseCard) GetId

func (card *BaseCard) GetId() uint32

func (*BaseCard) ToPbCard

func (card *BaseCard) ToPbCard() *protos.Card

type BasePlayer

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

func (*BasePlayer) AddCards

func (p *BasePlayer) AddCards(cards ...ICard)

func (*BasePlayer) AddMessageCards

func (p *BasePlayer) AddMessageCards(cards ...ICard)

func (*BasePlayer) AddSkillUseCount

func (p *BasePlayer) AddSkillUseCount(skillId SkillId)

func (*BasePlayer) CheckThreeSameMessageCard

func (p *BasePlayer) CheckThreeSameMessageCard(colors ...protos.Color) bool

func (*BasePlayer) DeleteAllCards

func (p *BasePlayer) DeleteAllCards() []ICard

func (*BasePlayer) DeleteAllMessageCards

func (p *BasePlayer) DeleteAllMessageCards() []ICard

func (*BasePlayer) DeleteCard

func (p *BasePlayer) DeleteCard(cardId uint32)

func (*BasePlayer) DeleteMessageCard

func (p *BasePlayer) DeleteMessageCard(cardId uint32)

func (*BasePlayer) Draw

func (p *BasePlayer) Draw(count int)

func (*BasePlayer) FindCard

func (p *BasePlayer) FindCard(cardId uint32) ICard

func (*BasePlayer) FindMessageCard

func (p *BasePlayer) FindMessageCard(cardId uint32) ICard

func (*BasePlayer) FindSkill

func (p *BasePlayer) FindSkill(skillId SkillId) ISkill

func (*BasePlayer) GetAbstractLocation

func (p *BasePlayer) GetAbstractLocation(location int) int

func (*BasePlayer) GetAlternativeLocation

func (p *BasePlayer) GetAlternativeLocation(location int) uint32

func (*BasePlayer) GetCards

func (p *BasePlayer) GetCards() map[uint32]ICard

func (*BasePlayer) GetGame

func (p *BasePlayer) GetGame() *Game

func (*BasePlayer) GetIdentity

func (p *BasePlayer) GetIdentity() (protos.Color, protos.SecretTask)

func (*BasePlayer) GetMessageCards

func (p *BasePlayer) GetMessageCards() map[uint32]ICard

func (*BasePlayer) GetRole

func (p *BasePlayer) GetRole() protos.Role

func (*BasePlayer) GetSkillUseCount

func (p *BasePlayer) GetSkillUseCount(skillId SkillId) int

func (*BasePlayer) GetSkills

func (p *BasePlayer) GetSkills() []ISkill

func (*BasePlayer) HasNoIdentity

func (p *BasePlayer) HasNoIdentity() bool

func (*BasePlayer) IncrSeq

func (p *BasePlayer) IncrSeq()

func (*BasePlayer) Init

func (p *BasePlayer) Init(game *Game, location int, identity protos.Color, secretTask protos.SecretTask, roleSkillsData *RoleSkillsData)

func (*BasePlayer) IsAlive

func (p *BasePlayer) IsAlive() bool

func (*BasePlayer) IsLose

func (p *BasePlayer) IsLose() bool

func (*BasePlayer) IsRoleFaceUp

func (p *BasePlayer) IsRoleFaceUp() bool

func (*BasePlayer) Location

func (p *BasePlayer) Location() int

func (*BasePlayer) NotifyAddHandCard

func (p *BasePlayer) NotifyAddHandCard(int, int, ...ICard)

func (*BasePlayer) ResetSkillUseCount

func (p *BasePlayer) ResetSkillUseCount()

func (*BasePlayer) SetAlive

func (p *BasePlayer) SetAlive(alive bool)

func (*BasePlayer) SetHasNoIdentity

func (p *BasePlayer) SetHasNoIdentity(hasNoIdentity bool)

func (*BasePlayer) SetIdentity

func (p *BasePlayer) SetIdentity(identity protos.Color, secretTask protos.SecretTask)

func (*BasePlayer) SetLose

func (p *BasePlayer) SetLose(lose bool)

func (*BasePlayer) SetSkills

func (p *BasePlayer) SetSkills(skills []ISkill)

type CheckKillerWin

type CheckKillerWin struct {
	WhoseTurn       IPlayer
	DiedQueue       []IPlayer
	AfterDieResolve Fsm
}

CheckKillerWin 判断镇压者获胜条件,或者只剩一个人存活

func (*CheckKillerWin) Resolve

func (ck *CheckKillerWin) Resolve() (next Fsm, continueResolve bool)

type CheckWinOrDie

type CheckWinOrDie struct {
	WhoseTurn       IPlayer
	ReceiveOrder    []IPlayer
	AfterDieResolve Fsm
}

CheckWinOrDie 判断是否胜利或者有人濒死

func (*CheckWinOrDie) Resolve

func (cw *CheckWinOrDie) Resolve() (next Fsm, continueResolve bool)

type CurrentCard

type CurrentCard struct {
	Card         ICard
	Player       int
	TargetPlayer int
}

type Deck

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

func NewDeck

func NewDeck(game *Game) *Deck

func (*Deck) Discard

func (d *Deck) Discard(cards ...ICard)

func (*Deck) Draw

func (d *Deck) Draw(n int) []ICard

func (*Deck) GetDeckCount

func (d *Deck) GetDeckCount() int

func (*Deck) GetNextId

func (d *Deck) GetNextId() uint32

func (*Deck) Shuffle

func (d *Deck) Shuffle()

type DieSkill

type DieSkill struct {
	WhoseTurn       IPlayer
	DiedIndex       int
	DiedQueue       []IPlayer
	AskWhom         IPlayer
	ReceiveOrder    []IPlayer
	AfterDieResolve Fsm
}

DieSkill 死亡角色发动技能

func (*DieSkill) Resolve

func (ds *DieSkill) Resolve() (next Fsm, continueResolve bool)

type DieSkillNext

type DieSkillNext struct {
	DieSkill *DieSkill
}

func (*DieSkillNext) Resolve

func (ds *DieSkillNext) Resolve() (next Fsm, continueResolve bool)

type DrawPhase

type DrawPhase struct {
	Player IPlayer
}

DrawPhase 摸牌阶段

func (*DrawPhase) Resolve

func (dp *DrawPhase) Resolve() (next Fsm, continueResolve bool)

type FightPhaseIdle

type FightPhaseIdle struct {
	WhoseTurn           IPlayer
	MessageCard         ICard
	InFrontOfWhom       IPlayer
	WhoseFightTurn      IPlayer
	IsMessageCardFaceUp bool
}

FightPhaseIdle 争夺阶段空闲时点

func (*FightPhaseIdle) Resolve

func (fp *FightPhaseIdle) Resolve() (next Fsm, continueResolve bool)

type FightPhaseNext

type FightPhaseNext struct {
	FightPhase *FightPhaseIdle
}

FightPhaseNext 争夺阶段即将询问下一个人时

func (*FightPhaseNext) Resolve

func (fp *FightPhaseNext) Resolve() (next Fsm, continueResolve bool)

type Fsm

type Fsm interface {
	Resolve() (next Fsm, continueResolve bool)
}

type Game

type Game struct {
	Id      uint32
	Players []IPlayer
	Deck    *Deck
	// contains filtered or unexported fields
}

func (*Game) AddListeningSkill

func (game *Game) AddListeningSkill(skill ISkill)

func (*Game) ContinueResolve

func (game *Game) ContinueResolve()

func (*Game) DealListeningSkills

func (game *Game) DealListeningSkills() (nextFsm Fsm, continueResolve bool, ok bool)

func (*Game) GetDeck

func (game *Game) GetDeck() *Deck

func (*Game) GetFsm

func (game *Game) GetFsm() Fsm

func (*Game) GetPlayers

func (game *Game) GetPlayers() []IPlayer

func (*Game) PlayerDiscardCard

func (game *Game) PlayerDiscardCard(player IPlayer, cards ...ICard)

func (*Game) Resolve

func (game *Game) Resolve(fsm Fsm)

func (*Game) TryContinueResolveProtocol

func (game *Game) TryContinueResolveProtocol(player IPlayer, pb proto.Message)

type HumanPlayer

type HumanPlayer struct {
	BasePlayer
	cellnet.Session
	Seq   uint32
	Timer *time.Timer
	// contains filtered or unexported fields
}

func (*HumanPlayer) IncrSeq

func (r *HumanPlayer) IncrSeq()

func (*HumanPlayer) Init

func (r *HumanPlayer) Init(game *Game, location int, identity protos.Color, secretTask protos.SecretTask, roleSkillsData *RoleSkillsData)

func (*HumanPlayer) NotifyAddHandCard

func (r *HumanPlayer) NotifyAddHandCard(location int, unknownCount int, cards ...ICard)

func (*HumanPlayer) NotifyAskForChengQing

func (r *HumanPlayer) NotifyAskForChengQing(whoDie IPlayer, askWhom IPlayer)

func (*HumanPlayer) NotifyChooseReceiveCard

func (r *HumanPlayer) NotifyChooseReceiveCard(player IPlayer)

func (*HumanPlayer) NotifyDie

func (r *HumanPlayer) NotifyDie(location int, loseGame bool)

func (*HumanPlayer) NotifyDrawPhase

func (r *HumanPlayer) NotifyDrawPhase(player IPlayer)

func (*HumanPlayer) NotifyFightPhase

func (r *HumanPlayer) NotifyFightPhase(whoseTurn, inFrontOfWhom, whoseFightTurn IPlayer, messageCard ICard, isMessageFaceUp bool, waitSecond uint32)

func (*HumanPlayer) NotifyMainPhase

func (r *HumanPlayer) NotifyMainPhase(player IPlayer, waitSecond uint32)

func (*HumanPlayer) NotifyReceivePhase

func (r *HumanPlayer) NotifyReceivePhase(whoseTurn, inFrontOfWhom IPlayer, messageCard ICard)

func (*HumanPlayer) NotifyReceivePhaseWithWaiting

func (r *HumanPlayer) NotifyReceivePhaseWithWaiting(whoseTurn, inFrontOfWhom IPlayer, messageCard ICard, waitingPlayer IPlayer, waitSecond uint32)

func (*HumanPlayer) NotifySendMessageCard

func (r *HumanPlayer) NotifySendMessageCard(player, targetPlayer IPlayer, lockedPlayers []IPlayer, messageCard ICard, dir protos.Direction)

func (*HumanPlayer) NotifySendPhase

func (r *HumanPlayer) NotifySendPhase(whoseTurn, inFrontOfWhom IPlayer, lockedPlayers []IPlayer, messageCard ICard, dir protos.Direction, isMessageFaceUp bool, waitSecond uint32)

func (*HumanPlayer) NotifySendPhaseStart

func (r *HumanPlayer) NotifySendPhaseStart(player IPlayer, waitSecond uint32)

func (*HumanPlayer) NotifyWin

func (r *HumanPlayer) NotifyWin(declareWinner []IPlayer, winner []IPlayer)

func (*HumanPlayer) String

func (r *HumanPlayer) String() string

func (*HumanPlayer) WaitForDieGiveCard

func (r *HumanPlayer) WaitForDieGiveCard(whoDie IPlayer)

type ICard

type ICard interface {
	GetId() uint32
	GetType() protos.CardType
	GetColors() []protos.Color
	GetDirection() protos.Direction
	CanLock() bool
	CanUse(g *Game, user IPlayer, args ...interface{}) bool
	Execute(g *Game, user IPlayer, args ...interface{})
	ToPbCard() *protos.Card
	String() string
}

type IPlayer

type IPlayer interface {
	Init(game *Game, location int, identity protos.Color, secretTask protos.SecretTask, roleSkillsData *RoleSkillsData)
	IncrSeq()
	GetGame() *Game
	Location() int
	GetAbstractLocation(location int) int
	GetAlternativeLocation(location int) uint32
	NotifyAddHandCard(location int, unknownCount int, cards ...ICard)
	Draw(count int)
	AddCards(cards ...ICard)
	GetCards() map[uint32]ICard
	FindCard(cardId uint32) ICard
	DeleteCard(card uint32)
	DeleteAllCards() []ICard
	AddMessageCards(cards ...ICard)
	GetMessageCards() map[uint32]ICard
	FindMessageCard(cardId uint32) ICard
	DeleteMessageCard(cardId uint32)
	DeleteAllMessageCards() []ICard
	CheckThreeSameMessageCard(colors ...protos.Color) bool
	NotifyDrawPhase(player IPlayer)
	NotifyMainPhase(player IPlayer, waitSecond uint32)
	NotifySendPhaseStart(player IPlayer, waitSecond uint32)
	NotifySendMessageCard(player, targetPlayer IPlayer, lockedPlayers []IPlayer, messageCard ICard, dir protos.Direction)
	NotifySendPhase(whoseTurn, inFrontOfWhom IPlayer, lockedPlayers []IPlayer, messageCard ICard, dir protos.Direction, isMessageFaceUp bool, waitSecond uint32)
	NotifyChooseReceiveCard(player IPlayer)
	NotifyFightPhase(whoseTurn, inFrontOfWhom, whoseFightTurn IPlayer, messageCard ICard, isMessageFaceUp bool, waitSecond uint32)
	NotifyReceivePhase(whoseTurn, inFrontOfWhom IPlayer, messageCard ICard)
	NotifyReceivePhaseWithWaiting(whoseTurn, inFrontOfWhom IPlayer, messageCard ICard, waitingPlayer IPlayer, waitSecond uint32)
	NotifyDie(location int, loseGame bool)
	NotifyWin(declareWinner []IPlayer, winner []IPlayer)
	NotifyAskForChengQing(whoDie IPlayer, askWhom IPlayer)
	WaitForDieGiveCard(whoDie IPlayer)
	SetAlive(alive bool)
	IsAlive() bool
	SetLose(lose bool)
	IsLose() bool
	SetHasNoIdentity(hasNoIdentity bool)
	HasNoIdentity() bool
	SetIdentity(identity protos.Color, secretTask protos.SecretTask)
	GetIdentity() (protos.Color, protos.SecretTask)
	SetSkills(skills []ISkill)
	GetSkills() []ISkill
	FindSkill(skillId SkillId) ISkill
	GetRole() protos.Role
	IsRoleFaceUp() bool
	AddSkillUseCount(skillId SkillId)
	GetSkillUseCount(skillId SkillId) int
	ResetSkillUseCount()
	String() string
}

type ISkill

type ISkill interface {
	Init(g *Game)
	GetSkillId() SkillId
	Execute(g *Game) (nextFsm Fsm, continueResolve bool, ok bool)
	ExecuteProtocol(g *Game, r IPlayer, message proto.Message)
}

type IdlePlayer

type IdlePlayer struct {
	BasePlayer
}

func (*IdlePlayer) NotifyAskForChengQing

func (p *IdlePlayer) NotifyAskForChengQing(IPlayer, IPlayer)

func (*IdlePlayer) NotifyChooseReceiveCard

func (p *IdlePlayer) NotifyChooseReceiveCard(IPlayer)

func (*IdlePlayer) NotifyDie

func (p *IdlePlayer) NotifyDie(int, bool)

func (*IdlePlayer) NotifyDrawPhase

func (p *IdlePlayer) NotifyDrawPhase(IPlayer)

func (*IdlePlayer) NotifyFightPhase

func (p *IdlePlayer) NotifyFightPhase(IPlayer, IPlayer, IPlayer, ICard, bool, uint32)

func (*IdlePlayer) NotifyMainPhase

func (p *IdlePlayer) NotifyMainPhase(IPlayer, uint32)

func (*IdlePlayer) NotifyReceivePhase

func (p *IdlePlayer) NotifyReceivePhase(IPlayer, IPlayer, ICard)

func (*IdlePlayer) NotifyReceivePhaseWithWaiting

func (p *IdlePlayer) NotifyReceivePhaseWithWaiting(IPlayer, IPlayer, ICard, IPlayer, uint32)

func (*IdlePlayer) NotifySendMessageCard

func (p *IdlePlayer) NotifySendMessageCard(IPlayer, IPlayer, []IPlayer, ICard, protos.Direction)

func (*IdlePlayer) NotifySendPhase

func (p *IdlePlayer) NotifySendPhase(IPlayer, IPlayer, []IPlayer, ICard, protos.Direction, bool, uint32)

func (*IdlePlayer) NotifySendPhaseStart

func (p *IdlePlayer) NotifySendPhaseStart(IPlayer, uint32)

func (*IdlePlayer) NotifyWin

func (p *IdlePlayer) NotifyWin([]IPlayer, []IPlayer)

func (*IdlePlayer) String

func (p *IdlePlayer) String() string

func (*IdlePlayer) WaitForDieGiveCard

func (p *IdlePlayer) WaitForDieGiveCard(IPlayer)

type MainPhaseIdle

type MainPhaseIdle struct {
	Player IPlayer
}

MainPhaseIdle 出牌阶段空闲时点

func (*MainPhaseIdle) Resolve

func (mp *MainPhaseIdle) Resolve() (next Fsm, continueResolve bool)

type MessageMoveNext

type MessageMoveNext struct {
	SendPhase *SendPhaseIdle
}

MessageMoveNext 情报传递阶段,情报移到下一个人

func (*MessageMoveNext) Resolve

func (mm *MessageMoveNext) Resolve() (next Fsm, continueResolve bool)

type NextTurn

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

NextTurn 即将跳转到下一回合时

func (*NextTurn) Resolve

func (nt *NextTurn) Resolve() (next Fsm, continueResolve bool)

type OnChooseReceiveCard

type OnChooseReceiveCard struct {
	WhoseTurn           IPlayer
	MessageCard         ICard
	InFrontOfWhom       IPlayer
	IsMessageCardFaceUp bool
}

OnChooseReceiveCard 选择接收情报时

func (*OnChooseReceiveCard) Resolve

func (cr *OnChooseReceiveCard) Resolve() (next Fsm, continueResolve bool)

type OnSendCard

type OnSendCard struct {
	WhoseTurn     IPlayer
	MessageCard   ICard
	Dir           protos.Direction
	TargetPlayer  IPlayer
	LockedPlayers []IPlayer
}

OnSendCard 选择了将要传递一张情报时

func (*OnSendCard) Resolve

func (sc *OnSendCard) Resolve() (next Fsm, continueResolve bool)

type OnUseCard

type OnUseCard struct {
	WhoseTurn   IPlayer
	Player      IPlayer
	Card        ICard
	AskWhom     IPlayer
	ResolveFunc func() (next Fsm, continueResolve bool)
}

func (*OnUseCard) Resolve

func (uc *OnUseCard) Resolve() (next Fsm, continueResolve bool)

type OnUseCardNext

type OnUseCardNext struct {
	OnUseCard *OnUseCard
}

func (*OnUseCardNext) Resolve

func (uc *OnUseCardNext) Resolve() (next Fsm, continueResolve bool)

type ReceivePhase

type ReceivePhase struct {
	WhoseTurn     IPlayer
	MessageCard   ICard
	InFrontOfWhom IPlayer
}

ReceivePhase 情报接收阶段

func (*ReceivePhase) Resolve

func (rp *ReceivePhase) Resolve() (next Fsm, continueResolve bool)

type ReceivePhaseReceiverSkill

type ReceivePhaseReceiverSkill struct {
	WhoseTurn     IPlayer
	MessageCard   ICard
	ReceiveOrder  []IPlayer
	InFrontOfWhom IPlayer
}

ReceivePhaseReceiverSkill 接收情报时,接收者的技能

func (*ReceivePhaseReceiverSkill) Resolve

func (rp *ReceivePhaseReceiverSkill) Resolve() (next Fsm, continueResolve bool)

type ReceivePhaseSenderSkill

type ReceivePhaseSenderSkill struct {
	WhoseTurn     IPlayer
	MessageCard   ICard
	ReceiveOrder  []IPlayer
	InFrontOfWhom IPlayer
}

ReceivePhaseSenderSkill 接收情报时,传出者的技能

func (*ReceivePhaseSenderSkill) Resolve

func (rp *ReceivePhaseSenderSkill) Resolve() (next Fsm, continueResolve bool)

type RobotPlayer

type RobotPlayer struct {
	BasePlayer
}

func (*RobotPlayer) NotifyAskForChengQing

func (r *RobotPlayer) NotifyAskForChengQing(_ IPlayer, askWhom IPlayer)

func (*RobotPlayer) NotifyChooseReceiveCard

func (r *RobotPlayer) NotifyChooseReceiveCard(IPlayer)

func (*RobotPlayer) NotifyDie

func (r *RobotPlayer) NotifyDie(location int, _ bool)

func (*RobotPlayer) NotifyDrawPhase

func (r *RobotPlayer) NotifyDrawPhase(IPlayer)

func (*RobotPlayer) NotifyFightPhase

func (r *RobotPlayer) NotifyFightPhase(_, _, whoseFightTurn IPlayer, _ ICard, _ bool, _ uint32)

func (*RobotPlayer) NotifyMainPhase

func (r *RobotPlayer) NotifyMainPhase(player IPlayer, _ uint32)

func (*RobotPlayer) NotifyReceivePhase

func (r *RobotPlayer) NotifyReceivePhase(IPlayer, IPlayer, ICard)

func (*RobotPlayer) NotifyReceivePhaseWithWaiting

func (r *RobotPlayer) NotifyReceivePhaseWithWaiting(_, _ IPlayer, _ ICard, waitingPlayer IPlayer, _ uint32)

func (*RobotPlayer) NotifySendMessageCard

func (r *RobotPlayer) NotifySendMessageCard(IPlayer, IPlayer, []IPlayer, ICard, protos.Direction)

func (*RobotPlayer) NotifySendPhase

func (r *RobotPlayer) NotifySendPhase(whoseTurn, inFrontOfWhom IPlayer, lockedPlayers []IPlayer, messageCard ICard, _ protos.Direction, isMessageFaceUp bool, _ uint32)

func (*RobotPlayer) NotifySendPhaseStart

func (r *RobotPlayer) NotifySendPhaseStart(IPlayer, uint32)

func (*RobotPlayer) NotifyWin

func (r *RobotPlayer) NotifyWin([]IPlayer, []IPlayer)

func (*RobotPlayer) String

func (r *RobotPlayer) String() string

func (*RobotPlayer) WaitForDieGiveCard

func (r *RobotPlayer) WaitForDieGiveCard(whoDie IPlayer)

type RoleSkillsData

type RoleSkillsData struct {
	Name   string
	Role   protos.Role
	FaceUp bool
	Skills []ISkill
}

type SendPhaseIdle

type SendPhaseIdle struct {
	WhoseTurn           IPlayer
	MessageCard         ICard
	Dir                 protos.Direction
	InFrontOfWhom       IPlayer
	LockedPlayers       []IPlayer
	IsMessageCardFaceUp bool
}

SendPhaseIdle 情报传递阶段空闲时点

func (*SendPhaseIdle) Resolve

func (sp *SendPhaseIdle) Resolve() (next Fsm, continueResolve bool)

type SendPhaseStart

type SendPhaseStart struct {
	Player IPlayer
}

SendPhaseStart 情报传递阶段开始时,选择传递一张情报

func (*SendPhaseStart) Resolve

func (sp *SendPhaseStart) Resolve() (next Fsm, continueResolve bool)

type SkillId

type SkillId uint32
const (
	SkillIdLianLuo SkillId = iota
	SkillIdMingEr
	SkillIdXinSiChao
	SkillIdMianLiCangZhen
	SkillIdQiHuoKeJu
	SkillIdJinShen
)

type StartWaitForChengQing

type StartWaitForChengQing struct {
	WhoseTurn       IPlayer
	DyingQueue      []IPlayer
	DiedQueue       []IPlayer
	AfterDieResolve Fsm
}

StartWaitForChengQing 判断是否需要濒死求澄清

func (*StartWaitForChengQing) Resolve

func (cq *StartWaitForChengQing) Resolve() (next Fsm, continueResolve bool)

type UseChengQingOnDying

type UseChengQingOnDying struct {
	WaitForChengQing *WaitForChengQing
}

UseChengQingOnDying 濒死求澄清时,使用了澄清

func (*UseChengQingOnDying) Resolve

func (cq *UseChengQingOnDying) Resolve() (next Fsm, continueResolve bool)

type WaitForChengQing

type WaitForChengQing struct {
	WhoseTurn       IPlayer
	WhoDie          IPlayer
	AskWhom         IPlayer
	DyingQueue      []IPlayer
	DiedQueue       []IPlayer
	AfterDieResolve Fsm
}

WaitForChengQing 濒死求澄清

func (*WaitForChengQing) Resolve

func (cq *WaitForChengQing) Resolve() (next Fsm, continueResolve bool)

type WaitForDieGiveCard

type WaitForDieGiveCard struct {
	WhoseTurn       IPlayer
	DiedIndex       int
	DiedQueue       []IPlayer
	ReceiveOrder    []IPlayer
	AfterDieResolve Fsm
}

WaitForDieGiveCard 等待死亡角色给三张牌

func (*WaitForDieGiveCard) Resolve

func (dg *WaitForDieGiveCard) Resolve() (next Fsm, continueResolve bool)

type WaitNextForChengQing

type WaitNextForChengQing struct {
	WaitForChengQing *WaitForChengQing
}

WaitNextForChengQing 濒死求澄清时,询问下一个人

func (*WaitNextForChengQing) Resolve

func (cq *WaitNextForChengQing) Resolve() (next Fsm, continueResolve bool)

type WaitingFsm

type WaitingFsm interface {
	Fsm
	ResolveProtocol(player IPlayer, message proto.Message) (next Fsm, continueResolve bool)
}

Jump to

Keyboard shortcuts

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