diff --git a/dealer.go b/dealer.go index 3ceda3c..398f4e2 100644 --- a/dealer.go +++ b/dealer.go @@ -35,8 +35,10 @@ func (d *Dealer) ConnectToMatrix(homeserver, uname, passwd string) { } fmt.Println("Login successful") d.Client = client - //Set up event handlers - syncer := client.Syncer.(*mautrix.DefaultSyncer) +} + +func (d *Dealer) RegisterHandlers() { + syncer := d.Client.Syncer.(*mautrix.DefaultSyncer) syncer.OnEventType(event.StateMember, func(source mautrix.EventSource, evt *event.Event) { if evt.Sender == d.Client.UserID { return @@ -93,6 +95,7 @@ func (d *Dealer) ConnectToMatrix(homeserver, uname, passwd string) { log.Println("ignoring message event from non player") return } + //parse as game command resp := match.ParseAction(evt.Content.AsMessage().Body) if resp.Private { //respond privately @@ -113,7 +116,6 @@ func (d *Dealer) ConnectToMatrix(homeserver, uname, passwd string) { } }) - } func (d *Dealer) SetupRooms(domain string) { diff --git a/main.go b/main.go index 0e49d0e..be1222f 100644 --- a/main.go +++ b/main.go @@ -30,6 +30,7 @@ func main() { dealer.ConnectToMatrix(homeserver, username, password) //create room #tomequeue:homeserver dealer.SetupRooms(homeserverDomain) + dealer.RegisterHandlers() err = dealer.Client.Sync() if err != nil { panic(err) diff --git a/match.go b/match.go index ad66e60..aa74574 100644 --- a/match.go +++ b/match.go @@ -1,6 +1,7 @@ package main import ( + "encoding/json" "log" "git.saintnet.tech/tomecraft/tome_game" @@ -36,7 +37,19 @@ func NewMatch() *Match { } func (m *Match) ParseAction(msg string) MatchResp { - panic("PARSEACTION UNIMPLEMENTED") + var cmd *tome_lib.Command + err := json.Unmarshal([]byte(msg), cmd) + if err != nil { + log.Printf("error unmarshaling gamecommand %v", err) + return MatchResp{Body: "", Private: false} + } + res := m.Game.Parse(cmd) + match_res := MatchResp{ + Body: res.String(), + Private: (cmd.Type == tome_lib.ActCmd && cmd.String() == "d"), + } + return match_res + } func (m *Match) JoinOrLeave(gameRoom *mautrix.Room, evt *event.Event) {