~hutzdog/TIC-Design

1dff59d448e5fec43bf6d0313a2ddf53182c16a0 — Danielle Hutzley 4 months ago master
Initial commit
2 files changed, 121 insertions(+), 0 deletions(-)

A ARCHITECTURE.mdj
A DESIGN.md
A  => ARCHITECTURE.mdj +1 -0
@@ 1,1 @@
{"_type":"Project","_id":"AAAAAAFF+h6SjaM2Hec=","name":"Traitors in the Coven","ownedElements":[{"_type":"C4Model","_id":"AAAAAAGNC+f27QAcH1U=","_parent":{"$ref":"AAAAAAFF+h6SjaM2Hec="},"name":"C4 Model","ownedElements":[{"_type":"C4Diagram","_id":"AAAAAAGNC+gi5wAhjUU=","_parent":{"$ref":"AAAAAAGNC+f27QAcH1U="},"name":"C4 Model","defaultDiagram":true,"ownedViews":[{"_type":"C4PersonView","_id":"AAAAAAGNC+ppfwBw9tM=","_parent":{"$ref":"AAAAAAGNC+gi5wAhjUU="},"model":{"$ref":"AAAAAAGNC+ppfgBu7eI="},"subViews":[{"_type":"LabelView","_id":"AAAAAAGNC+ppfwBxka0=","_parent":{"$ref":"AAAAAAGNC+ppfwBw9tM="},"fillColor":"#38bcff","font":"Arial;13;1","left":632,"top":108,"width":67.919921875,"height":13,"text":"Player","wordWrap":true},{"_type":"LabelView","_id":"AAAAAAGNC+ppfwByrio=","_parent":{"$ref":"AAAAAAGNC+ppfwBw9tM="},"fillColor":"#38bcff","font":"Arial;13;0","left":632,"top":123,"width":67.919921875,"height":13,"text":"[Person]","wordWrap":true},{"_type":"LabelView","_id":"AAAAAAGNC+ppfwBz15E=","_parent":{"$ref":"AAAAAAGNC+ppfwBw9tM="},"fillColor":"#38bcff","font":"Arial;13;0","left":632,"top":146,"width":67.919921875,"height":26,"text":"A player of the game","wordWrap":true}],"fillColor":"#38bcff","font":"Arial;13;0","left":624,"top":64,"width":83.919921875,"height":116,"nameLabel":{"$ref":"AAAAAAGNC+ppfwBxka0="},"technologyLabel":{"$ref":"AAAAAAGNC+ppfwByrio="},"descriptionLabel":{"$ref":"AAAAAAGNC+ppfwBz15E="}},{"_type":"C4SoftwareSystemView","_id":"AAAAAAGNC+w1aQCDOwE=","_parent":{"$ref":"AAAAAAGNC+gi5wAhjUU="},"model":{"$ref":"AAAAAAGNC+w1aQCBcVw="},"subViews":[{"_type":"LabelView","_id":"AAAAAAGNC+w1aQCEfZI=","_parent":{"$ref":"AAAAAAGNC+w1aQCDOwE="},"fillColor":"#FFFFFF00","font":"Arial;13;1","left":280,"top":304,"width":680,"height":13,"text":"Game","wordWrap":true},{"_type":"LabelView","_id":"AAAAAAGNC+w1aQCFIA0=","_parent":{"$ref":"AAAAAAGNC+w1aQCDOwE="},"fillColor":"#FFFFFF00","font":"Arial;13;0","left":280,"top":319,"width":680,"height":13,"text":"[Software System]","wordWrap":true},{"_type":"LabelView","_id":"AAAAAAGNC+w1aQCGJmQ=","_parent":{"$ref":"AAAAAAGNC+w1aQCDOwE="},"fillColor":"#FFFFFF00","font":"Arial;13;0","left":280,"top":342,"width":680,"wordWrap":true}],"fillColor":"#FFFFFF00","font":"Arial;13;0","left":272,"top":296,"width":696,"height":488,"nameLabel":{"$ref":"AAAAAAGNC+w1aQCEfZI="},"technologyLabel":{"$ref":"AAAAAAGNC+w1aQCFIA0="},"descriptionLabel":{"$ref":"AAAAAAGNC+w1aQCGJmQ="}},{"_type":"C4ContainerView","_id":"AAAAAAGNC+001QCZ2oM=","_parent":{"$ref":"AAAAAAGNC+gi5wAhjUU="},"model":{"$ref":"AAAAAAGNC+001ACXkpo="},"subViews":[{"_type":"LabelView","_id":"AAAAAAGNC+001QCapG4=","_parent":{"$ref":"AAAAAAGNC+001QCZ2oM="},"fillColor":"#a3e0ff","font":"Arial;13;1","left":304,"top":666,"width":136,"height":13,"text":"Database","wordWrap":true},{"_type":"LabelView","_id":"AAAAAAGNC+001QCbuYA=","_parent":{"$ref":"AAAAAAGNC+001QCZ2oM="},"fillColor":"#a3e0ff","font":"Arial;13;0","left":304,"top":681,"width":136,"height":13,"text":"[Container: Sled]","wordWrap":true},{"_type":"LabelView","_id":"AAAAAAGNC+001QCcSfw=","_parent":{"$ref":"AAAAAAGNC+001QCZ2oM="},"fillColor":"#a3e0ff","font":"Arial;13;0","left":304,"top":704,"width":136,"height":52,"text":"Stores user login information, ban statistics, and other information","wordWrap":true}],"fillColor":"#a3e0ff","font":"Arial;13;0","left":296,"top":624,"width":152,"height":140,"nameLabel":{"$ref":"AAAAAAGNC+001QCapG4="},"technologyLabel":{"$ref":"AAAAAAGNC+001QCbuYA="},"descriptionLabel":{"$ref":"AAAAAAGNC+001QCcSfw="}},{"_type":"C4ContainerView","_id":"AAAAAAGNC+65lgCy7oo=","_parent":{"$ref":"AAAAAAGNC+gi5wAhjUU="},"model":{"$ref":"AAAAAAGNC+65lgCwd9k="},"subViews":[{"_type":"LabelView","_id":"AAAAAAGNC+65lwCzewo=","_parent":{"$ref":"AAAAAAGNC+65lgCy7oo="},"fillColor":"#a3e0ff","font":"Arial;13;1","left":576,"top":656,"width":192,"height":13,"text":"Server","wordWrap":true},{"_type":"LabelView","_id":"AAAAAAGNC+65lwC0H+M=","_parent":{"$ref":"AAAAAAGNC+65lgCy7oo="},"fillColor":"#a3e0ff","font":"Arial;13;0","left":576,"top":671,"width":192,"height":13,"text":"[Container: Rust + Bevy]","wordWrap":true},{"_type":"LabelView","_id":"AAAAAAGNC+65lwC15z4=","_parent":{"$ref":"AAAAAAGNC+65lgCy7oo="},"fillColor":"#a3e0ff","font":"Arial;13;0","left":576,"top":694,"width":192,"height":39,"text":"Handles all game logic using minimal, generic information sent from clients","wordWrap":true}],"fillColor":"#a3e0ff","font":"Arial;13;0","left":568,"top":648,"width":208,"height":104,"nameLabel":{"$ref":"AAAAAAGNC+65lwCzewo="},"technologyLabel":{"$ref":"AAAAAAGNC+65lwC0H+M="},"descriptionLabel":{"$ref":"AAAAAAGNC+65lwC15z4="}},{"_type":"C4RelationshipView","_id":"AAAAAAGNC/AODAEquec=","_parent":{"$ref":"AAAAAAGNC+gi5wAhjUU="},"model":{"$ref":"AAAAAAGNC/AODAEoxR8="},"subViews":[{"_type":"EdgeLabelView","_id":"AAAAAAGNC/AODAErn9A=","_parent":{"$ref":"AAAAAAGNC/AODAEquec="},"model":{"$ref":"AAAAAAGNC/AODAEoxR8="},"font":"Arial;13;0","left":475,"top":705,"width":64.7841796875,"height":13,"alpha":1.5707963267948966,"distance":15,"hostEdge":{"$ref":"AAAAAAGNC/AODAEquec="},"edgePosition":1,"text":"Read/Write","wordWrap":true},{"_type":"EdgeLabelView","_id":"AAAAAAGNC/AODAEsNPs=","_parent":{"$ref":"AAAAAAGNC/AODAEquec="},"model":{"$ref":"AAAAAAGNC/AODAEoxR8="},"font":"Arial;13;0","left":457,"top":676,"width":102,"height":13,"alpha":-1.5707963267948966,"distance":15,"hostEdge":{"$ref":"AAAAAAGNC/AODAEquec="},"edgePosition":1,"text":"[Embedded API]","wordWrap":true}],"font":"Arial;13;0","head":{"$ref":"AAAAAAGNC+001QCZ2oM="},"tail":{"$ref":"AAAAAAGNC+65lgCy7oo="},"lineStyle":1,"points":"567:698;449:696","descriptionLabel":{"$ref":"AAAAAAGNC/AODAErn9A="},"technologyLabel":{"$ref":"AAAAAAGNC/AODAEsNPs="}},{"_type":"C4ContainerView","_id":"AAAAAAGNC/e87AFY8PY=","_parent":{"$ref":"AAAAAAGNC+gi5wAhjUU="},"model":{"$ref":"AAAAAAGNC/e87AFWklc="},"subViews":[{"_type":"LabelView","_id":"AAAAAAGNC/e87AFZmNA=","_parent":{"$ref":"AAAAAAGNC/e87AFY8PY="},"fillColor":"#a3e0ff","font":"Arial;13;1","left":576,"top":364,"width":168,"height":13,"text":"Desktop Client","wordWrap":true},{"_type":"LabelView","_id":"AAAAAAGNC/e87AFa2b4=","_parent":{"$ref":"AAAAAAGNC/e87AFY8PY="},"fillColor":"#a3e0ff","font":"Arial;13;0","left":576,"top":379,"width":168,"height":13,"text":"[Container: Rust + Bevy]","wordWrap":true},{"_type":"LabelView","_id":"AAAAAAGNC/e87AFbgaM=","_parent":{"$ref":"AAAAAAGNC/e87AFY8PY="},"fillColor":"#a3e0ff","font":"Arial;13;0","left":576,"top":402,"width":168,"height":26,"text":"Client used by most users on desktop\n","wordWrap":true}],"fillColor":"#a3e0ff","font":"Arial;13;0","left":568,"top":344,"width":184,"height":92,"nameLabel":{"$ref":"AAAAAAGNC/e87AFZmNA="},"technologyLabel":{"$ref":"AAAAAAGNC/e87AFa2b4="},"descriptionLabel":{"$ref":"AAAAAAGNC/e87AFbgaM="}},{"_type":"C4ContainerView","_id":"AAAAAAGNC/h76gFsIUw=","_parent":{"$ref":"AAAAAAGNC+gi5wAhjUU="},"model":{"$ref":"AAAAAAGNC/h76gFqYI4="},"subViews":[{"_type":"LabelView","_id":"AAAAAAGNC/h76gFtR3w=","_parent":{"$ref":"AAAAAAGNC/h76gFsIUw="},"fillColor":"#a3e0ff","font":"Arial;13;1","left":552,"top":504,"width":240,"height":13,"text":"Client Library","wordWrap":true},{"_type":"LabelView","_id":"AAAAAAGNC/h76gFuPjk=","_parent":{"$ref":"AAAAAAGNC/h76gFsIUw="},"fillColor":"#a3e0ff","font":"Arial;13;0","left":552,"top":519,"width":240,"height":13,"text":"[Container: Rust + Bevy]","wordWrap":true},{"_type":"LabelView","_id":"AAAAAAGNC/h76gFvRJ0=","_parent":{"$ref":"AAAAAAGNC/h76gFsIUw="},"fillColor":"#a3e0ff","font":"Arial;13;0","left":552,"top":542,"width":240,"height":26,"text":"Abstraction layer over the Renet based API, used to implement all clients","wordWrap":true}],"fillColor":"#a3e0ff","font":"Arial;13;0","left":544,"top":496,"width":256,"height":96,"nameLabel":{"$ref":"AAAAAAGNC/h76gFtR3w="},"technologyLabel":{"$ref":"AAAAAAGNC/h76gFuPjk="},"descriptionLabel":{"$ref":"AAAAAAGNC/h76gFvRJ0="}},{"_type":"C4RelationshipView","_id":"AAAAAAGNC/khFgGITb0=","_parent":{"$ref":"AAAAAAGNC+gi5wAhjUU="},"model":{"$ref":"AAAAAAGNC/khFgGGZyA="},"subViews":[{"_type":"EdgeLabelView","_id":"AAAAAAGNC/khFgGJMD8=","_parent":{"$ref":"AAAAAAGNC/khFgGITb0="},"model":{"$ref":"AAAAAAGNC/khFgGGZyA="},"font":"Arial;13;0","left":692,"top":602,"width":72,"height":26,"alpha":1.6581308136267014,"distance":56.43580423808985,"hostEdge":{"$ref":"AAAAAAGNC/khFgGITb0="},"edgePosition":1,"text":"Two-way messaging\n","wordWrap":true},{"_type":"EdgeLabelView","_id":"AAAAAAGNC/khFgGK7qY=","_parent":{"$ref":"AAAAAAGNC/khFgGITb0="},"model":{"$ref":"AAAAAAGNC/khFgGGZyA="},"font":"Arial;13;0","left":697,"top":633,"width":41.91357421875,"height":13,"alpha":1.160788193028375,"distance":49.39635614091387,"hostEdge":{"$ref":"AAAAAAGNC/khFgGITb0="},"edgePosition":1,"text":"[Renet]","wordWrap":true}],"font":"Arial;13;0","head":{"$ref":"AAAAAAGNC+65lgCy7oo="},"tail":{"$ref":"AAAAAAGNC/h76gFsIUw="},"lineStyle":1,"points":"672:593;672:647","descriptionLabel":{"$ref":"AAAAAAGNC/khFgGJMD8="},"technologyLabel":{"$ref":"AAAAAAGNC/khFgGK7qY="}},{"_type":"C4RelationshipView","_id":"AAAAAAGNC/vtfgG1xa0=","_parent":{"$ref":"AAAAAAGNC+gi5wAhjUU="},"model":{"$ref":"AAAAAAGNC/vtfQGzckU="},"subViews":[{"_type":"EdgeLabelView","_id":"AAAAAAGNC/vtfgG2JJU=","_parent":{"$ref":"AAAAAAGNC/vtfgG1xa0="},"model":{"$ref":"AAAAAAGNC/vtfQGzckU="},"font":"Arial;13;0","left":626,"top":439,"width":62.8798828125,"height":26,"alpha":-2.9836513683694115,"distance":13.341664064126334,"hostEdge":{"$ref":"AAAAAAGNC/vtfgG1xa0="},"edgePosition":1,"text":"Embedded API","wordWrap":true},{"_type":"EdgeLabelView","_id":"AAAAAAGNC/vtfgG3C0k=","_parent":{"$ref":"AAAAAAGNC/vtfgG1xa0="},"model":{"$ref":"AAAAAAGNC/vtfQGzckU="},"visible":false,"font":"Arial;13;0","left":641,"top":460,"width":8.658203125,"height":13,"alpha":-1.5707963267948966,"distance":15,"hostEdge":{"$ref":"AAAAAAGNC/vtfgG1xa0="},"edgePosition":1,"text":"[]","wordWrap":true}],"font":"Arial;13;0","head":{"$ref":"AAAAAAGNC/h76gFsIUw="},"tail":{"$ref":"AAAAAAGNC/e87AFY8PY="},"points":"660:436;660:496","descriptionLabel":{"$ref":"AAAAAAGNC/vtfgG2JJU="},"technologyLabel":{"$ref":"AAAAAAGNC/vtfgG3C0k="}},{"_type":"C4ContainerView","_id":"AAAAAAGNC/w6NQHT5PE=","_parent":{"$ref":"AAAAAAGNC+gi5wAhjUU="},"model":{"$ref":"AAAAAAGNC/w6NQHR6YU="},"subViews":[{"_type":"LabelView","_id":"AAAAAAGNC/w6NQHUIPg=","_parent":{"$ref":"AAAAAAGNC/w6NQHT5PE="},"fillColor":"#a3e0ff","font":"Arial;13;1","left":344,"top":366,"width":200,"height":13,"text":"Web Client","wordWrap":true},{"_type":"LabelView","_id":"AAAAAAGNC/w6NQHVcks=","_parent":{"$ref":"AAAAAAGNC/w6NQHT5PE="},"fillColor":"#a3e0ff","font":"Arial;13;0","left":344,"top":381,"width":200,"height":13,"text":"[Container: Rust + Bevy + WASM]","wordWrap":true},{"_type":"LabelView","_id":"AAAAAAGNC/w6NQHW914=","_parent":{"$ref":"AAAAAAGNC/w6NQHT5PE="},"fillColor":"#a3e0ff","font":"Arial;13;0","left":344,"top":404,"width":200,"height":26,"text":"A web based client with semi-limited features","wordWrap":true}],"fillColor":"#a3e0ff","font":"Arial;13;0","left":336,"top":336,"width":216,"height":104,"nameLabel":{"$ref":"AAAAAAGNC/w6NQHUIPg="},"technologyLabel":{"$ref":"AAAAAAGNC/w6NQHVcks="},"descriptionLabel":{"$ref":"AAAAAAGNC/w6NQHW914="}},{"_type":"C4RelationshipView","_id":"AAAAAAGNC/0gSQHt0as=","_parent":{"$ref":"AAAAAAGNC+gi5wAhjUU="},"model":{"$ref":"AAAAAAGNC/0gSQHrFZs="},"subViews":[{"_type":"EdgeLabelView","_id":"AAAAAAGNC/0gSQHuYrQ=","_parent":{"$ref":"AAAAAAGNC/0gSQHt0as="},"model":{"$ref":"AAAAAAGNC/0gSQHrFZs="},"font":"Arial;13;0","left":400,"top":487,"width":62.8798828125,"height":26,"alpha":-3.9757327958936273,"distance":58.05170109479997,"hostEdge":{"$ref":"AAAAAAGNC/0gSQHt0as="},"edgePosition":1,"text":"Embedded API","wordWrap":true},{"_type":"EdgeLabelView","_id":"AAAAAAGNC/0gSQHvseE=","_parent":{"$ref":"AAAAAAGNC/0gSQHt0as="},"model":{"$ref":"AAAAAAGNC/0gSQHrFZs="},"visible":false,"font":"Arial;13;0","left":466,"top":553,"width":8.658203125,"height":13,"alpha":-1.5707963267948966,"distance":15,"hostEdge":{"$ref":"AAAAAAGNC/0gSQHt0as="},"edgePosition":1,"text":"[]","wordWrap":true}],"font":"Arial;13;0","head":{"$ref":"AAAAAAGNC/h76gFsIUw="},"tail":{"$ref":"AAAAAAGNC/w6NQHT5PE="},"points":"470:440;470:544;544:544","descriptionLabel":{"$ref":"AAAAAAGNC/0gSQHuYrQ="},"technologyLabel":{"$ref":"AAAAAAGNC/0gSQHvseE="}},{"_type":"C4ContainerView","_id":"AAAAAAGNC/2DkQINnR0=","_parent":{"$ref":"AAAAAAGNC+gi5wAhjUU="},"model":{"$ref":"AAAAAAGNC/2DkQILFU8="},"subViews":[{"_type":"LabelView","_id":"AAAAAAGNC/2DkQIOXAQ=","_parent":{"$ref":"AAAAAAGNC/2DkQINnR0="},"fillColor":"#a3e0ff","font":"Arial;13;1","left":784,"top":374,"width":144,"height":13,"text":"Terminal Client","wordWrap":true},{"_type":"LabelView","_id":"AAAAAAGNC/2DkQIPaMg=","_parent":{"$ref":"AAAAAAGNC/2DkQINnR0="},"fillColor":"#a3e0ff","font":"Arial;13;0","left":784,"top":389,"width":144,"height":13,"text":"[Container: Rust + Bevy]","wordWrap":true},{"_type":"LabelView","_id":"AAAAAAGNC/2DkQIQcK0=","_parent":{"$ref":"AAAAAAGNC/2DkQINnR0="},"fillColor":"#a3e0ff","font":"Arial;13;0","left":784,"top":412,"width":144,"height":26,"text":"A CLI client for terminal users","wordWrap":true}],"fillColor":"#a3e0ff","font":"Arial;13;0","left":776,"top":344,"width":160,"height":102,"nameLabel":{"$ref":"AAAAAAGNC/2DkQIOXAQ="},"technologyLabel":{"$ref":"AAAAAAGNC/2DkQIPaMg="},"descriptionLabel":{"$ref":"AAAAAAGNC/2DkQIQcK0="}},{"_type":"C4RelationshipView","_id":"AAAAAAGNC/7RSwI7r/E=","_parent":{"$ref":"AAAAAAGNC+gi5wAhjUU="},"model":{"$ref":"AAAAAAGNC/7RSwI5KpI="},"subViews":[{"_type":"EdgeLabelView","_id":"AAAAAAGNC/7RSwI8myE=","_parent":{"$ref":"AAAAAAGNC/7RSwI7r/E="},"model":{"$ref":"AAAAAAGNC/7RSwI5KpI="},"font":"Arial;13;0","left":864,"top":480,"width":62.8798828125,"height":26,"alpha":3.9757325407007484,"distance":58.05170109479997,"hostEdge":{"$ref":"AAAAAAGNC/7RSwI7r/E="},"edgePosition":1,"text":"Embedded API","wordWrap":true},{"_type":"EdgeLabelView","_id":"AAAAAAGNC/7RSwI99os=","_parent":{"$ref":"AAAAAAGNC/7RSwI7r/E="},"model":{"$ref":"AAAAAAGNC/7RSwI5KpI="},"visible":false,"font":"Arial;13;0","left":852,"top":515,"width":8.658203125,"height":13,"alpha":-1.5707963267948966,"distance":15,"hostEdge":{"$ref":"AAAAAAGNC/7RSwI7r/E="},"edgePosition":1,"text":"[]","wordWrap":true}],"font":"Arial;13;0","head":{"$ref":"AAAAAAGNC/h76gFsIUw="},"tail":{"$ref":"AAAAAAGNC/2DkQINnR0="},"points":"856:446;856:536;800:536","descriptionLabel":{"$ref":"AAAAAAGNC/7RSwI8myE="},"technologyLabel":{"$ref":"AAAAAAGNC/7RSwI99os="}},{"_type":"C4RelationshipView","_id":"AAAAAAGNC/9K/wJP6jo=","_parent":{"$ref":"AAAAAAGNC+gi5wAhjUU="},"model":{"$ref":"AAAAAAGNC/9K/gJN6p4="},"subViews":[{"_type":"EdgeLabelView","_id":"AAAAAAGNC/9K/wJQImM=","_parent":{"$ref":"AAAAAAGNC/9K/wJP6jo="},"model":{"$ref":"AAAAAAGNC/9K/gJN6p4="},"font":"Arial;13;0","left":513,"top":251,"width":60.7890625,"height":26,"alpha":-0.12249591644775304,"distance":15.620499351813308,"hostEdge":{"$ref":"AAAAAAGNC/9K/wJP6jo="},"edgePosition":1,"text":"Plays on the web","wordWrap":true},{"_type":"EdgeLabelView","_id":"AAAAAAGNC/9K/wJRLDg=","_parent":{"$ref":"AAAAAAGNC/9K/wJP6jo="},"model":{"$ref":"AAAAAAGNC/9K/gJN6p4="},"visible":false,"font":"Arial;13;0","left":539,"top":238,"width":8.658203125,"height":13,"alpha":-1.5707963267948966,"distance":15,"hostEdge":{"$ref":"AAAAAAGNC/9K/wJP6jo="},"edgePosition":1,"text":"[]","wordWrap":true}],"font":"Arial;13;0","head":{"$ref":"AAAAAAGNC/w6NQHT5PE="},"tail":{"$ref":"AAAAAAGNC+ppfwBw9tM="},"lineStyle":1,"points":"623:173;488:335","descriptionLabel":{"$ref":"AAAAAAGNC/9K/wJQImM="},"technologyLabel":{"$ref":"AAAAAAGNC/9K/wJRLDg="}},{"_type":"C4RelationshipView","_id":"AAAAAAGNC/+mkQJfG6Y=","_parent":{"$ref":"AAAAAAGNC+gi5wAhjUU="},"model":{"$ref":"AAAAAAGNC/+mkQJdmpw="},"subViews":[{"_type":"EdgeLabelView","_id":"AAAAAAGNC/+mkQJgVtQ=","_parent":{"$ref":"AAAAAAGNC/+mkQJfG6Y="},"model":{"$ref":"AAAAAAGNC/+mkQJdmpw="},"font":"Arial;13;0","left":611,"top":236,"width":92.47265625,"height":26,"alpha":-2.8112699898457967,"distance":13.341664064126334,"hostEdge":{"$ref":"AAAAAAGNC/+mkQJfG6Y="},"edgePosition":1,"text":"Plays on Steam/GOG/etc","wordWrap":true},{"_type":"EdgeLabelView","_id":"AAAAAAGNC/+mkQJhorg=","_parent":{"$ref":"AAAAAAGNC/+mkQJfG6Y="},"model":{"$ref":"AAAAAAGNC/+mkQJdmpw="},"visible":false,"font":"Arial;13;0","left":643,"top":255,"width":8.658203125,"height":13,"alpha":-1.5707963267948966,"distance":15,"hostEdge":{"$ref":"AAAAAAGNC/+mkQJfG6Y="},"edgePosition":1,"text":"[]","wordWrap":true}],"font":"Arial;13;0","head":{"$ref":"AAAAAAGNC/e87AFY8PY="},"tail":{"$ref":"AAAAAAGNC+ppfwBw9tM="},"lineStyle":1,"points":"664:181;661:343","descriptionLabel":{"$ref":"AAAAAAGNC/+mkQJgVtQ="},"technologyLabel":{"$ref":"AAAAAAGNC/+mkQJhorg="}},{"_type":"C4RelationshipView","_id":"AAAAAAGNC//+MwJuGlA=","_parent":{"$ref":"AAAAAAGNC+gi5wAhjUU="},"model":{"$ref":"AAAAAAGNC//+MgJsrn8="},"subViews":[{"_type":"EdgeLabelView","_id":"AAAAAAGNC//+MwJvH8U=","_parent":{"$ref":"AAAAAAGNC//+MwJuGlA="},"model":{"$ref":"AAAAAAGNC//+MgJsrn8="},"font":"Arial;13;0","left":750,"top":240,"width":51.29541015625,"height":26,"alpha":1.5707963267948966,"distance":15,"hostEdge":{"$ref":"AAAAAAGNC//+MwJuGlA="},"edgePosition":1,"text":"Plays on terminal","wordWrap":true},{"_type":"EdgeLabelView","_id":"AAAAAAGNC//+MwJwPDc=","_parent":{"$ref":"AAAAAAGNC//+MwJuGlA="},"model":{"$ref":"AAAAAAGNC//+MgJsrn8="},"visible":false,"font":"Arial;13;0","left":746,"top":264,"width":8.658203125,"height":13,"alpha":-1.5707963267948966,"distance":15,"hostEdge":{"$ref":"AAAAAAGNC//+MwJuGlA="},"edgePosition":1,"text":"[]","wordWrap":true}],"font":"Arial;13;0","head":{"$ref":"AAAAAAGNC/2DkQINnR0="},"tail":{"$ref":"AAAAAAGNC+ppfwBw9tM="},"lineStyle":1,"points":"706:181;820:343","descriptionLabel":{"$ref":"AAAAAAGNC//+MwJvH8U="},"technologyLabel":{"$ref":"AAAAAAGNC//+MwJwPDc="}}]},{"_type":"C4Person","_id":"AAAAAAGNC+ppfgBu7eI=","_parent":{"$ref":"AAAAAAGNC+f27QAcH1U="},"name":"Player","ownedElements":[{"_type":"C4Relationship","_id":"AAAAAAGNC/9K/gJN6p4=","_parent":{"$ref":"AAAAAAGNC+ppfgBu7eI="},"source":{"$ref":"AAAAAAGNC+ppfgBu7eI="},"target":{"$ref":"AAAAAAGNC/w6NQHR6YU="},"description":"Plays on the web"},{"_type":"C4Relationship","_id":"AAAAAAGNC/+mkQJdmpw=","_parent":{"$ref":"AAAAAAGNC+ppfgBu7eI="},"source":{"$ref":"AAAAAAGNC+ppfgBu7eI="},"target":{"$ref":"AAAAAAGNC/e87AFWklc="},"description":"Plays on Steam/GOG/etc"},{"_type":"C4Relationship","_id":"AAAAAAGNC//+MgJsrn8=","_parent":{"$ref":"AAAAAAGNC+ppfgBu7eI="},"source":{"$ref":"AAAAAAGNC+ppfgBu7eI="},"target":{"$ref":"AAAAAAGNC/2DkQILFU8="},"description":"Plays on terminal"}],"description":"A player of the game"},{"_type":"C4SoftwareSystem","_id":"AAAAAAGNC+w1aQCBcVw=","_parent":{"$ref":"AAAAAAGNC+f27QAcH1U="},"name":"Game","ownedElements":[{"_type":"C4Container","_id":"AAAAAAGNC+001ACXkpo=","_parent":{"$ref":"AAAAAAGNC+w1aQCBcVw="},"name":"Database","technology":"Sled","description":"Stores user login information, ban statistics, and other information","kind":"database"},{"_type":"C4Container","_id":"AAAAAAGNC+65lgCwd9k=","_parent":{"$ref":"AAAAAAGNC+w1aQCBcVw="},"name":"Server","ownedElements":[{"_type":"C4Relationship","_id":"AAAAAAGNC/AODAEoxR8=","_parent":{"$ref":"AAAAAAGNC+65lgCwd9k="},"name":"Sled API","source":{"$ref":"AAAAAAGNC+65lgCwd9k="},"target":{"$ref":"AAAAAAGNC+001ACXkpo="},"technology":"Embedded API","description":"Read/Write"}],"documentation":"The server should do most processing, leaving clients to be little more than just a UI which configures information. This allows for maximum server modding flexibility (with compatibility with vanilla clients) and minimizes room for cheating.","technology":"Rust + Bevy","description":"Handles all game logic using minimal, generic information sent from clients","kind":"server-webapp"},{"_type":"C4Container","_id":"AAAAAAGNC/e87AFWklc=","_parent":{"$ref":"AAAAAAGNC+w1aQCBcVw="},"name":"Desktop Client","ownedElements":[{"_type":"C4Relationship","_id":"AAAAAAGNC/vtfQGzckU=","_parent":{"$ref":"AAAAAAGNC/e87AFWklc="},"name":"Embedded API","source":{"$ref":"AAAAAAGNC/e87AFWklc="},"target":{"$ref":"AAAAAAGNC/h76gFqYI4="},"description":"Embedded API"}],"technology":"Rust + Bevy","description":"Client used by most users on desktop\n","kind":"desktop-app"},{"_type":"C4Container","_id":"AAAAAAGNC/h76gFqYI4=","_parent":{"$ref":"AAAAAAGNC+w1aQCBcVw="},"name":"Client Library","ownedElements":[{"_type":"C4Relationship","_id":"AAAAAAGNC/khFgGGZyA=","_parent":{"$ref":"AAAAAAGNC/h76gFqYI4="},"name":"API Calls","source":{"$ref":"AAAAAAGNC/h76gFqYI4="},"target":{"$ref":"AAAAAAGNC+65lgCwd9k="},"technology":"Renet","description":"Two-way messaging\n"}],"technology":"Rust + Bevy","description":"Abstraction layer over the Renet based API, used to implement all clients","kind":"etc"},{"_type":"C4Container","_id":"AAAAAAGNC/2DkQILFU8=","_parent":{"$ref":"AAAAAAGNC+w1aQCBcVw="},"name":"Terminal Client","ownedElements":[{"_type":"C4Relationship","_id":"AAAAAAGNC/7RSwI5KpI=","_parent":{"$ref":"AAAAAAGNC/2DkQILFU8="},"source":{"$ref":"AAAAAAGNC/2DkQILFU8="},"target":{"$ref":"AAAAAAGNC/h76gFqYI4="},"description":"Embedded API"}],"technology":"Rust + Bevy","description":"A CLI client for terminal users","kind":"console-app"},{"_type":"C4Container","_id":"AAAAAAGNC/w6NQHR6YU=","_parent":{"$ref":"AAAAAAGNC+w1aQCBcVw="},"name":"Web Client","ownedElements":[{"_type":"C4Relationship","_id":"AAAAAAGNC/0gSQHrFZs=","_parent":{"$ref":"AAAAAAGNC/w6NQHR6YU="},"name":"Embedded API","source":{"$ref":"AAAAAAGNC/w6NQHR6YU="},"target":{"$ref":"AAAAAAGNC/h76gFqYI4="},"description":"Embedded API"}],"technology":"Rust + Bevy + WASM","description":"A web based client with semi-limited features","kind":"client-webapp"}]}]},{"_type":"UMLModel","_id":"AAAAAAGNDqynnAKAFn4=","_parent":{"$ref":"AAAAAAFF+h6SjaM2Hec="},"name":"Server Class Model","ownedElements":[{"_type":"UMLClassDiagram","_id":"AAAAAAGNDqynnAKBh7A=","_parent":{"$ref":"AAAAAAGNDqynnAKAFn4="},"name":"Server Classes","documentation":"Data types used in the TITC ECS \nnote: these classes provide rough overviews of the types of entities found in the game and are not fully indicative of the underlying data structures used in practice","ownedViews":[{"_type":"UMLClassView","_id":"AAAAAAGNDrdXTQLkb4M=","_parent":{"$ref":"AAAAAAGNDqynnAKBh7A="},"model":{"$ref":"AAAAAAGNDrdXTALirFQ="},"subViews":[{"_type":"UMLNameCompartmentView","_id":"AAAAAAGNDrdXTQLlVS8=","_parent":{"$ref":"AAAAAAGNDrdXTQLkb4M="},"model":{"$ref":"AAAAAAGNDrdXTALirFQ="},"subViews":[{"_type":"LabelView","_id":"AAAAAAGNDrdXTQLmnpc=","_parent":{"$ref":"AAAAAAGNDrdXTQLlVS8="},"visible":false,"font":"Arial;13;0","left":1024,"top":416,"height":13},{"_type":"LabelView","_id":"AAAAAAGNDrdXTQLnbDY=","_parent":{"$ref":"AAAAAAGNDrdXTQLlVS8="},"font":"Arial;13;1","left":517,"top":231,"width":175,"height":13,"text":"Player"},{"_type":"LabelView","_id":"AAAAAAGNDrdXTQLoS/I=","_parent":{"$ref":"AAAAAAGNDrdXTQLlVS8="},"visible":false,"font":"Arial;13;0","left":1024,"top":416,"width":151.6962890625,"height":13,"text":"(from Server Class Model)"},{"_type":"LabelView","_id":"AAAAAAGNDrdXTQLptmY=","_parent":{"$ref":"AAAAAAGNDrdXTQLlVS8="},"visible":false,"font":"Arial;13;0","left":837,"top":286,"width":215,"height":13,"horizontalAlignment":1}],"font":"Arial;13;0","left":512,"top":224,"width":185,"height":25,"stereotypeLabel":{"$ref":"AAAAAAGNDrdXTQLmnpc="},"nameLabel":{"$ref":"AAAAAAGNDrdXTQLnbDY="},"namespaceLabel":{"$ref":"AAAAAAGNDrdXTQLoS/I="},"propertyLabel":{"$ref":"AAAAAAGNDrdXTQLptmY="}},{"_type":"UMLAttributeCompartmentView","_id":"AAAAAAGNDrdXTQLqbLE=","_parent":{"$ref":"AAAAAAGNDrdXTQLkb4M="},"model":{"$ref":"AAAAAAGNDrdXTALirFQ="},"subViews":[{"_type":"UMLAttributeView","_id":"AAAAAAGNDsiLczj87JI=","_parent":{"$ref":"AAAAAAGNDrdXTQLqbLE="},"model":{"$ref":"AAAAAAGNDsiLbDj5Qz4="},"font":"Arial;13;0","left":517,"top":254,"width":175,"height":13,"text":"+username: string","horizontalAlignment":0},{"_type":"UMLAttributeView","_id":"AAAAAAGNDsi+Cznbd2k=","_parent":{"$ref":"AAAAAAGNDrdXTQLqbLE="},"model":{"$ref":"AAAAAAGNDsi+CDnYNyI="},"visible":false,"font":"Arial;13;0","left":517,"top":269,"width":175,"height":13,"text":"+Attribute1","horizontalAlignment":0}],"font":"Arial;13;0","left":512,"top":249,"width":185,"height":23},{"_type":"UMLOperationCompartmentView","_id":"AAAAAAGNDrdXTQLrmC4=","_parent":{"$ref":"AAAAAAGNDrdXTQLkb4M="},"model":{"$ref":"AAAAAAGNDrdXTALirFQ="},"font":"Arial;13;0","left":512,"top":272,"width":185,"height":10},{"_type":"UMLReceptionCompartmentView","_id":"AAAAAAGNDrdXTQLsh/I=","_parent":{"$ref":"AAAAAAGNDrdXTQLkb4M="},"model":{"$ref":"AAAAAAGNDrdXTALirFQ="},"visible":false,"font":"Arial;13;0","left":512,"top":208,"width":10,"height":10},{"_type":"UMLTemplateParameterCompartmentView","_id":"AAAAAAGNDrdXTQLtsdE=","_parent":{"$ref":"AAAAAAGNDrdXTQLkb4M="},"model":{"$ref":"AAAAAAGNDrdXTALirFQ="},"visible":false,"font":"Arial;13;0","left":512,"top":208,"width":10,"height":10}],"font":"Arial;13;0","containerChangeable":true,"left":512,"top":224,"width":184,"height":104,"nameCompartment":{"$ref":"AAAAAAGNDrdXTQLlVS8="},"attributeCompartment":{"$ref":"AAAAAAGNDrdXTQLqbLE="},"operationCompartment":{"$ref":"AAAAAAGNDrdXTQLrmC4="},"receptionCompartment":{"$ref":"AAAAAAGNDrdXTQLsh/I="},"templateParameterCompartment":{"$ref":"AAAAAAGNDrdXTQLtsdE="}},{"_type":"UMLClassView","_id":"AAAAAAGNDrlt5gNofHs=","_parent":{"$ref":"AAAAAAGNDqynnAKBh7A="},"model":{"$ref":"AAAAAAGNDrlt5gNmie0="},"subViews":[{"_type":"UMLNameCompartmentView","_id":"AAAAAAGNDrlt5gNpP/c=","_parent":{"$ref":"AAAAAAGNDrlt5gNofHs="},"model":{"$ref":"AAAAAAGNDrlt5gNmie0="},"subViews":[{"_type":"LabelView","_id":"AAAAAAGNDrlt5gNqjqI=","_parent":{"$ref":"AAAAAAGNDrlt5gNpP/c="},"visible":false,"font":"Arial;13;0","left":-160,"top":-80,"height":13},{"_type":"LabelView","_id":"AAAAAAGNDrlt5gNr/Ss=","_parent":{"$ref":"AAAAAAGNDrlt5gNpP/c="},"font":"Arial;13;1","left":197,"top":231,"width":167,"height":13,"text":"Client"},{"_type":"LabelView","_id":"AAAAAAGNDrlt5gNsd9Q=","_parent":{"$ref":"AAAAAAGNDrlt5gNpP/c="},"visible":false,"font":"Arial;13;0","left":-160,"top":-80,"width":151.6962890625,"height":13,"text":"(from Server Class Model)"},{"_type":"LabelView","_id":"AAAAAAGNDrlt5gNtoNw=","_parent":{"$ref":"AAAAAAGNDrlt5gNpP/c="},"visible":false,"font":"Arial;13;0","left":-160,"top":-80,"height":13,"horizontalAlignment":1}],"font":"Arial;13;0","left":192,"top":224,"width":177,"height":25,"stereotypeLabel":{"$ref":"AAAAAAGNDrlt5gNqjqI="},"nameLabel":{"$ref":"AAAAAAGNDrlt5gNr/Ss="},"namespaceLabel":{"$ref":"AAAAAAGNDrlt5gNsd9Q="},"propertyLabel":{"$ref":"AAAAAAGNDrlt5gNtoNw="}},{"_type":"UMLAttributeCompartmentView","_id":"AAAAAAGNDrlt5gNuWpg=","_parent":{"$ref":"AAAAAAGNDrlt5gNofHs="},"model":{"$ref":"AAAAAAGNDrlt5gNmie0="},"subViews":[{"_type":"UMLAttributeView","_id":"AAAAAAGNDrmbGwOYNOY=","_parent":{"$ref":"AAAAAAGNDrlt5gNuWpg="},"model":{"$ref":"AAAAAAGNDrmbFAOVhWY="},"font":"Arial;13;0","left":197,"top":254,"width":167,"height":13,"text":"+id: ClientId","horizontalAlignment":0}],"font":"Arial;13;0","left":192,"top":249,"width":177,"height":23},{"_type":"UMLOperationCompartmentView","_id":"AAAAAAGNDrlt5gNvCMQ=","_parent":{"$ref":"AAAAAAGNDrlt5gNofHs="},"model":{"$ref":"AAAAAAGNDrlt5gNmie0="},"font":"Arial;13;0","left":192,"top":272,"width":177,"height":10},{"_type":"UMLReceptionCompartmentView","_id":"AAAAAAGNDrlt5gNwXyM=","_parent":{"$ref":"AAAAAAGNDrlt5gNofHs="},"model":{"$ref":"AAAAAAGNDrlt5gNmie0="},"visible":false,"font":"Arial;13;0","left":-80,"top":-40,"width":10,"height":10},{"_type":"UMLTemplateParameterCompartmentView","_id":"AAAAAAGNDrlt5gNxhHI=","_parent":{"$ref":"AAAAAAGNDrlt5gNofHs="},"model":{"$ref":"AAAAAAGNDrlt5gNmie0="},"visible":false,"font":"Arial;13;0","left":-80,"top":-40,"width":10,"height":10}],"font":"Arial;13;0","containerChangeable":true,"left":192,"top":224,"width":176,"height":104,"nameCompartment":{"$ref":"AAAAAAGNDrlt5gNpP/c="},"attributeCompartment":{"$ref":"AAAAAAGNDrlt5gNuWpg="},"operationCompartment":{"$ref":"AAAAAAGNDrlt5gNvCMQ="},"receptionCompartment":{"$ref":"AAAAAAGNDrlt5gNwXyM="},"templateParameterCompartment":{"$ref":"AAAAAAGNDrlt5gNxhHI="}},{"_type":"UMLEnumerationView","_id":"AAAAAAGNDr6O6xIouus=","_parent":{"$ref":"AAAAAAGNDqynnAKBh7A="},"model":{"$ref":"AAAAAAGNDr6O6xImVHk="},"subViews":[{"_type":"UMLNameCompartmentView","_id":"AAAAAAGNDr6O6xIpu6k=","_parent":{"$ref":"AAAAAAGNDr6O6xIouus="},"model":{"$ref":"AAAAAAGNDr6O6xImVHk="},"subViews":[{"_type":"LabelView","_id":"AAAAAAGNDr6O6xIq4gA=","_parent":{"$ref":"AAAAAAGNDr6O6xIpu6k="},"font":"Arial;13;0","left":541,"top":45,"width":117.34619140625,"height":13,"text":"«enumeration»"},{"_type":"LabelView","_id":"AAAAAAGNDr6O6xIrASw=","_parent":{"$ref":"AAAAAAGNDr6O6xIpu6k="},"font":"Arial;13;1","left":541,"top":60,"width":117.34619140625,"height":13,"text":"PlayerMode"},{"_type":"LabelView","_id":"AAAAAAGNDr6O6xIsSEk=","_parent":{"$ref":"AAAAAAGNDr6O6xIpu6k="},"visible":false,"font":"Arial;13;0","left":1072,"top":80,"width":151.6962890625,"height":13,"text":"(from Server Class Model)"},{"_type":"LabelView","_id":"AAAAAAGNDr6O6xItYVU=","_parent":{"$ref":"AAAAAAGNDr6O6xIpu6k="},"visible":false,"font":"Arial;13;0","left":1072,"top":80,"height":13,"horizontalAlignment":1}],"font":"Arial;13;0","left":536,"top":40,"width":127.34619140625,"height":38,"stereotypeLabel":{"$ref":"AAAAAAGNDr6O6xIq4gA="},"nameLabel":{"$ref":"AAAAAAGNDr6O6xIrASw="},"namespaceLabel":{"$ref":"AAAAAAGNDr6O6xIsSEk="},"propertyLabel":{"$ref":"AAAAAAGNDr6O6xItYVU="}},{"_type":"UMLAttributeCompartmentView","_id":"AAAAAAGNDr6O6xIuq+g=","_parent":{"$ref":"AAAAAAGNDr6O6xIouus="},"model":{"$ref":"AAAAAAGNDr6O6xImVHk="},"visible":false,"font":"Arial;13;0","left":536,"top":40,"width":10,"height":10},{"_type":"UMLOperationCompartmentView","_id":"AAAAAAGNDr6O6xIvvJM=","_parent":{"$ref":"AAAAAAGNDr6O6xIouus="},"model":{"$ref":"AAAAAAGNDr6O6xImVHk="},"visible":false,"font":"Arial;13;0","left":536,"top":40,"width":10,"height":10},{"_type":"UMLReceptionCompartmentView","_id":"AAAAAAGNDr6O6xIwgLI=","_parent":{"$ref":"AAAAAAGNDr6O6xIouus="},"model":{"$ref":"AAAAAAGNDr6O6xImVHk="},"visible":false,"font":"Arial;13;0","left":536,"top":40,"width":10,"height":10},{"_type":"UMLTemplateParameterCompartmentView","_id":"AAAAAAGNDr6O6xIx3xY=","_parent":{"$ref":"AAAAAAGNDr6O6xIouus="},"model":{"$ref":"AAAAAAGNDr6O6xImVHk="},"visible":false,"font":"Arial;13;0","left":536,"top":40,"width":10,"height":10},{"_type":"UMLEnumerationLiteralCompartmentView","_id":"AAAAAAGNDr6O6xIyujY=","_parent":{"$ref":"AAAAAAGNDr6O6xIouus="},"model":{"$ref":"AAAAAAGNDr6O6xImVHk="},"subViews":[{"_type":"UMLEnumerationLiteralView","_id":"AAAAAAGNDtFli1D4POE=","_parent":{"$ref":"AAAAAAGNDr6O6xIyujY="},"model":{"$ref":"AAAAAAGNDtFlhVD1qng="},"font":"Arial;13;0","left":541,"top":83,"width":117.34619140625,"height":13,"text":"Login","horizontalAlignment":0},{"_type":"UMLEnumerationLiteralView","_id":"AAAAAAGNDr7L9hNgCOM=","_parent":{"$ref":"AAAAAAGNDr6O6xIyujY="},"model":{"$ref":"AAAAAAGNDr7L7hNatbk="},"font":"Arial;13;0","left":541,"top":98,"width":117.34619140625,"height":13,"text":"MainMenu","horizontalAlignment":0},{"_type":"UMLEnumerationLiteralView","_id":"AAAAAAGNDr+XzhSP/wo=","_parent":{"$ref":"AAAAAAGNDr6O6xIyujY="},"model":{"$ref":"AAAAAAGNDr+XyhSJgcg="},"font":"Arial;13;0","left":541,"top":113,"width":117.34619140625,"height":13,"text":"InLobby","horizontalAlignment":0},{"_type":"UMLEnumerationLiteralView","_id":"AAAAAAGND1ueMlm7UMc=","_parent":{"$ref":"AAAAAAGNDr6O6xIyujY="},"model":{"$ref":"AAAAAAGND1ueLVm4u3Y="},"visible":false,"font":"Arial;13;0","left":541,"top":128,"width":117.34619140625,"height":13,"text":"Literal1","horizontalAlignment":0}],"font":"Arial;13;0","left":536,"top":78,"width":127.34619140625,"height":53}],"font":"Arial;13;0","containerChangeable":true,"left":536,"top":40,"width":126.34619140625,"height":106,"nameCompartment":{"$ref":"AAAAAAGNDr6O6xIpu6k="},"suppressAttributes":true,"suppressOperations":true,"attributeCompartment":{"$ref":"AAAAAAGNDr6O6xIuq+g="},"operationCompartment":{"$ref":"AAAAAAGNDr6O6xIvvJM="},"receptionCompartment":{"$ref":"AAAAAAGNDr6O6xIwgLI="},"templateParameterCompartment":{"$ref":"AAAAAAGNDr6O6xIx3xY="},"enumerationLiteralCompartment":{"$ref":"AAAAAAGNDr6O6xIyujY="}},{"_type":"UMLAssociationView","_id":"AAAAAAGNDsK74xZM6Ao=","_parent":{"$ref":"AAAAAAGNDqynnAKBh7A="},"model":{"$ref":"AAAAAAGNDsK74xZIfVQ="},"subViews":[{"_type":"EdgeLabelView","_id":"AAAAAAGNDsK74xZNxe4=","_parent":{"$ref":"AAAAAAGNDsK74xZM6Ao="},"model":{"$ref":"AAAAAAGNDsK74xZIfVQ="},"font":"Arial;13;0","left":408,"top":254,"width":40.828125,"height":13,"alpha":-4.037648444665335,"distance":19.209372712298546,"hostEdge":{"$ref":"AAAAAAGNDsK74xZM6Ao="},"edgePosition":1,"text":"+client"},{"_type":"EdgeLabelView","_id":"AAAAAAGNDsK74xZOYao=","_parent":{"$ref":"AAAAAAGNDsK74xZM6Ao="},"model":{"$ref":"AAAAAAGNDsK74xZIfVQ="},"visible":null,"font":"Arial;13;0","left":440,"top":240,"height":13,"alpha":1.5707963267948966,"distance":30,"hostEdge":{"$ref":"AAAAAAGNDsK74xZM6Ao="},"edgePosition":1},{"_type":"EdgeLabelView","_id":"AAAAAAGNDsK74xZPM0U=","_parent":{"$ref":"AAAAAAGNDsK74xZM6Ao="},"model":{"$ref":"AAAAAAGNDsK74xZIfVQ="},"visible":false,"font":"Arial;13;0","left":440,"top":285,"height":13,"alpha":-1.5707963267948966,"distance":15,"hostEdge":{"$ref":"AAAAAAGNDsK74xZM6Ao="},"edgePosition":1},{"_type":"EdgeLabelView","_id":"AAAAAAGNDsK74xZQ+dE=","_parent":{"$ref":"AAAAAAGNDsK74xZM6Ao="},"model":{"$ref":"AAAAAAGNDsK74xZJ340="},"visible":false,"font":"Arial;13;0","left":394,"top":255,"height":13,"alpha":0.5235987755982988,"distance":30,"hostEdge":{"$ref":"AAAAAAGNDsK74xZM6Ao="},"edgePosition":2},{"_type":"EdgeLabelView","_id":"AAAAAAGNDsK74xZRsV0=","_parent":{"$ref":"AAAAAAGNDsK74xZM6Ao="},"model":{"$ref":"AAAAAAGNDsK74xZJ340="},"visible":false,"font":"Arial;13;0","left":397,"top":241,"height":13,"alpha":0.7853981633974483,"distance":40,"hostEdge":{"$ref":"AAAAAAGNDsK74xZM6Ao="},"edgePosition":2},{"_type":"EdgeLabelView","_id":"AAAAAAGNDsK74xZSg4c=","_parent":{"$ref":"AAAAAAGNDsK74xZM6Ao="},"model":{"$ref":"AAAAAAGNDsK74xZJ340="},"visible":false,"font":"Arial;13;0","left":387,"top":282,"width":7.22998046875,"height":13,"alpha":-0.5235987755982988,"distance":25,"hostEdge":{"$ref":"AAAAAAGNDsK74xZM6Ao="},"edgePosition":2,"text":"1"},{"_type":"EdgeLabelView","_id":"AAAAAAGNDsK74xZTaM0=","_parent":{"$ref":"AAAAAAGNDsK74xZM6Ao="},"model":{"$ref":"AAAAAAGNDsK74xZKhj8="},"visible":false,"font":"Arial;13;0","left":485,"top":255,"height":13,"alpha":-0.5235987755982988,"distance":30,"hostEdge":{"$ref":"AAAAAAGNDsK74xZM6Ao="}},{"_type":"EdgeLabelView","_id":"AAAAAAGNDsK74xZU48Q=","_parent":{"$ref":"AAAAAAGNDsK74xZM6Ao="},"model":{"$ref":"AAAAAAGNDsK74xZKhj8="},"visible":false,"font":"Arial;13;0","left":482,"top":241,"height":13,"alpha":-0.7853981633974483,"distance":40,"hostEdge":{"$ref":"AAAAAAGNDsK74xZM6Ao="}},{"_type":"EdgeLabelView","_id":"AAAAAAGNDsK74xZViZQ=","_parent":{"$ref":"AAAAAAGNDsK74xZM6Ao="},"model":{"$ref":"AAAAAAGNDsK74xZKhj8="},"visible":false,"font":"Arial;13;0","left":486,"top":282,"width":7.22998046875,"height":13,"alpha":0.5235987755982988,"distance":25,"hostEdge":{"$ref":"AAAAAAGNDsK74xZM6Ao="},"text":"1"},{"_type":"UMLQualifierCompartmentView","_id":"AAAAAAGNDsK74xZWJEs=","_parent":{"$ref":"AAAAAAGNDsK74xZM6Ao="},"model":{"$ref":"AAAAAAGNDsK74xZJ340="},"visible":false,"font":"Arial;13;0","width":10,"height":10},{"_type":"UMLQualifierCompartmentView","_id":"AAAAAAGNDsK74xZXIr0=","_parent":{"$ref":"AAAAAAGNDsK74xZM6Ao="},"model":{"$ref":"AAAAAAGNDsK74xZKhj8="},"visible":false,"font":"Arial;13;0","width":10,"height":10}],"font":"Arial;13;0","head":{"$ref":"AAAAAAGNDrdXTQLkb4M="},"tail":{"$ref":"AAAAAAGNDrlt5gNofHs="},"lineStyle":1,"points":"369:276;511:276","showVisibility":true,"nameLabel":{"$ref":"AAAAAAGNDsK74xZNxe4="},"stereotypeLabel":{"$ref":"AAAAAAGNDsK74xZOYao="},"propertyLabel":{"$ref":"AAAAAAGNDsK74xZPM0U="},"showEndOrder":"hide","tailRoleNameLabel":{"$ref":"AAAAAAGNDsK74xZQ+dE="},"tailPropertyLabel":{"$ref":"AAAAAAGNDsK74xZRsV0="},"tailMultiplicityLabel":{"$ref":"AAAAAAGNDsK74xZSg4c="},"headRoleNameLabel":{"$ref":"AAAAAAGNDsK74xZTaM0="},"headPropertyLabel":{"$ref":"AAAAAAGNDsK74xZU48Q="},"headMultiplicityLabel":{"$ref":"AAAAAAGNDsK74xZViZQ="},"tailQualifiersCompartment":{"$ref":"AAAAAAGNDsK74xZWJEs="},"headQualifiersCompartment":{"$ref":"AAAAAAGNDsK74xZXIr0="}},{"_type":"UMLAssociationView","_id":"AAAAAAGNDsN/zxmTlRE=","_parent":{"$ref":"AAAAAAGNDqynnAKBh7A="},"model":{"$ref":"AAAAAAGNDsN/zxmPd9I="},"subViews":[{"_type":"EdgeLabelView","_id":"AAAAAAGNDsN/zxmUOCM=","_parent":{"$ref":"AAAAAAGNDsN/zxmTlRE="},"model":{"$ref":"AAAAAAGNDsN/zxmPd9I="},"font":"Arial;13;0","left":575,"top":176,"width":40.11083984375,"height":13,"alpha":-2.15466782179238,"distance":5.830951894845301,"hostEdge":{"$ref":"AAAAAAGNDsN/zxmTlRE="},"edgePosition":1,"text":"+mode"},{"_type":"EdgeLabelView","_id":"AAAAAAGNDsN/zxmV2dw=","_parent":{"$ref":"AAAAAAGNDsN/zxmTlRE="},"model":{"$ref":"AAAAAAGNDsN/zxmPd9I="},"visible":null,"font":"Arial;13;0","left":630,"top":177,"height":13,"alpha":1.5707963267948966,"distance":30,"hostEdge":{"$ref":"AAAAAAGNDsN/zxmTlRE="},"edgePosition":1},{"_type":"EdgeLabelView","_id":"AAAAAAGNDsN/zxmWsTw=","_parent":{"$ref":"AAAAAAGNDsN/zxmTlRE="},"model":{"$ref":"AAAAAAGNDsN/zxmPd9I="},"visible":false,"font":"Arial;13;0","left":586,"top":179,"height":13,"alpha":-1.5707963267948966,"distance":15,"hostEdge":{"$ref":"AAAAAAGNDsN/zxmTlRE="},"edgePosition":1},{"_type":"EdgeLabelView","_id":"AAAAAAGNDsN/0BmXOWE=","_parent":{"$ref":"AAAAAAGNDsN/zxmTlRE="},"model":{"$ref":"AAAAAAGNDsN/zxmQK3w="},"visible":false,"font":"Arial;13;0","left":616,"top":166,"height":13,"alpha":0.5235987755982988,"distance":30,"hostEdge":{"$ref":"AAAAAAGNDsN/zxmTlRE="},"edgePosition":2},{"_type":"EdgeLabelView","_id":"AAAAAAGNDsN/0BmYk/s=","_parent":{"$ref":"AAAAAAGNDsN/zxmTlRE="},"model":{"$ref":"AAAAAAGNDsN/zxmQK3w="},"visible":false,"font":"Arial;13;0","left":629,"top":168,"height":13,"alpha":0.7853981633974483,"distance":40,"hostEdge":{"$ref":"AAAAAAGNDsN/zxmTlRE="},"edgePosition":2},{"_type":"EdgeLabelView","_id":"AAAAAAGNDsN/0BmZPMU=","_parent":{"$ref":"AAAAAAGNDsN/zxmTlRE="},"model":{"$ref":"AAAAAAGNDsN/zxmQK3w="},"visible":false,"font":"Arial;13;0","left":585,"top":163,"width":7.22998046875,"height":13,"alpha":-0.5235987755982988,"distance":25,"hostEdge":{"$ref":"AAAAAAGNDsN/zxmTlRE="},"edgePosition":2,"text":"1"},{"_type":"EdgeLabelView","_id":"AAAAAAGNDsN/0Bmax6w=","_parent":{"$ref":"AAAAAAGNDsN/zxmTlRE="},"model":{"$ref":"AAAAAAGNDsN/zxmRwNs="},"visible":false,"font":"Arial;13;0","left":616,"top":190,"height":13,"alpha":-0.5235987755982988,"distance":30,"hostEdge":{"$ref":"AAAAAAGNDsN/zxmTlRE="}},{"_type":"EdgeLabelView","_id":"AAAAAAGNDsN/0Bmb9Ew=","_parent":{"$ref":"AAAAAAGNDsN/zxmTlRE="},"model":{"$ref":"AAAAAAGNDsN/zxmRwNs="},"visible":false,"font":"Arial;13;0","left":630,"top":187,"height":13,"alpha":-0.7853981633974483,"distance":40,"hostEdge":{"$ref":"AAAAAAGNDsN/zxmTlRE="}},{"_type":"EdgeLabelView","_id":"AAAAAAGNDsN/0BmcIoE=","_parent":{"$ref":"AAAAAAGNDsN/zxmTlRE="},"model":{"$ref":"AAAAAAGNDsN/zxmRwNs="},"visible":false,"font":"Arial;13;0","left":586,"top":195,"width":7.22998046875,"height":13,"alpha":0.5235987755982988,"distance":25,"hostEdge":{"$ref":"AAAAAAGNDsN/zxmTlRE="},"text":"1"},{"_type":"UMLQualifierCompartmentView","_id":"AAAAAAGNDsN/0Bmdq/A=","_parent":{"$ref":"AAAAAAGNDsN/zxmTlRE="},"model":{"$ref":"AAAAAAGNDsN/zxmQK3w="},"visible":false,"font":"Arial;13;0","width":10,"height":10},{"_type":"UMLQualifierCompartmentView","_id":"AAAAAAGNDsN/0Bme1hE=","_parent":{"$ref":"AAAAAAGNDsN/zxmTlRE="},"model":{"$ref":"AAAAAAGNDsN/zxmRwNs="},"visible":false,"font":"Arial;13;0","width":10,"height":10}],"font":"Arial;13;0","head":{"$ref":"AAAAAAGNDrdXTQLkb4M="},"tail":{"$ref":"AAAAAAGNDr6O6xIouus="},"lineStyle":1,"points":"600:147;603:223","showVisibility":true,"nameLabel":{"$ref":"AAAAAAGNDsN/zxmUOCM="},"stereotypeLabel":{"$ref":"AAAAAAGNDsN/zxmV2dw="},"propertyLabel":{"$ref":"AAAAAAGNDsN/zxmWsTw="},"showEndOrder":"hide","tailRoleNameLabel":{"$ref":"AAAAAAGNDsN/0BmXOWE="},"tailPropertyLabel":{"$ref":"AAAAAAGNDsN/0BmYk/s="},"tailMultiplicityLabel":{"$ref":"AAAAAAGNDsN/0BmZPMU="},"headRoleNameLabel":{"$ref":"AAAAAAGNDsN/0Bmax6w="},"headPropertyLabel":{"$ref":"AAAAAAGNDsN/0Bmb9Ew="},"headMultiplicityLabel":{"$ref":"AAAAAAGNDsN/0BmcIoE="},"tailQualifiersCompartment":{"$ref":"AAAAAAGNDsN/0Bmdq/A="},"headQualifiersCompartment":{"$ref":"AAAAAAGNDsN/0Bme1hE="}},{"_type":"UMLClassView","_id":"AAAAAAGNDscRISvAODs=","_parent":{"$ref":"AAAAAAGNDqynnAKBh7A="},"model":{"$ref":"AAAAAAGNDscRICu+F5w="},"subViews":[{"_type":"UMLNameCompartmentView","_id":"AAAAAAGNDscRISvBPAc=","_parent":{"$ref":"AAAAAAGNDscRISvAODs="},"model":{"$ref":"AAAAAAGNDscRICu+F5w="},"subViews":[{"_type":"LabelView","_id":"AAAAAAGNDscRISvCu80=","_parent":{"$ref":"AAAAAAGNDscRISvBPAc="},"visible":false,"font":"Arial;13;0","left":-16,"top":96,"height":13},{"_type":"LabelView","_id":"AAAAAAGNDscRISvDdpU=","_parent":{"$ref":"AAAAAAGNDscRISvBPAc="},"font":"Arial;13;1","left":525,"top":447,"width":159,"height":13,"text":"Lobby"},{"_type":"LabelView","_id":"AAAAAAGNDscRISvEQtU=","_parent":{"$ref":"AAAAAAGNDscRISvBPAc="},"visible":false,"font":"Arial;13;0","left":-16,"top":96,"width":151.6962890625,"height":13,"text":"(from Server Class Model)"},{"_type":"LabelView","_id":"AAAAAAGNDscRISvFb9c=","_parent":{"$ref":"AAAAAAGNDscRISvBPAc="},"visible":false,"font":"Arial;13;0","left":-16,"top":96,"height":13,"horizontalAlignment":1}],"font":"Arial;13;0","left":520,"top":440,"width":169,"height":25,"stereotypeLabel":{"$ref":"AAAAAAGNDscRISvCu80="},"nameLabel":{"$ref":"AAAAAAGNDscRISvDdpU="},"namespaceLabel":{"$ref":"AAAAAAGNDscRISvEQtU="},"propertyLabel":{"$ref":"AAAAAAGNDscRISvFb9c="}},{"_type":"UMLAttributeCompartmentView","_id":"AAAAAAGNDscRISvG9dw=","_parent":{"$ref":"AAAAAAGNDscRISvAODs="},"model":{"$ref":"AAAAAAGNDscRICu+F5w="},"subViews":[{"_type":"UMLAttributeView","_id":"AAAAAAGNDsjuTDsIpBQ=","_parent":{"$ref":"AAAAAAGNDscRISvG9dw="},"model":{"$ref":"AAAAAAGNDsjuRDr/Nlo="},"font":"Arial;13;0","left":525,"top":470,"width":159,"height":13,"text":"+host: &Player","horizontalAlignment":0},{"_type":"UMLAttributeView","_id":"AAAAAAGNDslNgjyTdCg=","_parent":{"$ref":"AAAAAAGNDscRISvG9dw="},"model":{"$ref":"AAAAAAGNDslNfjyKeJA="},"font":"Arial;13;0","left":525,"top":485,"width":159,"height":13,"text":"+id: uuid","horizontalAlignment":0}],"font":"Arial;13;0","left":520,"top":465,"width":169,"height":38},{"_type":"UMLOperationCompartmentView","_id":"AAAAAAGNDscRISvHqFY=","_parent":{"$ref":"AAAAAAGNDscRISvAODs="},"model":{"$ref":"AAAAAAGNDscRICu+F5w="},"font":"Arial;13;0","left":520,"top":503,"width":169,"height":10},{"_type":"UMLReceptionCompartmentView","_id":"AAAAAAGNDscRISvIPhc=","_parent":{"$ref":"AAAAAAGNDscRISvAODs="},"model":{"$ref":"AAAAAAGNDscRICu+F5w="},"visible":false,"font":"Arial;13;0","left":-8,"top":48,"width":10,"height":10},{"_type":"UMLTemplateParameterCompartmentView","_id":"AAAAAAGNDscRISvJnJs=","_parent":{"$ref":"AAAAAAGNDscRISvAODs="},"model":{"$ref":"AAAAAAGNDscRICu+F5w="},"visible":false,"font":"Arial;13;0","left":-8,"top":48,"width":10,"height":10}],"font":"Arial;13;0","containerChangeable":true,"left":520,"top":440,"width":168,"height":160,"nameCompartment":{"$ref":"AAAAAAGNDscRISvBPAc="},"attributeCompartment":{"$ref":"AAAAAAGNDscRISvG9dw="},"operationCompartment":{"$ref":"AAAAAAGNDscRISvHqFY="},"receptionCompartment":{"$ref":"AAAAAAGNDscRISvIPhc="},"templateParameterCompartment":{"$ref":"AAAAAAGNDscRISvJnJs="}},{"_type":"UMLAssociationView","_id":"AAAAAAGNDsdXfSz7nnE=","_parent":{"$ref":"AAAAAAGNDqynnAKBh7A="},"model":{"$ref":"AAAAAAGNDsdXfSz3pxo="},"subViews":[{"_type":"EdgeLabelView","_id":"AAAAAAGNDsdXfSz8TwA=","_parent":{"$ref":"AAAAAAGNDsdXfSz7nnE="},"model":{"$ref":"AAAAAAGNDsdXfSz3pxo="},"font":"Arial;13;0","left":568,"top":383,"width":63.22900390625,"height":13,"alpha":-0.7853973452146299,"distance":7.0710678118654755,"hostEdge":{"$ref":"AAAAAAGNDsdXfSz7nnE="},"edgePosition":1,"text":"+playerList"},{"_type":"EdgeLabelView","_id":"AAAAAAGNDsdXfSz91zY=","_parent":{"$ref":"AAAAAAGNDsdXfSz7nnE="},"model":{"$ref":"AAAAAAGNDsdXfSz3pxo="},"visible":null,"font":"Arial;13;0","left":633,"top":377,"height":13,"alpha":1.5707963267948966,"distance":30,"hostEdge":{"$ref":"AAAAAAGNDsdXfSz7nnE="},"edgePosition":1},{"_type":"EdgeLabelView","_id":"AAAAAAGNDsdXfSz+DY4=","_parent":{"$ref":"AAAAAAGNDsdXfSz7nnE="},"model":{"$ref":"AAAAAAGNDsdXfSz3pxo="},"visible":false,"font":"Arial;13;0","left":589,"top":378,"height":13,"alpha":-1.5707963267948966,"distance":15,"hostEdge":{"$ref":"AAAAAAGNDsdXfSz7nnE="},"edgePosition":1},{"_type":"EdgeLabelView","_id":"AAAAAAGNDsdXfSz/Yy8=","_parent":{"$ref":"AAAAAAGNDsdXfSz7nnE="},"model":{"$ref":"AAAAAAGNDsdXfSz4lCg="},"visible":false,"font":"Arial;13;0","left":619,"top":348,"height":13,"alpha":0.5235987755982988,"distance":30,"hostEdge":{"$ref":"AAAAAAGNDsdXfSz7nnE="},"edgePosition":2},{"_type":"EdgeLabelView","_id":"AAAAAAGNDsdXfS0A5xE=","_parent":{"$ref":"AAAAAAGNDsdXfSz7nnE="},"model":{"$ref":"AAAAAAGNDsdXfSz4lCg="},"visible":false,"font":"Arial;13;0","left":632,"top":351,"height":13,"alpha":0.7853981633974483,"distance":40,"hostEdge":{"$ref":"AAAAAAGNDsdXfSz7nnE="},"edgePosition":2},{"_type":"EdgeLabelView","_id":"AAAAAAGNDsdXfS0Bwhg=","_parent":{"$ref":"AAAAAAGNDsdXfSz7nnE="},"model":{"$ref":"AAAAAAGNDsdXfSz4lCg="},"font":"Arial;13;0","left":576,"top":336,"width":19.5126953125,"height":13,"alpha":-0.9707459590191272,"distance":23.021728866442675,"hostEdge":{"$ref":"AAAAAAGNDsdXfSz7nnE="},"edgePosition":2,"text":"0..*"},{"_type":"EdgeLabelView","_id":"AAAAAAGNDsdXfS0CFd8=","_parent":{"$ref":"AAAAAAGNDsdXfSz7nnE="},"model":{"$ref":"AAAAAAGNDsdXfSz5ouE="},"visible":false,"font":"Arial;13;0","left":619,"top":407,"height":13,"alpha":-0.5235987755982988,"distance":30,"hostEdge":{"$ref":"AAAAAAGNDsdXfSz7nnE="}},{"_type":"EdgeLabelView","_id":"AAAAAAGNDsdXfS0DmuU=","_parent":{"$ref":"AAAAAAGNDsdXfSz7nnE="},"model":{"$ref":"AAAAAAGNDsdXfSz5ouE="},"visible":false,"font":"Arial;13;0","left":632,"top":404,"height":13,"alpha":-0.7853981633974483,"distance":40,"hostEdge":{"$ref":"AAAAAAGNDsdXfSz7nnE="}},{"_type":"EdgeLabelView","_id":"AAAAAAGNDsdXfS0E6tc=","_parent":{"$ref":"AAAAAAGNDsdXfSz7nnE="},"model":{"$ref":"AAAAAAGNDsdXfSz5ouE="},"font":"Arial;13;0","left":588,"top":411,"width":7.22998046875,"height":13,"alpha":0.5235987755982988,"distance":25,"hostEdge":{"$ref":"AAAAAAGNDsdXfSz7nnE="},"text":"1"},{"_type":"UMLQualifierCompartmentView","_id":"AAAAAAGNDsdXfS0FjiE=","_parent":{"$ref":"AAAAAAGNDsdXfSz7nnE="},"model":{"$ref":"AAAAAAGNDsdXfSz4lCg="},"visible":false,"font":"Arial;13;0","width":10,"height":10},{"_type":"UMLQualifierCompartmentView","_id":"AAAAAAGNDsdXfS0GBFo=","_parent":{"$ref":"AAAAAAGNDsdXfSz7nnE="},"model":{"$ref":"AAAAAAGNDsdXfSz5ouE="},"visible":false,"font":"Arial;13;0","width":10,"height":10}],"font":"Arial;13;0","head":{"$ref":"AAAAAAGNDscRISvAODs="},"tail":{"$ref":"AAAAAAGNDrdXTQLkb4M="},"lineStyle":1,"points":"604:329;604:439","showVisibility":true,"nameLabel":{"$ref":"AAAAAAGNDsdXfSz8TwA="},"stereotypeLabel":{"$ref":"AAAAAAGNDsdXfSz91zY="},"propertyLabel":{"$ref":"AAAAAAGNDsdXfSz+DY4="},"showEndOrder":"hide","tailRoleNameLabel":{"$ref":"AAAAAAGNDsdXfSz/Yy8="},"tailPropertyLabel":{"$ref":"AAAAAAGNDsdXfS0A5xE="},"tailMultiplicityLabel":{"$ref":"AAAAAAGNDsdXfS0Bwhg="},"headRoleNameLabel":{"$ref":"AAAAAAGNDsdXfS0CFd8="},"headPropertyLabel":{"$ref":"AAAAAAGNDsdXfS0DmuU="},"headMultiplicityLabel":{"$ref":"AAAAAAGNDsdXfS0E6tc="},"tailQualifiersCompartment":{"$ref":"AAAAAAGNDsdXfS0FjiE="},"headQualifiersCompartment":{"$ref":"AAAAAAGNDsdXfS0GBFo="}},{"_type":"UMLEnumerationView","_id":"AAAAAAGNDsoLLj5NgFs=","_parent":{"$ref":"AAAAAAGNDqynnAKBh7A="},"model":{"$ref":"AAAAAAGNDsoLLj5LYyE="},"subViews":[{"_type":"UMLNameCompartmentView","_id":"AAAAAAGNDsoLLj5OoE0=","_parent":{"$ref":"AAAAAAGNDsoLLj5NgFs="},"model":{"$ref":"AAAAAAGNDsoLLj5LYyE="},"subViews":[{"_type":"LabelView","_id":"AAAAAAGNDsoLLj5PTX4=","_parent":{"$ref":"AAAAAAGNDsoLLj5OoE0="},"font":"Arial;13;0","left":213,"top":461,"width":117.34619140625,"height":13,"text":"«enumeration»"},{"_type":"LabelView","_id":"AAAAAAGNDsoLLj5Qc+M=","_parent":{"$ref":"AAAAAAGNDsoLLj5OoE0="},"font":"Arial;13;1","left":213,"top":476,"width":117.34619140625,"height":13,"text":"LobbyState"},{"_type":"LabelView","_id":"AAAAAAGNDsoLLj5Rwrs=","_parent":{"$ref":"AAAAAAGNDsoLLj5OoE0="},"visible":false,"font":"Arial;13;0","left":416,"top":912,"width":151.6962890625,"height":13,"text":"(from Server Class Model)"},{"_type":"LabelView","_id":"AAAAAAGNDsoLLj5SQPM=","_parent":{"$ref":"AAAAAAGNDsoLLj5OoE0="},"visible":false,"font":"Arial;13;0","left":416,"top":912,"height":13,"horizontalAlignment":1}],"font":"Arial;13;0","left":208,"top":456,"width":127.34619140625,"height":38,"stereotypeLabel":{"$ref":"AAAAAAGNDsoLLj5PTX4="},"nameLabel":{"$ref":"AAAAAAGNDsoLLj5Qc+M="},"namespaceLabel":{"$ref":"AAAAAAGNDsoLLj5Rwrs="},"propertyLabel":{"$ref":"AAAAAAGNDsoLLj5SQPM="}},{"_type":"UMLAttributeCompartmentView","_id":"AAAAAAGNDsoLLj5TFXw=","_parent":{"$ref":"AAAAAAGNDsoLLj5NgFs="},"model":{"$ref":"AAAAAAGNDsoLLj5LYyE="},"visible":false,"font":"Arial;13;0","left":208,"top":456,"width":10,"height":10},{"_type":"UMLOperationCompartmentView","_id":"AAAAAAGNDsoLLj5Ubzg=","_parent":{"$ref":"AAAAAAGNDsoLLj5NgFs="},"model":{"$ref":"AAAAAAGNDsoLLj5LYyE="},"visible":false,"font":"Arial;13;0","left":208,"top":456,"width":10,"height":10},{"_type":"UMLReceptionCompartmentView","_id":"AAAAAAGNDsoLLj5ViPg=","_parent":{"$ref":"AAAAAAGNDsoLLj5NgFs="},"model":{"$ref":"AAAAAAGNDsoLLj5LYyE="},"visible":false,"font":"Arial;13;0","left":208,"top":456,"width":10,"height":10},{"_type":"UMLTemplateParameterCompartmentView","_id":"AAAAAAGNDsoLLj5WJsc=","_parent":{"$ref":"AAAAAAGNDsoLLj5NgFs="},"model":{"$ref":"AAAAAAGNDsoLLj5LYyE="},"visible":false,"font":"Arial;13;0","left":208,"top":456,"width":10,"height":10},{"_type":"UMLEnumerationLiteralCompartmentView","_id":"AAAAAAGNDsoLLj5XpAk=","_parent":{"$ref":"AAAAAAGNDsoLLj5NgFs="},"model":{"$ref":"AAAAAAGNDsoLLj5LYyE="},"subViews":[{"_type":"UMLEnumerationLiteralView","_id":"AAAAAAGNDspQVUOzRXo=","_parent":{"$ref":"AAAAAAGNDsoLLj5XpAk="},"model":{"$ref":"AAAAAAGNDspQTUOnt/s="},"font":"Arial;13;0","left":213,"top":499,"width":117.34619140625,"height":13,"text":"Lobby","horizontalAlignment":0},{"_type":"UMLEnumerationLiteralView","_id":"AAAAAAGNDst3zUY9s2Q=","_parent":{"$ref":"AAAAAAGNDsoLLj5XpAk="},"model":{"$ref":"AAAAAAGNDst3x0YxuXs="},"font":"Arial;13;0","left":213,"top":514,"width":117.34619140625,"height":13,"text":"PickNames","horizontalAlignment":0},{"_type":"UMLEnumerationLiteralView","_id":"AAAAAAGNDsumqUdAn9o=","_parent":{"$ref":"AAAAAAGNDsoLLj5XpAk="},"model":{"$ref":"AAAAAAGNDsumpUc0Waw="},"font":"Arial;13;0","left":213,"top":529,"width":117.34619140625,"height":13,"text":"Day","horizontalAlignment":0},{"_type":"UMLEnumerationLiteralView","_id":"AAAAAAGNDsva60gyDL8=","_parent":{"$ref":"AAAAAAGNDsoLLj5XpAk="},"model":{"$ref":"AAAAAAGNDsva50gmwcM="},"font":"Arial;13;0","left":213,"top":544,"width":117.34619140625,"height":13,"text":"Night","horizontalAlignment":0},{"_type":"UMLEnumerationLiteralView","_id":"AAAAAAGNDswOZkkjqaY=","_parent":{"$ref":"AAAAAAGNDsoLLj5XpAk="},"model":{"$ref":"AAAAAAGNDswOYkkXYJ8="},"font":"Arial;13;0","left":213,"top":559,"width":117.34619140625,"height":13,"text":"Evening","horizontalAlignment":0}],"font":"Arial;13;0","left":208,"top":494,"width":127.34619140625,"height":83}],"font":"Arial;13;0","containerChangeable":true,"left":208,"top":456,"width":126.34619140625,"height":136,"nameCompartment":{"$ref":"AAAAAAGNDsoLLj5OoE0="},"suppressAttributes":true,"suppressOperations":true,"attributeCompartment":{"$ref":"AAAAAAGNDsoLLj5TFXw="},"operationCompartment":{"$ref":"AAAAAAGNDsoLLj5Ubzg="},"receptionCompartment":{"$ref":"AAAAAAGNDsoLLj5ViPg="},"templateParameterCompartment":{"$ref":"AAAAAAGNDsoLLj5WJsc="},"enumerationLiteralCompartment":{"$ref":"AAAAAAGNDsoLLj5XpAk="}},{"_type":"UMLAssociationView","_id":"AAAAAAGNDsxaAkrkIqo=","_parent":{"$ref":"AAAAAAGNDqynnAKBh7A="},"model":{"$ref":"AAAAAAGNDsxaAUrgOfo="},"subViews":[{"_type":"EdgeLabelView","_id":"AAAAAAGNDsxaAkrldWc=","_parent":{"$ref":"AAAAAAGNDsxaAkrkIqo="},"model":{"$ref":"AAAAAAGNDsxaAUrgOfo="},"font":"Arial;13;0","left":409,"top":501,"width":35.775390625,"height":13,"alpha":1.5707963267948966,"distance":15,"hostEdge":{"$ref":"AAAAAAGNDsxaAkrkIqo="},"edgePosition":1,"text":"+state"},{"_type":"EdgeLabelView","_id":"AAAAAAGNDsxaAkrmdAQ=","_parent":{"$ref":"AAAAAAGNDsxaAkrkIqo="},"model":{"$ref":"AAAAAAGNDsxaAUrgOfo="},"visible":null,"font":"Arial;13;0","left":426,"top":486,"height":13,"alpha":1.5707963267948966,"distance":30,"hostEdge":{"$ref":"AAAAAAGNDsxaAkrkIqo="},"edgePosition":1},{"_type":"EdgeLabelView","_id":"AAAAAAGNDsxaAkrnlqI=","_parent":{"$ref":"AAAAAAGNDsxaAkrkIqo="},"model":{"$ref":"AAAAAAGNDsxaAUrgOfo="},"visible":false,"font":"Arial;13;0","left":427,"top":530,"height":13,"alpha":-1.5707963267948966,"distance":15,"hostEdge":{"$ref":"AAAAAAGNDsxaAkrkIqo="},"edgePosition":1},{"_type":"EdgeLabelView","_id":"AAAAAAGNDsxaAkrobXM=","_parent":{"$ref":"AAAAAAGNDsxaAkrkIqo="},"model":{"$ref":"AAAAAAGNDsxaAUrh20M="},"visible":false,"font":"Arial;13;0","left":360,"top":501,"height":13,"alpha":0.5235987755982988,"distance":30,"hostEdge":{"$ref":"AAAAAAGNDsxaAkrkIqo="},"edgePosition":2},{"_type":"EdgeLabelView","_id":"AAAAAAGNDsxaAkrpuiM=","_parent":{"$ref":"AAAAAAGNDsxaAkrkIqo="},"model":{"$ref":"AAAAAAGNDsxaAUrh20M="},"visible":false,"font":"Arial;13;0","left":362,"top":488,"height":13,"alpha":0.7853981633974483,"distance":40,"hostEdge":{"$ref":"AAAAAAGNDsxaAkrkIqo="},"edgePosition":2},{"_type":"EdgeLabelView","_id":"AAAAAAGNDsxaAkrqqI4=","_parent":{"$ref":"AAAAAAGNDsxaAkrkIqo="},"model":{"$ref":"AAAAAAGNDsxaAUrh20M="},"visible":false,"font":"Arial;13;0","left":356,"top":529,"height":13,"alpha":-0.5235987755982988,"distance":25,"hostEdge":{"$ref":"AAAAAAGNDsxaAkrkIqo="},"edgePosition":2},{"_type":"EdgeLabelView","_id":"AAAAAAGNDsxaAkrrNR8=","_parent":{"$ref":"AAAAAAGNDsxaAkrkIqo="},"model":{"$ref":"AAAAAAGNDsxaAkrizjw="},"visible":false,"font":"Arial;13;0","left":492,"top":500,"height":13,"alpha":-0.5235987755982988,"distance":30,"hostEdge":{"$ref":"AAAAAAGNDsxaAkrkIqo="}},{"_type":"EdgeLabelView","_id":"AAAAAAGNDsxaAkrs2vA=","_parent":{"$ref":"AAAAAAGNDsxaAkrkIqo="},"model":{"$ref":"AAAAAAGNDsxaAkrizjw="},"visible":false,"font":"Arial;13;0","left":490,"top":487,"height":13,"alpha":-0.7853981633974483,"distance":40,"hostEdge":{"$ref":"AAAAAAGNDsxaAkrkIqo="}},{"_type":"EdgeLabelView","_id":"AAAAAAGNDsxaAkrtKMQ=","_parent":{"$ref":"AAAAAAGNDsxaAkrkIqo="},"model":{"$ref":"AAAAAAGNDsxaAkrizjw="},"visible":false,"font":"Arial;13;0","left":497,"top":527,"height":13,"alpha":0.5235987755982988,"distance":25,"hostEdge":{"$ref":"AAAAAAGNDsxaAkrkIqo="}},{"_type":"UMLQualifierCompartmentView","_id":"AAAAAAGNDsxaAkruahI=","_parent":{"$ref":"AAAAAAGNDsxaAkrkIqo="},"model":{"$ref":"AAAAAAGNDsxaAUrh20M="},"visible":false,"font":"Arial;13;0","width":10,"height":10},{"_type":"UMLQualifierCompartmentView","_id":"AAAAAAGNDsxaAkrvv0o=","_parent":{"$ref":"AAAAAAGNDsxaAkrkIqo="},"model":{"$ref":"AAAAAAGNDsxaAkrizjw="},"visible":false,"font":"Arial;13;0","width":10,"height":10}],"font":"Arial;13;0","head":{"$ref":"AAAAAAGNDscRISvAODs="},"tail":{"$ref":"AAAAAAGNDsoLLj5NgFs="},"lineStyle":1,"points":"335:523;519:521","showVisibility":true,"nameLabel":{"$ref":"AAAAAAGNDsxaAkrldWc="},"stereotypeLabel":{"$ref":"AAAAAAGNDsxaAkrmdAQ="},"propertyLabel":{"$ref":"AAAAAAGNDsxaAkrnlqI="},"showEndOrder":"hide","tailRoleNameLabel":{"$ref":"AAAAAAGNDsxaAkrobXM="},"tailPropertyLabel":{"$ref":"AAAAAAGNDsxaAkrpuiM="},"tailMultiplicityLabel":{"$ref":"AAAAAAGNDsxaAkrqqI4="},"headRoleNameLabel":{"$ref":"AAAAAAGNDsxaAkrrNR8="},"headPropertyLabel":{"$ref":"AAAAAAGNDsxaAkrs2vA="},"headMultiplicityLabel":{"$ref":"AAAAAAGNDsxaAkrtKMQ="},"tailQualifiersCompartment":{"$ref":"AAAAAAGNDsxaAkruahI="},"headQualifiersCompartment":{"$ref":"AAAAAAGNDsxaAkrvv0o="}}]},{"_type":"UMLClass","_id":"AAAAAAGNDrdXTALirFQ=","_parent":{"$ref":"AAAAAAGNDqynnAKAFn4="},"name":"Player","ownedElements":[{"_type":"UMLAssociation","_id":"AAAAAAGNDsdXfSz3pxo=","_parent":{"$ref":"AAAAAAGNDrdXTALirFQ="},"name":"playerList","end1":{"_type":"UMLAssociationEnd","_id":"AAAAAAGNDsdXfSz4lCg=","_parent":{"$ref":"AAAAAAGNDsdXfSz3pxo="},"reference":{"$ref":"AAAAAAGNDrdXTALirFQ="},"multiplicity":"0..*"},"end2":{"_type":"UMLAssociationEnd","_id":"AAAAAAGNDsdXfSz5ouE=","_parent":{"$ref":"AAAAAAGNDsdXfSz3pxo="},"reference":{"$ref":"AAAAAAGNDscRICu+F5w="},"aggregation":"shared","multiplicity":"1"}}],"documentation":"A player entity which wraps ","attributes":[{"_type":"UMLAttribute","_id":"AAAAAAGNDsiLbDj5Qz4=","_parent":{"$ref":"AAAAAAGNDrdXTALirFQ="},"name":"username","type":"string"},{"_type":"UMLAttribute","_id":"AAAAAAGNDsi+CDnYNyI=","_parent":{"$ref":"AAAAAAGNDrdXTALirFQ="},"name":"Attribute1","type":""}]},{"_type":"UMLClass","_id":"AAAAAAGNDrlt5gNmie0=","_parent":{"$ref":"AAAAAAGNDqynnAKAFn4="},"name":"Client","ownedElements":[{"_type":"UMLAssociation","_id":"AAAAAAGNDrouLAOe/Dw=","_parent":{"$ref":"AAAAAAGNDrlt5gNmie0="},"end1":{"_type":"UMLAssociationEnd","_id":"AAAAAAGNDrouLAOfvGw=","_parent":{"$ref":"AAAAAAGNDrouLAOe/Dw="},"reference":{"$ref":"AAAAAAGNDrlt5gNmie0="},"multiplicity":"1"},"end2":{"_type":"UMLAssociationEnd","_id":"AAAAAAGNDrouLAOguAI=","_parent":{"$ref":"AAAAAAGNDrouLAOe/Dw="},"reference":{"$ref":"AAAAAAGNDrdXTALirFQ="},"multiplicity":"1"}},{"_type":"UMLAssociation","_id":"AAAAAAGNDsK74xZIfVQ=","_parent":{"$ref":"AAAAAAGNDrlt5gNmie0="},"name":"client","end1":{"_type":"UMLAssociationEnd","_id":"AAAAAAGNDsK74xZJ340=","_parent":{"$ref":"AAAAAAGNDsK74xZIfVQ="},"reference":{"$ref":"AAAAAAGNDrlt5gNmie0="}},"end2":{"_type":"UMLAssociationEnd","_id":"AAAAAAGNDsK74xZKhj8=","_parent":{"$ref":"AAAAAAGNDsK74xZIfVQ="},"reference":{"$ref":"AAAAAAGNDrdXTALirFQ="},"aggregation":"composite"}}],"documentation":"A single client connection (using the underlying networking channel)","attributes":[{"_type":"UMLAttribute","_id":"AAAAAAGNDrmbFAOVhWY=","_parent":{"$ref":"AAAAAAGNDrlt5gNmie0="},"name":"id","type":"ClientId"}]},{"_type":"UMLEnumeration","_id":"AAAAAAGNDr6O6xImVHk=","_parent":{"$ref":"AAAAAAGNDqynnAKAFn4="},"name":"PlayerMode","ownedElements":[{"_type":"UMLAssociation","_id":"AAAAAAGNDsN/zxmPd9I=","_parent":{"$ref":"AAAAAAGNDr6O6xImVHk="},"name":"mode","end1":{"_type":"UMLAssociationEnd","_id":"AAAAAAGNDsN/zxmQK3w=","_parent":{"$ref":"AAAAAAGNDsN/zxmPd9I="},"reference":{"$ref":"AAAAAAGNDr6O6xImVHk="}},"end2":{"_type":"UMLAssociationEnd","_id":"AAAAAAGNDsN/zxmRwNs=","_parent":{"$ref":"AAAAAAGNDsN/zxmPd9I="},"reference":{"$ref":"AAAAAAGNDrdXTALirFQ="},"aggregation":"composite"}}],"literals":[{"_type":"UMLEnumerationLiteral","_id":"AAAAAAGNDtFlhVD1qng=","_parent":{"$ref":"AAAAAAGNDr6O6xImVHk="},"name":"Login"},{"_type":"UMLEnumerationLiteral","_id":"AAAAAAGNDr7L7hNatbk=","_parent":{"$ref":"AAAAAAGNDr6O6xImVHk="},"name":"MainMenu","documentation":"State used when the player is in the main menu"},{"_type":"UMLEnumerationLiteral","_id":"AAAAAAGNDr+XyhSJgcg=","_parent":{"$ref":"AAAAAAGNDr6O6xImVHk="},"name":"InLobby","documentation":"Used when a player is in a lobby"},{"_type":"UMLEnumerationLiteral","_id":"AAAAAAGND1ueLVm4u3Y=","_parent":{"$ref":"AAAAAAGNDr6O6xImVHk="},"name":"Literal1"}]},{"_type":"UMLClass","_id":"AAAAAAGNDscRICu+F5w=","_parent":{"$ref":"AAAAAAGNDqynnAKAFn4="},"name":"Lobby","documentation":"A lobby used when playing the game","attributes":[{"_type":"UMLAttribute","_id":"AAAAAAGNDsjuRDr/Nlo=","_parent":{"$ref":"AAAAAAGNDscRICu+F5w="},"name":"host","type":"&Player"},{"_type":"UMLAttribute","_id":"AAAAAAGNDslNfjyKeJA=","_parent":{"$ref":"AAAAAAGNDscRICu+F5w="},"name":"id","type":"uuid"}]},{"_type":"UMLEnumeration","_id":"AAAAAAGNDsoLLj5LYyE=","_parent":{"$ref":"AAAAAAGNDqynnAKAFn4="},"name":"LobbyState","ownedElements":[{"_type":"UMLAssociation","_id":"AAAAAAGNDsxaAUrgOfo=","_parent":{"$ref":"AAAAAAGNDsoLLj5LYyE="},"name":"state","end1":{"_type":"UMLAssociationEnd","_id":"AAAAAAGNDsxaAUrh20M=","_parent":{"$ref":"AAAAAAGNDsxaAUrgOfo="},"reference":{"$ref":"AAAAAAGNDsoLLj5LYyE="}},"end2":{"_type":"UMLAssociationEnd","_id":"AAAAAAGNDsxaAkrizjw=","_parent":{"$ref":"AAAAAAGNDsxaAUrgOfo="},"reference":{"$ref":"AAAAAAGNDscRICu+F5w="},"aggregation":"composite"}}],"literals":[{"_type":"UMLEnumerationLiteral","_id":"AAAAAAGNDspQTUOnt/s=","_parent":{"$ref":"AAAAAAGNDsoLLj5LYyE="},"name":"Lobby"},{"_type":"UMLEnumerationLiteral","_id":"AAAAAAGNDst3x0YxuXs=","_parent":{"$ref":"AAAAAAGNDsoLLj5LYyE="},"name":"PickNames"},{"_type":"UMLEnumerationLiteral","_id":"AAAAAAGNDsumpUc0Waw=","_parent":{"$ref":"AAAAAAGNDsoLLj5LYyE="},"name":"Day"},{"_type":"UMLEnumerationLiteral","_id":"AAAAAAGNDsva50gmwcM=","_parent":{"$ref":"AAAAAAGNDsoLLj5LYyE="},"name":"Night"},{"_type":"UMLEnumerationLiteral","_id":"AAAAAAGNDswOYkkXYJ8=","_parent":{"$ref":"AAAAAAGNDsoLLj5LYyE="},"name":"Evening"}]},{"_type":"UMLClass","_id":"AAAAAAGNEKxrBmLL7D8=","_parent":{"$ref":"AAAAAAGNDqynnAKAFn4="},"name":"PlayerState","attributes":[{"_type":"UMLAttribute","_id":"AAAAAAGNEKyb+WZKA0E=","_parent":{"$ref":"AAAAAAGNEKxrBmLL7D8="},"name":"Attribute1","type":""}]}]},{"_type":"UMLCollaboration","_id":"AAAAAAGNOB5KSGy3V6s=","_parent":{"$ref":"AAAAAAFF+h6SjaM2Hec="},"name":"Collaboration1","ownedElements":[{"_type":"UMLInteraction","_id":"AAAAAAGNOB5KSGy4lQU=","_parent":{"$ref":"AAAAAAGNOB5KSGy3V6s="},"name":"Login Interaction","ownedElements":[{"_type":"UMLSequenceDiagram","_id":"AAAAAAGNOB5KSGy56Pw=","_parent":{"$ref":"AAAAAAGNOB5KSGy4lQU="},"name":"Login Flow","ownedViews":[{"_type":"UMLFrameView","_id":"AAAAAAGNOB5KSGy68ec=","_parent":{"$ref":"AAAAAAGNOB5KSGy56Pw="},"model":{"$ref":"AAAAAAGNOB5KSGy56Pw="},"subViews":[{"_type":"LabelView","_id":"AAAAAAGNOB5KSGy7A/8=","_parent":{"$ref":"AAAAAAGNOB5KSGy68ec="},"font":"Arial;13;0","left":32.72998046875,"top":5,"width":62.8671875,"height":13,"text":"Login Flow"},{"_type":"LabelView","_id":"AAAAAAGNOB5KSGy8oCc=","_parent":{"$ref":"AAAAAAGNOB5KSGy68ec="},"font":"Arial;13;1","left":13,"top":5,"width":13.72998046875,"height":13,"text":"sd"}],"font":"Arial;13;0","left":8,"width":376,"height":232,"nameLabel":{"$ref":"AAAAAAGNOB5KSGy7A/8="},"frameTypeLabel":{"$ref":"AAAAAAGNOB5KSGy8oCc="}},{"_type":"UMLSeqLifelineView","_id":"AAAAAAGNOB+jx2zWUoE=","_parent":{"$ref":"AAAAAAGNOB5KSGy56Pw="},"model":{"$ref":"AAAAAAGNOB+jx2zVvCQ="},"subViews":[{"_type":"UMLNameCompartmentView","_id":"AAAAAAGNOB+jx2zXU8I=","_parent":{"$ref":"AAAAAAGNOB+jx2zWUoE="},"model":{"$ref":"AAAAAAGNOB+jx2zVvCQ="},"subViews":[{"_type":"LabelView","_id":"AAAAAAGNOB+jx2zYLVs=","_parent":{"$ref":"AAAAAAGNOB+jx2zXU8I="},"visible":false,"font":"Arial;13;0","left":48,"height":13},{"_type":"LabelView","_id":"AAAAAAGNOB+jx2zZeaw=","_parent":{"$ref":"AAAAAAGNOB+jx2zXU8I="},"font":"Arial;13;1","left":29,"top":47,"width":63.736328125,"height":13,"text":"Player"},{"_type":"LabelView","_id":"AAAAAAGNOB+jx2zaiO4=","_parent":{"$ref":"AAAAAAGNOB+jx2zXU8I="},"visible":false,"font":"Arial;13;0","left":48,"width":134.392578125,"height":13,"text":"(from Login Interaction)"},{"_type":"LabelView","_id":"AAAAAAGNOB+jx2zbDu0=","_parent":{"$ref":"AAAAAAGNOB+jx2zXU8I="},"visible":false,"font":"Arial;13;0","left":48,"height":13,"horizontalAlignment":1}],"font":"Arial;13;0","left":24,"top":40,"width":73.736328125,"height":40,"stereotypeLabel":{"$ref":"AAAAAAGNOB+jx2zYLVs="},"nameLabel":{"$ref":"AAAAAAGNOB+jx2zZeaw="},"namespaceLabel":{"$ref":"AAAAAAGNOB+jx2zaiO4="},"propertyLabel":{"$ref":"AAAAAAGNOB+jx2zbDu0="}},{"_type":"UMLLinePartView","_id":"AAAAAAGNOB+jx2zcvus=","_parent":{"$ref":"AAAAAAGNOB+jx2zWUoE="},"model":{"$ref":"AAAAAAGNOB+jx2zVvCQ="},"font":"Arial;13;0","left":60,"top":81,"width":1,"height":152}],"font":"Arial;13;0","left":24,"top":40,"width":72.736328125,"height":193,"nameCompartment":{"$ref":"AAAAAAGNOB+jx2zXU8I="},"linePart":{"$ref":"AAAAAAGNOB+jx2zcvus="}},{"_type":"UMLSeqLifelineView","_id":"AAAAAAGNOCAfP2z86cg=","_parent":{"$ref":"AAAAAAGNOB5KSGy56Pw="},"model":{"$ref":"AAAAAAGNOCAfP2z7Llc="},"subViews":[{"_type":"UMLNameCompartmentView","_id":"AAAAAAGNOCAfP2z9elE=","_parent":{"$ref":"AAAAAAGNOCAfP2z86cg="},"model":{"$ref":"AAAAAAGNOCAfP2z7Llc="},"subViews":[{"_type":"LabelView","_id":"AAAAAAGNOCAfP2z+q28=","_parent":{"$ref":"AAAAAAGNOCAfP2z9elE="},"visible":false,"font":"Arial;13;0","left":528,"height":13},{"_type":"LabelView","_id":"AAAAAAGNOCAfP2z//no=","_parent":{"$ref":"AAAAAAGNOCAfP2z9elE="},"font":"Arial;13;1","left":269,"top":47,"width":63.736328125,"height":13,"text":"Server"},{"_type":"LabelView","_id":"AAAAAAGNOCAfP20AhMs=","_parent":{"$ref":"AAAAAAGNOCAfP2z9elE="},"visible":false,"font":"Arial;13;0","left":528,"width":134.392578125,"height":13,"text":"(from Login Interaction)"},{"_type":"LabelView","_id":"AAAAAAGNOCAfP20BnSI=","_parent":{"$ref":"AAAAAAGNOCAfP2z9elE="},"visible":false,"font":"Arial;13;0","left":528,"height":13,"horizontalAlignment":1}],"font":"Arial;13;0","left":264,"top":40,"width":73.736328125,"height":40,"stereotypeLabel":{"$ref":"AAAAAAGNOCAfP2z+q28="},"nameLabel":{"$ref":"AAAAAAGNOCAfP2z//no="},"namespaceLabel":{"$ref":"AAAAAAGNOCAfP20AhMs="},"propertyLabel":{"$ref":"AAAAAAGNOCAfP20BnSI="}},{"_type":"UMLLinePartView","_id":"AAAAAAGNOCAfP20CR5g=","_parent":{"$ref":"AAAAAAGNOCAfP2z86cg="},"model":{"$ref":"AAAAAAGNOCAfP2z7Llc="},"font":"Arial;13;0","left":300,"top":81,"width":1,"height":152}],"font":"Arial;13;0","left":264,"top":40,"width":72.736328125,"height":193,"nameCompartment":{"$ref":"AAAAAAGNOCAfP2z9elE="},"linePart":{"$ref":"AAAAAAGNOCAfP20CR5g="}},{"_type":"UMLSeqMessageView","_id":"AAAAAAGNOCBY+G0exnI=","_parent":{"$ref":"AAAAAAGNOB5KSGy56Pw="},"model":{"$ref":"AAAAAAGNOCBY+G0deWY="},"subViews":[{"_type":"EdgeLabelView","_id":"AAAAAAGNOCBY+G0f+jE=","_parent":{"$ref":"AAAAAAGNOCBY+G0exnI="},"model":{"$ref":"AAAAAAGNOCBY+G0deWY="},"font":"Arial;13;0","left":138,"top":95,"width":78.04443359375,"height":13,"alpha":-1.5707956125091824,"distance":14,"hostEdge":{"$ref":"AAAAAAGNOCBY+G0exnI="},"edgePosition":1,"text":"1 : Login"},{"_type":"EdgeLabelView","_id":"AAAAAAGNOCBY+G0gRIM=","_parent":{"$ref":"AAAAAAGNOCBY+G0exnI="},"model":{"$ref":"AAAAAAGNOCBY+G0deWY="},"visible":false,"font":"Arial;13;0","left":177,"top":57,"height":13,"alpha":1.5707963267948966,"distance":25,"hostEdge":{"$ref":"AAAAAAGNOCBY+G0exnI="},"edgePosition":1},{"_type":"EdgeLabelView","_id":"AAAAAAGNOCBY+G0htK0=","_parent":{"$ref":"AAAAAAGNOCBY+G0exnI="},"model":{"$ref":"AAAAAAGNOCBY+G0deWY="},"visible":false,"font":"Arial;13;0","left":177,"top":92,"height":13,"alpha":-1.5707963267948966,"distance":10,"hostEdge":{"$ref":"AAAAAAGNOCBY+G0exnI="},"edgePosition":1},{"_type":"UMLActivationView","_id":"AAAAAAGNOCBY+G0ibDo=","_parent":{"$ref":"AAAAAAGNOCBY+G0exnI="},"model":{"$ref":"AAAAAAGNOCBY+G0deWY="},"font":"Arial;13;0","left":293,"top":88,"width":14,"height":64}],"font":"Arial;13;0","head":{"$ref":"AAAAAAGNOCAfP20CR5g="},"tail":{"$ref":"AAAAAAGNOB+jx2zcvus="},"points":"61:88;293:88","nameLabel":{"$ref":"AAAAAAGNOCBY+G0f+jE="},"stereotypeLabel":{"$ref":"AAAAAAGNOCBY+G0gRIM="},"propertyLabel":{"$ref":"AAAAAAGNOCBY+G0htK0="},"activation":{"$ref":"AAAAAAGNOCBY+G0ibDo="}},{"_type":"UMLSeqMessageView","_id":"AAAAAAGNQl4Z022K5YY=","_parent":{"$ref":"AAAAAAGNOB5KSGy56Pw="},"model":{"$ref":"AAAAAAGNQl4Z022JyCw="},"subViews":[{"_type":"EdgeLabelView","_id":"AAAAAAGNQl4Z022LXas=","_parent":{"$ref":"AAAAAAGNQl4Z022K5YY="},"model":{"$ref":"AAAAAAGNQl4Z022JyCw="},"font":"Arial;13;0","left":139,"top":128,"width":75.89892578125,"height":13,"alpha":1.4994895726695407,"distance":14.035668847618199,"hostEdge":{"$ref":"AAAAAAGNQl4Z022K5YY="},"edgePosition":1,"text":"2 : Logged In"},{"_type":"EdgeLabelView","_id":"AAAAAAGNQl4Z022MqCc=","_parent":{"$ref":"AAAAAAGNQl4Z022K5YY="},"model":{"$ref":"AAAAAAGNQl4Z022JyCw="},"visible":false,"font":"Arial;13;0","left":176,"top":139,"height":13,"alpha":1.5707963267948966,"distance":25,"hostEdge":{"$ref":"AAAAAAGNQl4Z022K5YY="},"edgePosition":1},{"_type":"EdgeLabelView","_id":"AAAAAAGNQl4Z022NWis=","_parent":{"$ref":"AAAAAAGNQl4Z022K5YY="},"model":{"$ref":"AAAAAAGNQl4Z022JyCw="},"visible":false,"font":"Arial;13;0","left":177,"top":104,"height":13,"alpha":-1.5707963267948966,"distance":10,"hostEdge":{"$ref":"AAAAAAGNQl4Z022K5YY="},"edgePosition":1},{"_type":"UMLActivationView","_id":"AAAAAAGNQl4Z022OOkM=","_parent":{"$ref":"AAAAAAGNQl4Z022K5YY="},"model":{"$ref":"AAAAAAGNQl4Z022JyCw="},"visible":false,"font":"Arial;13;0","left":60,"top":120,"width":14,"height":25}],"font":"Arial;13;0","head":{"$ref":"AAAAAAGNOB+jx2zcvus="},"tail":{"$ref":"AAAAAAGNOCAfP20CR5g="},"points":"293:120;61:120","nameLabel":{"$ref":"AAAAAAGNQl4Z022LXas="},"stereotypeLabel":{"$ref":"AAAAAAGNQl4Z022MqCc="},"propertyLabel":{"$ref":"AAAAAAGNQl4Z022NWis="},"activation":{"$ref":"AAAAAAGNQl4Z022OOkM="}},{"_type":"UMLSeqMessageView","_id":"AAAAAAGNQl6bIm3AJw4=","_parent":{"$ref":"AAAAAAGNOB5KSGy56Pw="},"model":{"$ref":"AAAAAAGNQl6bIm2/EeE="},"subViews":[{"_type":"EdgeLabelView","_id":"AAAAAAGNQl6bIm3BHCU=","_parent":{"$ref":"AAAAAAGNQl6bIm3AJw4="},"model":{"$ref":"AAAAAAGNQl6bIm2/EeE="},"font":"Arial;13;0","left":115,"top":156,"width":154.6162109375,"height":13,"alpha":2.2565263822553954,"distance":14.212670403551895,"hostEdge":{"$ref":"AAAAAAGNQl6bIm3AJw4="},"edgePosition":1,"text":"3 : Sync Server Resources"},{"_type":"EdgeLabelView","_id":"AAAAAAGNQl6bIm3C6nM=","_parent":{"$ref":"AAAAAAGNQl6bIm3AJw4="},"model":{"$ref":"AAAAAAGNQl6bIm2/EeE="},"visible":false,"font":"Arial;13;0","left":182,"top":171,"height":13,"alpha":1.5707963267948966,"distance":25,"hostEdge":{"$ref":"AAAAAAGNQl6bIm3AJw4="},"edgePosition":1},{"_type":"EdgeLabelView","_id":"AAAAAAGNQl6bIm3Dwow=","_parent":{"$ref":"AAAAAAGNQl6bIm3AJw4="},"model":{"$ref":"AAAAAAGNQl6bIm2/EeE="},"visible":false,"font":"Arial;13;0","left":183,"top":136,"height":13,"alpha":-1.5707963267948966,"distance":10,"hostEdge":{"$ref":"AAAAAAGNQl6bIm3AJw4="},"edgePosition":1},{"_type":"UMLActivationView","_id":"AAAAAAGNQl6bIm3E0wA=","_parent":{"$ref":"AAAAAAGNQl6bIm3AJw4="},"model":{"$ref":"AAAAAAGNQl6bIm2/EeE="},"font":"Arial;13;0","left":53,"top":152,"width":14,"height":45}],"font":"Arial;13;0","head":{"$ref":"AAAAAAGNOB+jx2zcvus="},"tail":{"$ref":"AAAAAAGNOCAfP20CR5g="},"points":"300:152;67:152","nameLabel":{"$ref":"AAAAAAGNQl6bIm3BHCU="},"stereotypeLabel":{"$ref":"AAAAAAGNQl6bIm3C6nM="},"propertyLabel":{"$ref":"AAAAAAGNQl6bIm3Dwow="},"activation":{"$ref":"AAAAAAGNQl6bIm3E0wA="}},{"_type":"UMLSeqMessageView","_id":"AAAAAAGNR3rEuW3ohMU=","_parent":{"$ref":"AAAAAAGNOB5KSGy56Pw="},"model":{"$ref":"AAAAAAGNR3rEuW3nhOg="},"subViews":[{"_type":"EdgeLabelView","_id":"AAAAAAGNR3rEuW3pOhw=","_parent":{"$ref":"AAAAAAGNR3rEuW3ohMU="},"model":{"$ref":"AAAAAAGNR3rEuW3nhOg="},"font":"Arial;13;0","left":112,"top":192,"width":127.1943359375,"height":13,"alpha":-2.0899419025797155,"distance":16.1245154965971,"hostEdge":{"$ref":"AAAAAAGNR3rEuW3ohMU="},"edgePosition":1,"text":"4 : Resources Loaded"},{"_type":"EdgeLabelView","_id":"AAAAAAGNR3rEuW3qOfo=","_parent":{"$ref":"AAAAAAGNR3rEuW3ohMU="},"model":{"$ref":"AAAAAAGNR3rEuW3nhOg="},"visible":false,"font":"Arial;13;0","left":183,"top":153,"height":13,"alpha":1.5707963267948966,"distance":25,"hostEdge":{"$ref":"AAAAAAGNR3rEuW3ohMU="},"edgePosition":1},{"_type":"EdgeLabelView","_id":"AAAAAAGNR3rEuW3r4JY=","_parent":{"$ref":"AAAAAAGNR3rEuW3ohMU="},"model":{"$ref":"AAAAAAGNR3rEuW3nhOg="},"visible":false,"font":"Arial;13;0","left":183,"top":188,"height":13,"alpha":-1.5707963267948966,"distance":10,"hostEdge":{"$ref":"AAAAAAGNR3rEuW3ohMU="},"edgePosition":1},{"_type":"UMLActivationView","_id":"AAAAAAGNR3rEuW3saa0=","_parent":{"$ref":"AAAAAAGNR3rEuW3ohMU="},"model":{"$ref":"AAAAAAGNR3rEuW3nhOg="},"visible":false,"font":"Arial;13;0","left":300,"top":184,"width":14,"height":25}],"font":"Arial;13;0","head":{"$ref":"AAAAAAGNOCAfP20CR5g="},"tail":{"$ref":"AAAAAAGNOB+jx2zcvus="},"points":"67:184;300:184","nameLabel":{"$ref":"AAAAAAGNR3rEuW3pOhw="},"stereotypeLabel":{"$ref":"AAAAAAGNR3rEuW3qOfo="},"propertyLabel":{"$ref":"AAAAAAGNR3rEuW3r4JY="},"activation":{"$ref":"AAAAAAGNR3rEuW3saa0="}}]}],"messages":[{"_type":"UMLMessage","_id":"AAAAAAGNOCBY+G0deWY=","_parent":{"$ref":"AAAAAAGNOB5KSGy4lQU="},"name":"Login","source":{"$ref":"AAAAAAGNOB+jx2zVvCQ="},"target":{"$ref":"AAAAAAGNOCAfP2z7Llc="}},{"_type":"UMLMessage","_id":"AAAAAAGNQl4Z022JyCw=","_parent":{"$ref":"AAAAAAGNOB5KSGy4lQU="},"name":"Logged In","source":{"$ref":"AAAAAAGNOCAfP2z7Llc="},"target":{"$ref":"AAAAAAGNOB+jx2zVvCQ="},"messageSort":"reply"},{"_type":"UMLMessage","_id":"AAAAAAGNQl6bIm2/EeE=","_parent":{"$ref":"AAAAAAGNOB5KSGy4lQU="},"name":"Sync Server Resources","source":{"$ref":"AAAAAAGNOCAfP2z7Llc="},"target":{"$ref":"AAAAAAGNOB+jx2zVvCQ="}},{"_type":"UMLMessage","_id":"AAAAAAGNR3rEuW3nhOg=","_parent":{"$ref":"AAAAAAGNOB5KSGy4lQU="},"name":"Resources Loaded","source":{"$ref":"AAAAAAGNOB+jx2zVvCQ="},"target":{"$ref":"AAAAAAGNOCAfP2z7Llc="},"messageSort":"reply"}],"participants":[{"_type":"UMLLifeline","_id":"AAAAAAGNOB+jx2zVvCQ=","_parent":{"$ref":"AAAAAAGNOB5KSGy4lQU="},"name":"Player","isMultiInstance":false},{"_type":"UMLLifeline","_id":"AAAAAAGNOCAfP2z7Llc=","_parent":{"$ref":"AAAAAAGNOB5KSGy4lQU="},"name":"Server","isMultiInstance":false}]}]}],"author":"Hutzdog","version":"v0.0.0-indev"}
\ No newline at end of file

A  => DESIGN.md +120 -0
@@ 1,120 @@
# Traitors in the Coven Design Doc

## Core Concept
Traitors in the Coven (TIC) is a social deduction game in the same vein as Town of Salem and Throne of Lies. It focuses on providing roles that have a high skill ceiling and are hard to throw with. In summary, the game is a witch hunt among witches.

## Features
### Story
After the murder of several members of a coven of witches, it is revealed that the murder was an inside job. Using powerful magical abilities and your wits, can you figure out who is trustworthy and who should be put to death? Or will your coven be forced to serve as the underlings of the traitors.

### Visual Style
TBD, I am thinking about using pixel art for early revisions and adding more later

### Mechanics
- The game takes place in lobbies of up to 13 players, and follows the following set of game stages:
    + Night : The time used by the Coven to discuss their plans for the following night
        - During the night, players will choose 1 player to excommunicate by voting during the discussion time. In the event of a tie vote, noone is excommunicated.
        - FUTURE IDEA : Players additionally will vote on one of 3 possible spells which provide a helpful modifier during the night
    + Day : The time used by individual players to use their abilities and (if they can) interact with their faction members in secret
    + Evening : The time used to elect the new High Priestess (and potentially other power roles for other servers) if the previous one dies
        - The High Priestess is the only Power role. Like the King of TOL, the High Priestess can be a member of any faction (though in this game, the first one is always good)
        - If the vote ends in a tie, a power vaccum prevents the election of a new High Priestess for the rest of the game
- These are the factions in the base game:
    + Coven : The uninformed majority faction of the game
        - This faction has the following alignments:
            + Coven Protective : Roles which provide protection to other coven members
            + Coven Investigative : Roles which use their powers to learn more about the intentions of their peers
            + Coven Support : Miscellanious traitors who don't fit into any other category
    + Sorcerers : The informed minority faction of the game (up to 3-4 per game)
        - This faction has the following alignments:
            + Sorcerer Killing : Traitors who have the ability to kill by default
            + Sorcerer Deception : Traitors who have mastered the art of obscuring what is real and what is fake
            + Sorcerer Support : Miscellanious traitors who don't fit into any other category

### Roles
These are the default roles in the game. These may be customized with the server (TODO: add server scripts)

#### High Priestess (Any Power, Unique)
The leader of the Coven, a position of great power

##### Abilities
- Election : On death, a new High Priestess is elected during the evening phase. At the start of the game, a High Priestess is selected from the members of the Coven faction
- Leadership : This role has 2 votes instead of 1

##### Spells
- Ward (2) : At night, the High Priestess can sacrifice their normal ability to protect themself from harm
- Underlying Power : This role gives extra powers to another role, and keeps their attributes

#### Green Witch (Coven Protective)
A witch who works with herbs to protect and heal their fellow coven members

##### Spells
- Heal (infinite) : Create a potion to heal another coven member, giving them +2 defense and cleansing status effects
- Recover (1) : Create a potion to heal yourself, giving +2 defense and cleansing status effects

#### Hedge Witch (Coven Investigative)
A witch who uses their abilities to interact with the spirit world to gather information

##### Spells
- Divine (infinite) : Divine if at least 1 of a set of 3 chosen players has evil intentions
- Project (2) : Project your spirit into the spirit world, allowing you to interact with the dead
    + Unlike Crystal Witches, Hedge Witches can see who is talking

#### Crystal Witch (Coven Support)
A witch who works with crystals to provide a variety of effects

##### Spells
- Divine (infinite) : Using Moonstone, divine a set of 3 players with at least 1 evil
- Heal (infinite) : Using Flourite, protect a player with +1 defense
- Communicate (infinite) : Using Angelite, the player may see what the dead are saying (but not who is saying it).
    + All other crystals are locked after activating this ability until the next night

#### Shaman (Coven Support)
A witch who uses altered states of consciousness to mediate interactions between spirits and this world

##### Spells
- Meditate (infinite) : Select a dead coven member and a target. The ability of the dead player will be used on the target, but the spirit will be drained in the process
    + Drained spirits can no longer be accessed by shamans

#### High Sorcerer (Sorcerer Killing, Unique)
The leader of the sorcerers, holds the ability to kill once per night

##### Abilities
- Promotion : Upon dying, a new High Sorcerer is picked from the following list (in order from first to last)
    + Poisoner
    + Illusionist
    + Necromancer

##### Spells
- Attack (infinite) : Chanelling dark magic, perform a level 2 attack on a player

#### Poisoner (Sorcerer Killing, Unique)
A sorcerer trained in the creation of poisons.

##### Spells
- Poison (3) : Poison another player's water supply, causing them to die the next day if they are not cleansed

#### Illusionist (Sourcerer Deception)
A sorcerer skilled in the manipulation of information

##### Spells
- Enchant (infinite) : Causes another player to appear as evil to Coven Investigatives
- Illusion (infinite) : Hide the true nature of another sorcerer, making them appear good to Coven Investigatives

#### Necromancer (Sorcerer Support)
A sorcerer who works with the dead, raising them from the grave

##### Spells
- Raise (infinite) : Raise a dead body as a zombie, forcing it to do your bidding. This will decay the body, making it unusable
- Meditate (1) : Raise the spirit of a dead coven member, forcing it to do your bidding. This will drain the spirit of the body, but leave it intact
    + This takes priority over the Shaman ability, making them see the spirit as already drained
    + A drained spirit still allows use of the body and vice versa.

## Internal Architecture
- Traitors in the Coven will use messages to send information to the client as it is made relevent. This is to prevent any one client from having a competitive advantage.
- This crate will use `renet` for now as the main transport protocol, though I may look into other options as they mature.

## Target Audience
- This game mainly intends to cater to two audiences
    1. Social deduction enjoyers looking for a game like Town of Salem that has fewer throwers and perhaps a slightly less toxic community
    2. FOSS entheusiasts looking for a game which is free and open source