GithubHelp home page GithubHelp logo

mtg-tolaria's People

Contributors

slanfan avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

Forkers

gordonandersson

mtg-tolaria's Issues

New Event Modal

I want to be able to add a custom banner to my event.

  • Create an upload, crop, and save functionality
  • fix the CSs for Dark theme

Batch Tournament

Tolaria should support batch tournament with the following structure: Batch Rounds > Single Elimination Bracket

As an organizer,

  • I should be able to add new batches on demand.

  • I should be able to define the number of random pairings for each batch.

  • I should be able to define the number of standings-based pairings for each batch.

Messages

Players should be able to chat with one another in private groups or one on one.

Message Document

The chat documents should be created in the root collection messages

export interface MessageDocument {
  docId?: string;
  name?: string;
  createdByUid: string;
  createdDate: number; // timestamp
  latestMessage: number; // timestamp
  playerDocIds: Array<string>;
  isSingle: boolean;
}

Messages

Sub collection of a chat document in the root collection messages

export interface Message {
  timestamp: number;
  playerDocId: string;
  message: string;
  content?: MessageContent;
  type: string;
  cardName?: string;
}

export interface MessageContent {
  cardName?: string;
  setCode?: string;
  setName?: string;
  imageUrl?: string;
  rulings?: any;
}
  • Add parser to parse chat messages and add emojis on known expressions (regEx?)
  • Add a function to select emoji on :typing...
  • Add parser to parse chat messages and add emojis on :string:
  • Add @ tagging user functionality
  • Create logic for handling unread messages (this should be reflected as a badge on the Messages on the left panel
  • Make message groups with unread messages have another appearance
  • Add player linking to player list in the info panel
  • Bind new data to be populated in the player details panel
  • Add function to rename chat which is not a single chat (isSingle = false)
  • Add functionality to add additional players to the group
  • Move all logic into the message-service and fix all the components depending on the new service
  • Create a player details popover panel
  • Add emoji selection popover in the text-area
  • Message Section: Header > add players button
  • Message Section: Header > add details button
  • Create details panel
  • Make sure the chat names are shown instead of docId (should be either chat name or the player names (e.g. Slanfan, Bonnie, Seb, and 4 others OR Masters of the Multiverse)
  • Combine the messageList and PlayerList to be able to show player information without reloading the data whenever a new message is shown @JonnieHedkvist
  • Add search for message groups in the left section

Maintain peer connections locally

All peer connections need to be maintained locally and not within the peer itself to be able to handle disconnection and such events.

Event Invitation

Create some form of a template to send the email invite.
In addition, also create a new Message Type that can hold information about the event + accept/decline options directly in the message.

Manual Pairings

For swiss tournaments, the organizer needs the possibility to manually change the pairings if needed.

Group Tournament

Tolaria should support group/multi-stage tournaments with the following structure: Round Robin > Single Elimination Bracket

As an organizer,

  • I should be able to define the group sizes and the number of matches that each player within a group shall play.

  • I should be able to define the number of players that advance to the next stage

Don't cross the streams

When opening a specatating tab for a match then open another the new videostreams actually goes to the earlier opened tab. So the old match tab actually keeps names, life and such from the originally opened match, but the cameras will be from the newly opened match.

Filter events

I want to be able to filter events on:

  • Date Interval
  • Structure
    - [ ] Organizer As of today, we are not storing organizer name and therefore not possible to search or filter unless LISTING all organizers which is not wanted as of today.
    - [ ] Ruleset This will be too complex for the user and most likely only confuse
  • Online/Offline
  • Public/Private
  • Format
  • Status
  • Attending/Not attending
    - [ ] Invited/not Invited As of today, we have not activated the invitation features due to emailing templates not done. Will look at this at a later stage.

Request to become organizer

Create a form for requesting to become an organizer. This should create a "Become an organizer" request document which should be accessible within the admin panel and for the user via support.

export interface SupportTicket {
  ticketTypeId: string;
  ticketTypeName: string;
  timestamp: number;
  senderPlayerId: string;
  senderUid: string;
  comments: Array<string>;
  closedByUid: string;
  closedByPlayerId: string;
  assignedToUid: string;
  assignedToPlayerId: string;
  statusCode: number;
  statusText: string;
  isApproved: boolean;
  isRejected: boolean;
  isClosed: boolean;
  metadata: any;
}

image

Reset Round

Whenever a round is reset, the hasByeMatch-flag needs to be updated in addition to the matches deleted.

Social Sharing

As an organizer, I want to be able to share my newly created event on various social media's to have players join the festivities.

Casual Matches

  • As a player I wish to play casual games with my friends.
  • As a player I wish to announce that I'm free for play during a set time interval and anyone could initiate a game with me.
  • As a player I would like to be able to send a play invitation to someone else.

Announcement Messages in Match

Whenever the organizer pushes a new announcement in an event all ongoing matches need to display the announcement in the message panel and the panel needs to pop open so that the players get notified.

The same is true for spectators.

Chat component

  • Make the scrollbar scroll in the correct direction
  • Add emoji selector popover
  • Add emoji "pipe" or similar to show emojis in messages
  • Add @ tagging user functionality
  • Add autoscroll to new messages
  • Change the CSS to match new auto-scroll functionality
  • Add new message sound
  • Add sound controller for the chat

Call all players active in the match room

Whenever the players of a match initiate the room the system needs to call all players active in the room.
As of today we only call newly arrived players but we also need to call all present spectators.

Keyboard Navigation

Re-structure and put all the keyboard shortcuts into one component/service.
The HostListener needs to work cross-components.

@HostListener('document:keydown', ['$event'])
handleKeyboardEvent(event: KeyboardEvent) {
}

Organizer action: Hold all matches

Add a function for the organizer to put HOLD on all ongoing matches from the OrganizerComponent.
The feature should take an optional message that can be displayed in the overlay visible for the players in the room.

Full name header should appear on new message from same sender after x min.

Label = Improvement
When posting messages in the event chat, if the same sender posts two messages in a row, the full name header doesn't show.

This is fine and intended to not clog up the space.

But this should be time dependent so that if there are two messages from the same sender (e.g the tournament organizer) with a long delay in between, it is hard to understand that there might have been hours, days, weeks between if the context is not clear.

So there should be a function that adds the full name header again for the first new chat message if x time has passed between the previous and new message.

Refactor PlayerService and all Dependencies

Refactor the PlayerService and remove the local array of players and only rely on the players$ Observable.
All references to the local players array need to pipe into the Observable instead.

Inform players about newly arrived spectators

Whenever a new spectator arrives at a match webcam room, the players need to get notified with a MessageToast displaying the test "[player.displayName] started spectating your match"

Disable “local” players for online events

In an event with isPublic:true the Tolaria search needs to be the default method of adding players and adding players in another way should be disabled as non-registered users should not be able to play in an online event.

Player Details not updating with new selection

The player details in events do not update when I select another player. It stays at the previously selected player. I need to close the player details to be able to show another player.

New player registered

Whenever a new player has been registered, the backend needs to go through all the open and non-public events to check if the email registered has been invited. If so, the invite information needs to be updated with playerDocId and playerUid.

Open my online match and not only the report slip

When organizers are also playing an online event, the opening of their own webcam room is somewhat unintuitive.
I expect that I as an organizer can open my match room when I press the match in the pairings view in addition to the report slip being opened.

Communication with invited players

As an organizer I would like to have the possibility to update the invites players with information. Therefore I need to be able to send them an email and/or Tolaria message with new information.

Undo/Delete Pairings

  • Change the button in OrganizerComponent to Delete Pairings
  • If pairings are deleted, any user in the WebRTC room should be notified with a prompt

Organizer Hang Up

The showing of the organizer stream is now part of the MatchDocument and should only be connected to the peer connection itself. Whenever a player gets a stream from the organizer this should tell the template to show the wrapper with the video element showing the organizers stream.

When the organizer press close call the template should be updated and the overlay closed.

Setting for message sounds

There should be a setting to turn off the sound for messages.
The Announcement messages should of course override this setting as organizers need to notify somehow.

PlayerDisplayNameComponent

Fix display name for not found. Add Nameless Race as the name and also a title that state Player name could not be found and therefore assigned to Nameless Race

Video elements resizing

When the stream is loaded into the video elements it resizes and the content becomes hard to watch.

tolaria-spectate

Deck Builder

A full blown deck builder.

__Detailed requirements and specification to be created.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.