diff options
| author | Alexander M Pickering <alex@cogarr.net> | 2024-01-29 16:20:10 -0600 |
|---|---|---|
| committer | Alexander M Pickering <alex@cogarr.net> | 2024-01-29 16:20:10 -0600 |
| commit | c2926c5ec74d7e37da395c8c32a7ff2b4cae7d06 (patch) | |
| tree | ac2bb208dab1274cdc5e9059ffe014ae19181a4c /src/party.moon | |
| download | fools_rush_in-c2926c5ec74d7e37da395c8c32a7ff2b4cae7d06.tar.gz fools_rush_in-c2926c5ec74d7e37da395c8c32a7ff2b4cae7d06.tar.bz2 fools_rush_in-c2926c5ec74d7e37da395c8c32a7ff2b4cae7d06.zip | |
All the files
Diffstat (limited to 'src/party.moon')
| -rw-r--r-- | src/party.moon | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/src/party.moon b/src/party.moon new file mode 100644 index 0000000..1c2fb7b --- /dev/null +++ b/src/party.moon @@ -0,0 +1,58 @@ +-- Describes a player or enemy's party +-- Parties can exist without any members +room = require("room") +main = require("main") +char = require("char") +import Character from char +import LobbyRoom from room +mod = ... + +class Party + new: => + @members = {} + @rnode = am.group! + @node = am.translate(0,0) + @rnode\append(@node) + @room = LobbyRoom! + member: (uname) => + assert(uname, "cannot find a nil party member") + assert(type(uname) == "string", "Member should be called with a peer id") + @members[uname] + nmembers: () => + i = 0 + for k,v in pairs(@members) + i += 1 + i + add_member: (member) => + assert(member.uname, "cannot add a nil party member") + assert(type(member.uname) == "string", "Member should be called with a peer id") + @members[member.uname] = member + member.party = @ + @node\append(member.node) + remove_member: (member) => + @members[member.uname] = nil + member.party = nil + @node\remove(member.node) + set_room: (nroom) => + @room = nroom + for id, char in pairs(@members) + char\enter_room(nroom) + + serialize: () => + members = {} + for _, member in pairs(@members) + members[member.uname] = member\serialize! + am.to_json(members) + + deserialize: (data) -> + rp = Party! + tbl = am.parse_json(data) + for uname, payload in pairs(tbl) + tchar = Character.deserialize(payload) + rp\add_member(tchar) + rp + + + +mod["Party"] = Party +mod |
