private string createRealDeckMessageString(DeckCardsMessage dcm) { string retu = "{\"deck\":\"" + dcm.deck + "\",\"metadata\":\"" + dcm.metadata + "\",\"cards\":["; for (int i = 0; i < dcm.cards.Length; i++) { // example {"id":10364756,"typeId":117,"tradable":true,"isToken":false,"level":0} if (i > 0) retu = retu + ","; Card c= dcm.cards[i]; retu = retu + "{\"id\":" + c.id + ",\"typeId\":" + c.getType() + ",\"tradeable\":" + c.tradable.ToString().ToLower() + ",\"isToken\":" + c.isToken.ToString().ToLower() + ",\"level\":" + dcm.cards[i].level + "}"; } retu=retu+"],\"resources\":["; for(int i=0;i< dcm.resources.Length;i++) { if (i > 0) retu = retu + ","; retu = retu + "\"" + dcm.resources[i] + "\""; } retu=retu+"],\"valid\":false,\"msg\":\"DeckCards\"}"; return retu; }
private void createDeckCardsMessage(bool testonly) { if (this.deckCards.Count == 0) { this.noadded = true; return; } DeckCardsMessage dcm = new DeckCardsMessage(); //System.Threading.Thread.Sleep(10); bool growthused = false, orderused = false, energyused = false, decayused = false; // do adding cards here List<Card> addedcards = new List<Card>(); // first add the highest cardlevels foreach (Card c in this.level2Cards) { if (this.deckCards.Contains(c.typeId) && !(addedcards.Exists(x => x.id == c.id))) { if (c.getResourceType() == ResourceType.GROWTH) growthused = true; if (c.getResourceType() == ResourceType.ORDER) orderused = true; if (c.getResourceType() == ResourceType.ENERGY) energyused = true; if (c.getResourceType() == ResourceType.DECAY) decayused = true; addedcards.Add(c); this.deckCards.Remove(c.typeId); } } foreach (Card c in this.level1Cards) { if (this.deckCards.Contains(c.typeId) && !(addedcards.Exists(x => x.id == c.id))) { if (c.getResourceType() == ResourceType.GROWTH) growthused = true; if (c.getResourceType() == ResourceType.ORDER) orderused = true; if (c.getResourceType() == ResourceType.ENERGY) energyused = true; if (c.getResourceType() == ResourceType.DECAY) decayused = true; addedcards.Add(c); this.deckCards.Remove(c.typeId); } } // add untradeable bevor tradeable foreach (Card c in this.level0untradeableCards) { if (this.deckCards.Contains(c.typeId) && !(addedcards.Exists(x => x.id == c.id))) { if (c.getResourceType() == ResourceType.GROWTH) growthused = true; if (c.getResourceType() == ResourceType.ORDER) orderused = true; if (c.getResourceType() == ResourceType.ENERGY) energyused = true; if (c.getResourceType() == ResourceType.DECAY) decayused = true; addedcards.Add(c); this.deckCards.Remove(c.typeId); } } foreach (Card c in this.level0tradeableCards) { if (this.deckCards.Contains(c.typeId) && !(addedcards.Exists(x => x.id == c.id))) { if (c.getResourceType() == ResourceType.GROWTH) growthused = true; if (c.getResourceType() == ResourceType.ORDER) orderused = true; if (c.getResourceType() == ResourceType.ENERGY) energyused = true; if (c.getResourceType() == ResourceType.DECAY) decayused = true; addedcards.Add(c); this.deckCards.Remove(c.typeId); } } dcm.cards = addedcards.ToArray(); // create resources string int anzressis = 0; if (growthused) anzressis++; if (orderused) anzressis++; if (energyused) anzressis++; if (decayused) anzressis++; ResourceType[] rt = new ResourceType[anzressis]; int temp_res = 0; if (growthused) { rt[temp_res] = ResourceType.GROWTH; temp_res++; } if (orderused) { rt[temp_res] = ResourceType.ORDER; temp_res++; } if (energyused) { rt[temp_res] = ResourceType.ENERGY; temp_res++; } if (decayused) { rt[temp_res] = ResourceType.DECAY; temp_res++; } dcm.resources = rt; // set positions if (!testonly) { string meta = mtMkr.getMetaData(addedcards); Console.WriteLine("#meta " + meta); dcm.metadata = meta; } dcm.valid = false; dcm.deck = ""; // add the deck! Console.WriteLine("set cards"); //db.handleMessage(dcm); //unsave ... was unsave, but i writed createRealDeckMessageString, so i have to use the other version (or my work would be needless)! string rdms = this.createRealDeckMessageString(dcm); Message msg = MessageFactory.create(MessageFactory.getMessageName(rdms), rdms); if (testonly) { this.tempmessage = rdms; } Console.WriteLine("#" + msg.getRawText()); if (!testonly) dispatchMessages.Invoke(App.Communicator, new object[] { msg }); this.missingCards = ""; if (this.deckCards.Count > 0) { this.dontOwnAllCards = true; CardTypeManager ctm=CardTypeManager.getInstance(); Dictionary<string, int> idNotOwnedNumber = new Dictionary<string, int>(); foreach (int ii in deckCards) { CardType type = ctm.get(ii); if (idNotOwnedNumber.ContainsKey(type.name)) { idNotOwnedNumber[type.name] += 1; } else { idNotOwnedNumber.Add(type.name, 1); } } foreach (KeyValuePair<string, int> kvp in idNotOwnedNumber.OrderBy(i => i.Key)) { if (this.missingCards != "") this.missingCards = this.missingCards + "\r\n"; CardType type = ctm.get(kvp.Key); this.missingCards = this.missingCards + kvp.Value +"x "+kvp.Key; } } }
public void PopupCancel(string popupType) { if (popupType == "sharedeck2") { string link = this.createLink(); link = link.Replace("http://www.UltimateDeckImporter.com/?l=", ""); List<string> data = new List<string>(); data.Add(App.MyProfile.ProfileInfo.name); data.Add(link); data.Add(this.choosenname); data.Add(""); this.googleie.postDataToGoogleForm(data); } if (popupType == "impdeck") { DeckCardsMessage dcm = new DeckCardsMessage(""); List<Card> cardes = new List<Card>(); foreach (Card c in imp.allCards) { if (this.copydeck.cards.Contains(c.id.ToString())) { cardes.Add(c); } } dcm.cards = cardes.ToArray(); dcm.metadata = this.copydeck.metadata; db.handleMessage(dcm); } }
public void PopupOk(string popupType) { if (popupType == "deleteprivatedeckok") { this.dcksrchui.setOwnList(); } if (popupType == "deletedeckprivate") { string text = System.IO.File.ReadAllText(this.deckfolder + System.IO.Path.DirectorySeparatorChar + "decks.txt"); string[] data = text.Split(new string[] { "\r\n" }, StringSplitOptions.RemoveEmptyEntries); foreach (string s in data) { if (s.Contains(this.dcksrchui.infodeck.deckname + ";")) { text = text.Replace(s + "\r\n", ""); } } System.IO.File.WriteAllText(this.deckfolder + System.IO.Path.DirectorySeparatorChar + "decks.txt", text); App.Popups.ShowOk(this, "deleteprivatedeckok", "Deck deleted", "Your deck was deleted.", "OK"); } if (popupType == "savedeck2") { string text = System.IO.File.ReadAllText(this.deckfolder + System.IO.Path.DirectorySeparatorChar + "decks.txt"); string[] data = text.Split(new string[] { "\r\n" }, StringSplitOptions.RemoveEmptyEntries); foreach(string s in data) { if (s.Contains(this.choosenname + ";")) { text = text.Replace(s+"\r\n",""); } } string link = this.createLink(); text = text + this.choosenname + ";" + link + "\r\n"; System.IO.File.WriteAllText(this.deckfolder + System.IO.Path.DirectorySeparatorChar + "decks.txt", text); Console.WriteLine("saved own deck"); App.Popups.ShowOk(this, "decksave", "Saved Deck", "Your deck was saved.", "OK"); } if (popupType == "loadOldDeck") { DeckCardsMessage dcm = new DeckCardsMessage(""); List<Card> cardes = new List<Card>(); foreach (Card c in imp.allCards) { if (this.copydeck.cards.Contains(c.id.ToString())) { cardes.Add(c); } } dcm.cards = cardes.ToArray(); dcm.metadata = this.copydeck.metadata; db.handleMessage(dcm); } }
private string createLinkFromDCM(DeckCardsMessage dcm) { string retu = ""; List<Card> tableCards = dcm.cards.ToList(); Dictionary<int, int> cardDic = new Dictionary<int, int>(); foreach (Card dc in tableCards) { int type = dc.getType(); if (cardDic.ContainsKey(type)) { cardDic[type] = cardDic[type] + 1; } else { cardDic[type] = 1; } } foreach (KeyValuePair<int, int> kvp in cardDic) { if (retu == "") { retu = kvp.Key + "," + kvp.Value; } else { retu = retu + ":" + kvp.Key + "," + kvp.Value; } } if (retu == "") return ""; retu = "http://www.UltimateDeckImporter.com/?l=" + retu; retu = retu.Replace(",3", ""); numberScrollsOnBoard = tableCards.Count(); return retu; }