Пример #1
0
 public void FromDB(CubeDraftPlayer player)
 {
     PlayerId     = player.Id;
     PlayerName   = player.MtgoLink.User.TwitchUsername;
     MtgoId       = player.MtgoLink.MtgoId;
     MtgoUsername = player.MtgoLink.MtgoUsername;
 }
Пример #2
0
 public Drafter(CubeDraft draft, CubeDraftPlayer player, int position, DraftCollection draftCollection)
 {
     QueuedPicks.Enqueue(draftCollection.GetNextPack().Cards.ToList());
     DraftId    = draft.Id;
     PlayerId   = player.Id;
     UserId     = player.MtgoLink.UserId;
     PlayerName = player.MtgoLink.User.TwitchUsername;
     Position   = position;
     Packs      = draftCollection;
     _isTimed   = draft.Timed;
 }
Пример #3
0
        public PlayerUpdatedModel(CubeDraftPlayer player, CubeDraft draft, bool trading = false)
        {
            if (player.MtgoLink == null)
            {
                throw new InvalidOperationException();
            }

            Id         = player.Id;
            UserId     = player.MtgoLink.UserId;
            Username   = player.MtgoLink.User.TwitchUsername;
            Confirmed  = player.Confirmed;
            DeckBuilt  = player.DeckBuilt;
            DeckStatus = "none";
            Trading    = trading;

            if (player.Confirmed)
            {
                MtgoUsername = player.MtgoLink.MtgoUsername;
                MtgoId       = player.MtgoLink.MtgoId;

                RequireCollateral = player.RequireCollateral;

                var mtgoCount = draft.CubeDraftCards.Count(c => c.Location == player.MtgoLink.MtgoId);

                var pickCount = player.CubeDraftPicks.Count;

                if (pickCount > 0)
                {
                    if (mtgoCount > 0 && mtgoCount < pickCount)
                    {
                        DeckStatus = "partial";
                    }
                    else if (mtgoCount > 0 && mtgoCount >= pickCount)
                    {
                        DeckStatus = "full";
                    }
                }
            }
            else
            {
                RequireCollateral = 0;
            }
        }
Пример #4
0
        public Drafter(CubeDraft draft, CubeDraftPlayer player, int position, DraftCollection draftCollection, List <Card> picks)
        {
            if (picks == null)
            {
                picks = new List <Card>();
            }

            DraftId    = draft.Id;
            PlayerId   = player.Id;
            UserId     = player.MtgoLink.UserId;
            PlayerName = player.MtgoLink.User.TwitchUsername;
            Position   = position;
            _isTimed   = draft.Timed;
            Packs      = draftCollection;
            if (picks.Count == 0)
            {
                QueuedPicks.Enqueue(draftCollection.GetNextPack().Cards.ToList());
            }

            Picks       = picks;
            CurrentPick = picks.Count + 1;
        }
Пример #5
0
        public int Signup(int draftId)
        {
            try
            {
                var userId = Context.User.GetUserId();
                var user   = _db.Users
                             .Include("MtgoLinks")
                             .Single(u => u.Id == userId);

                Log.DebugFormat("Signup from userId='{0}', user='******'", userId, user.TwitchUsername);

                var draft = _db.CubeDrafts
                            .Include("CubeDraftCards")
                            .Include("CubeDraftPlayers.CubeDraftPicks")
                            .Include("CubeDraftPlayers.MtgoLink.User")
                            .SingleOrDefault(d => d.Id == draftId);


                if (draft == null || draft.Status != CubeDraftStatus.PreStart)
                {
                    Log.Debug("Draft not in PreStart");
                    return(0);
                }

                var dbUser = user.MtgoLinks.FirstOrDefault();

                if (dbUser == null)
                {
                    Log.Debug("No link found, sending 1");
                    return(1);
                }

                if (!dbUser.Confirmed)
                {
                    Log.Debug("Link found, not confirmed, sending 2");
                    return(2);
                }

                var newPlayer = new CubeDraftPlayer
                {
                    Confirmed         = false,
                    ProductGiven      = false,
                    MtgoLinkId        = dbUser.Id,
                    Position          = 0,
                    RequireCollateral = 0,
                    Team      = 0,
                    DropRound = -1
                };

                try
                {
                    draft.CubeDraftPlayers.Add(newPlayer);

                    _db.SaveChanges();
                }
                catch (Exception ex)
                {
                    Log.Debug("Exception adding CubeDraftPlayer", ex);
                    draft.CubeDraftPlayers.Remove(newPlayer);
                    return(0);
                }

                Log.DebugFormat("Player Added: playerId='{0}', mtgoLinkId='{1}'. Sending 3", newPlayer.Id, newPlayer.MtgoLinkId);
                Clients.Group(String.Format("draft/{0}/clients", draftId)).playerUpdated(new PlayerUpdatedModel(newPlayer, draft));

                return(3);
            }
            catch (Exception ex)
            {
                Log.Debug("Uncaught expcetion in Signup", ex);
                Log.DebugFormat("Inner Exception: {0}", ex.InnerException);
                throw;
            }
        }