public CardDto(CardLink cardLink) { ImgLink = cardLink.Card.ImgLink; text = cardLink.Card.text; rulings = cardLink.Card.rulings; id = cardLink.Card.id; name = cardLink.Card.name; cardLinkId = cardLink.Id.ToString(); }
public void OnDrop(PointerEventData eventData) { DragHandler d = eventData.pointerDrag.GetComponent <DragHandler>(); if (d != null) { CardLink cl = eventData.pointerDrag.GetComponent <CardLink>(); if (cl != null) { if (GameClientController == null) { GameClientController = FindObjectOfType <GameClientController>(); } Card card = cl.Card; Debug.Log(card.CardName + " was dropped on " + gameObject.name); if (card.CardType == CardType.SHIP && DropZoneType == DropZoneType.PLAYER_SHIPYARD) { // try to host the ship on the shipyard Shipyard shipyard = (Shipyard)GetComponent <CardLink>().Card; if (GameClientController.TryHost((Ship)card, shipyard)) { d.returnToParent = false; } } if (card.CardType == CardType.SHIPYARD && DropZoneType == DropZoneType.PLAYER_CONSTRUCTION_AREA) { if (GameClientController.TryPlayShipyard((Shipyard)card)) { d.returnToParent = false; } } if (card.CardType == CardType.OPERATION) { if (GameClientController.TryPlayOperation((Operation)card)) { d.returnToParent = false; } } } } }
public static CardLink MakeCustomerCardLink(MYOBCustomer customer) { var c = new CardLink { DisplayID = customer.DisplayID, Name = customer.CompanyName, UID = customer.Uid, URI = new Uri(customer.URI) }; if (c.UID == null) { throw new Exception($"UID not set for customer {customer.DisplayID}"); } if (c.URI == null) { throw new Exception($"URI not set for {customer.DisplayID} "); } return(c); }
public async Task <dynamic> GetHand(GameRequest request) { var randomCards = await Utils.GetRandomCards(Utils.HandSize, _context); var randomCardLinks = new List <CardLink>(); //save links to DB foreach (var randomCard in randomCards) { var cardLink = new CardLink { Card = randomCard }; _context.CardLinks.Add(cardLink); await _context.SaveChangesAsync(); _context.SaveChanges(); randomCardLinks.Add(cardLink); } return(Json(new Response <List <CardLink> > { Result = randomCardLinks })); }
//怪兽,pendulum怪兽 string getMonster(Card c, string img, CardPack cardpack = null, bool rarity = true) { StringBuilder sb = new StringBuilder(); string[] types = GetTypes(c); string race = GetRace(c.race); sb.AppendLine(TAG_CARD + ":"); sb.AppendLine(GetLine(TAG_CARDTYPE, types[0])); sb.AppendLine(GetLine(TAG_NAME, reItalic(c.name))); sb.AppendLine(GetLine(TAG_ATTRIBUTE, GetAttribute(c.attribute))); sb.AppendLine(GetLine(TAG_LEVEL, GetStar(c.level))); sb.AppendLine(GetLine(TAG_IMAGE, img)); sb.AppendLine(GetLine(TAG_TYPE1, cn2tw(race))); sb.AppendLine(GetLine(TAG_TYPE2, cn2tw(types[1]))); sb.AppendLine(GetLine(TAG_TYPE3, cn2tw(types[2]))); sb.AppendLine(GetLine(TAG_TYPE4, cn2tw(types[3]))); sb.AppendLine(GetLine(TAG_TYPE5, cn2tw(types[4]))); if (cardpack != null) { sb.AppendLine(GetLine(TAG_NUMBER, cardpack.pack_id)); if (rarity) { sb.AppendLine(GetLine(TAG_RARITY, cardpack.getMseRarity())); } } if (c.IsType(CardType.TYPE_LINK)) { if (CardLink.isLink(c.def, CardLink.DownLeft)) { sb.AppendLine(GetLine(TAG_Link_Marker_DL, "yes")); } if (CardLink.isLink(c.def, CardLink.Down)) { sb.AppendLine(GetLine(TAG_Link_Marker_Down, "yes")); } if (CardLink.isLink(c.def, CardLink.DownRight)) { sb.AppendLine(GetLine(TAG_Link_Marker_DR, "yes")); } if (CardLink.isLink(c.def, CardLink.UpLeft)) { sb.AppendLine(GetLine(TAG_Link_Marker_UL, "yes")); } if (CardLink.isLink(c.def, CardLink.Up)) { sb.AppendLine(GetLine(TAG_Link_Marker_Up, "yes")); } if (CardLink.isLink(c.def, CardLink.UpRight)) { sb.AppendLine(GetLine(TAG_Link_Marker_UR, "yes")); } if (CardLink.isLink(c.def, CardLink.Left)) { sb.AppendLine(GetLine(TAG_Link_Marker_Left, "yes")); } if (CardLink.isLink(c.def, CardLink.Right)) { sb.AppendLine(GetLine(TAG_Link_Marker_Right, "yes")); } sb.AppendLine(GetLine(TAG_Link_Number, "" + getLinkNumber(c.def))); sb.AppendLine(" " + TAG_TEXT + ":"); sb.AppendLine(" "+ ReText(reItalic(c.desc))); } else { if (c.IsType(CardType.TYPE_PENDULUM)) //P怪兽 { string text = GetDesc(c.desc, cfg.regx_monster); if (string.IsNullOrEmpty(text)) { text = c.desc; } sb.AppendLine(" " + TAG_TEXT + ":"); //sb.AppendLine(cfg.regx_monster + ":" + cfg.regx_pendulum); sb.AppendLine(" "+ ReText(reItalic(text))); sb.AppendLine(GetLine(TAG_PENDULUM, "medium")); sb.AppendLine(GetLine(TAG_PSCALE1, ((c.level >> 0x18) & 0xff).ToString())); sb.AppendLine(GetLine(TAG_PSCALE2, ((c.level >> 0x10) & 0xff).ToString())); sb.AppendLine(" " + TAG_PEND_TEXT + ":"); sb.AppendLine(" "+ ReText(reItalic(GetDesc(c.desc, cfg.regx_pendulum)))); } else //一般怪兽 { sb.AppendLine(" " + TAG_TEXT + ":"); sb.AppendLine(" "+ ReText(reItalic(c.desc))); } sb.AppendLine(GetLine(TAG_DEF, (c.def < 0) ? UNKNOWN_ATKDEF : c.def.ToString())); } sb.AppendLine(GetLine(TAG_ATK, (c.atk < 0) ? UNKNOWN_ATKDEF : c.atk.ToString())); sb.AppendLine(GetLine(TAG_CODE, c.idString)); return(sb.ToString()); }
public async Task <dynamic> CreateToken(CreateTokenRequest request) { Guid gameIdGuid; if (!Guid.TryParse(request.GameId, out gameIdGuid)) { return(InvalidGameId(request.GameId)); } var gameQuery = _context.Games .Where(g => g.Id == gameIdGuid) .Include(g => g.FirstPlayer) .Include(g => g.SecondPlayer); var game = await gameQuery.FirstOrDefaultAsync(); if (game == null) { return(GameNotFound(request.GameId)); } var player = await _context.Users.FirstOrDefaultAsync(u => u.Id == request.PlayerId); if (player == null) { return(PlayerNotFound(request.PlayerId)); } if (game.FirstPlayer != player && game.SecondPlayer != player) { return(PlayerNotInGame(request.PlayerId, request.GameId)); } var username = player.UserName; var colorForUrl = request.Color == null || request.Color.Length == 0 || string.IsNullOrEmpty(request.Color[0]) ? "c" : request.Color.Length > 1 ? "m" : request.Color[0] == "white" ? "w" : request.Color[0] == "blue" ? "u" : request.Color[0] == "black" ? "b" : request.Color[0] == "red" ? "r" : "g"; var imgUrl = "http://www.shenafu.com/imgd/ymtc/" + Uri.EscapeDataString(request.Name) + "_by_" + Uri.EscapeDataString(username) + ".png"; var client = new RestClient("http://www.shenafu.com/magic/cc.php?save=true&frame=modern"); var restRequest = new RestRequest(Method.GET); restRequest.AddParameter("color", colorForUrl); restRequest.AddParameter("cardname", request.Name); restRequest.AddParameter("cardtype", "00001000000"); restRequest.AddParameter("subtype", "Token " + request.Type); restRequest.AddParameter("powertoughness", request.Power + "/" + request.Toughness); restRequest.AddParameter("rulestext", request.Text); restRequest.AddParameter("creator", username); var result = client.Execute(restRequest); var existingToken = await _context.Tokens.Where(t => t.ImgLink.Equals(imgUrl)).FirstOrDefaultAsync(); var token = existingToken ?? new Token { Color = colorForUrl, CardType = request.Type, name = request.Name, Power = request.Power, Toughness = request.Toughness, text = request.Text, ImgLink = imgUrl }; var cardLink = new CardLink { Token = token, }; _context.CardLinks.Add(cardLink); await _context.SaveChangesAsync(); return(Json(new Response <CardLink> { Result = cardLink })); }
public async Task <dynamic> ViewCards(ViewCardsRequest request) { Guid gameIdGuid; if (!Guid.TryParse(request.GameId, out gameIdGuid)) { return(InvalidGameId(request.GameId)); } var gameQuery = _context.Games .Where(g => g.Id == gameIdGuid) .Include(g => g.FirstPlayer) .Include(g => g.SecondPlayer); switch (request.From) { case ViewFrom.Graveyard: gameQuery = gameQuery.Include(g => g.Grave.Select(i => i.CardLink.Card.rulings)); break; case ViewFrom.Exile: gameQuery = gameQuery.Include(g => g.Exile.Select(i => i.CardLink.Card.rulings)); break; case ViewFrom.TopOfTheDeck: gameQuery = gameQuery.Include(g => g.Top.Select(i => i.CardLink.Card.rulings)); break; case ViewFrom.EnemyHand: break; } var game = await gameQuery.FirstOrDefaultAsync(); if (game == null) { return(GameNotFound(request.GameId)); } var player = await _context.Users.FirstOrDefaultAsync(u => u.Id == request.PlayerId); if (player == null) { return(PlayerNotFound(request.PlayerId)); } if (game.FirstPlayer != player && game.SecondPlayer != player) { return(PlayerNotInGame(request.PlayerId, request.GameId)); } List <CardLink> cardLinks = new List <CardLink>(); switch (request.From) { case ViewFrom.Graveyard: cardLinks = game.Grave.Select(g => g.CardLink).ToList(); break; case ViewFrom.Exile: cardLinks = game.Exile.Select(g => g.CardLink).ToList(); break; case ViewFrom.TopOfTheDeck: if (game.Top.Count < request.Count) { var delta = request.Count - game.Top.Count; var randomCards = await Utils.GetRandomCards(delta, _context); var randomCardLinks = new List <CardLink>(); //save links to DB foreach (var randomCard in randomCards) { var cardLink = new CardLink { Card = randomCard }; _context.CardLinks.Add(cardLink); await _context.SaveChangesAsync(); _context.SaveChanges(); randomCardLinks.Add(cardLink); } foreach (var top in game.Top) { top.Number += delta; } for (int i = 0; i < delta; i++) { game.Top.Add(new Top { CardLink = randomCardLinks[i], Number = i + 1 }); } foreach (var t in game.Top) { _context.Tops.AddOrUpdate(t); } await _context.SaveChangesAsync(); } cardLinks = game.Top.OrderByDescending(t => t.Number).Take(request.Count).OrderBy(t => t.Number).Select(g => g.CardLink).ToList(); break; case ViewFrom.EnemyHand: break; } Utils.FillImages(cardLinks.Select(l => l.Card)); return(Json(new Response <List <CardLink> > { Result = cardLinks })); }
public async Task <dynamic> Draw(GameRequest request) { Guid gameIdGuid; if (!Guid.TryParse(request.GameId, out gameIdGuid)) { return(InvalidGameId(request.GameId)); } var game = await _context.Games .Where(g => g.Id == gameIdGuid) .Include(g => g.FirstPlayer) .Include(g => g.SecondPlayer) .Include(g => g.Top.Select(t => t.CardLink.Card.rulings)) .Include(g => g.HandCards) .FirstOrDefaultAsync(); if (game == null) { return(GameNotFound(request.GameId)); } var player = await _context.Users.FirstOrDefaultAsync(u => u.Id == request.PlayerId); if (player == null) { return(PlayerNotFound(request.PlayerId)); } if (game.FirstPlayer != player && game.SecondPlayer != player) { return(PlayerNotInGame(request.PlayerId, request.GameId)); } CardLink cardLink; if (game.Top.Any()) { var top = game.Top.OrderByDescending(t => t.Number).Take(1).First(); cardLink = top.CardLink; Utils.FillOneImage(cardLink.Card); _context.Tops.Remove(top); await _context.SaveChangesAsync(); } else { cardLink = new CardLink { Card = (await Utils.GetRandomCards(1, _context)).First() }; _context.CardLinks.Add(cardLink); await _context.SaveChangesAsync(); _context.SaveChanges(); } game.HandCards.Add(new HandCard { CardLink = cardLink, Player = player }); await _context.SaveChangesAsync(); return(Json(new Response <CardLink> { Result = cardLink })); }
public async Task <dynamic> Start(GameRequest request) { Guid gameIdGuid; if (!Guid.TryParse(request.GameId, out gameIdGuid)) { return(InvalidGameId(request.GameId)); } var game = await _context.Games .Where(g => g.Id == gameIdGuid) .Include(g => g.FirstPlayer) .Include(g => g.SecondPlayer) .FirstOrDefaultAsync(); if (game == null) { return(GameNotFound(request.GameId)); } if (game.FirstPlayerReady) { return(Json(new Response <bool> { Result = true })); } var player = await _context.Users.FirstOrDefaultAsync(u => u.Id == request.PlayerId); if (player == null) { return(PlayerNotFound(request.PlayerId)); } if (game.FirstPlayer != player && game.SecondPlayer != player) { return(PlayerNotInGame(request.PlayerId, request.GameId)); } var randomCards = await Utils.GetRandomCards(Utils.HandSize, _context); var randomCardLinks = new List <CardLink>(); //save links to DB foreach (var randomCard in randomCards) { var cardLink = new CardLink { Card = randomCard }; _context.CardLinks.Add(cardLink); await _context.SaveChangesAsync(); _context.SaveChanges(); randomCardLinks.Add(cardLink); } var handCards = randomCardLinks.Select(c => new HandCard { CardLink = c, Player = player }); game.HandCards.AddRange(handCards); game.FirstPlayerReady = true; await _context.SaveChangesAsync(); return(Json(new Response <bool> { Result = true })); }