public BrickItem GetMOCInfo(string number) { BrickItem retitem = new BrickItem(); try { string url = $"https://rebrickable.com/api/v3/lego/mocs/{number}/"; var strret = ExecuteRequest(url); var retobjdeser = Newtonsoft.Json.JsonConvert.DeserializeObject <BrickableMOC>(strret); if (retobjdeser == null) { return(null); } retitem.Name = retobjdeser.name; retitem.Number = retobjdeser.set_num; retitem.ThumbnailUrl = retobjdeser.moc_img_url; retitem.ItemType = ItemType.MOC; retitem.YearReleased = retobjdeser.year; if (Categories == null) { Categories = GetThemes(); } if (Categories != null) { retitem.Theme = Categories.Where(x => x.id == retobjdeser.theme_id).First().name; } retitem.BrickURL = retobjdeser.moc_url; retitem.BrickService = ServiceProvider.Rebrickable; } catch (Exception) { return(null); } return(retitem); }
public BrickItem getInstructions(string number) { BricksetAPIv2SoapClient bsAPI = new BricksetAPIv2SoapClient(); var ret = bsAPI.getSets(apikey, "", "", "", "", $"{number}", "", "", "", "", "", "", ""); if (ret == null) { return(null); } BrickItem retitem = new BrickItem(); retitem.Number = number; retitem.Name = ret[0].name; if (ret[0].instructionsCount > 0) { var instruct = bsAPI.getInstructions(apikey, ret[0].setID); retitem.Instructions = new SetInstruction[ret[0].instructionsCount]; for (int i = 0; i < instruct.Length; i++) { retitem.Instructions[i] = new SetInstruction(); retitem.Instructions[i].Name = instruct[i].description; retitem.Instructions[i].URL = instruct[i].URL; } } retitem.BrickService = ServiceProvider.Brickset; retitem.ItemType = ItemType.Set; retitem.Theme = ret[0].theme; retitem.ThumbnailUrl = ret[0].thumbnailURL; int years; int.TryParse(ret[0].year, out years); retitem.YearReleased = years; retitem.BrickURL = ret[0].bricksetURL; return(retitem); }
void InputUp() { #if UNITY_EDITOR if (Input.GetMouseButtonUp(0)) #elif UNITY_ANDROID || UNITY_IPHONE if (Input.touchCount == 0) #else if (Input.GetMouseButtonUp(0)) #endif { if (m_editBrick != null) { if (BackgroundInfo.instance.IsIn(m_editBrick.transform.position)) { m_editBrick.CompleteSetup(); } else { m_editBrick.Remove(); } MyButtonAnimation.instance.SetBool("isBrickEdit", false); m_editBrick = null; } } // end Input } // end Function
public void ReadGeneralExcel(string excelName) { ballGeneralExcel = Resources.Load <TextAsset>(excelName); string[] ball = ballGeneralExcel.text.Split('\n'); int row = ball.Length; int col = ball[0].Split(',').Length; int id = 0; string Name = ""; string model = ""; bool hpShow = true; string[,] ballArray = new string[row, col]; for (int i = 0; i < row; i++) { string[] str = ball[i].Split(','); for (int j = 0; j < col; j++) { if (j == col - 1) { str[j] = str[j].TrimEnd(); } ballArray[i, j] = str[j]; } } for (int i = 4; i < row; i++) { id = Convert.ToInt32(ballArray[i, 1]); Name = ballArray[i, 2]; model = ballArray[i, 3]; hpShow = ballArray[i, 4].Equals("TRUE") ? true : false; BrickItem monster = new BrickItem(id, Name, model, hpShow); if (!monster_Dic.ContainsKey(id)) { monster_Dic[id] = monster; } } }
public BrickItem GetBrickInfo(string number, ItemType typedesc) { BrickItem ret = null; switch (typedesc) { case ItemType.Part: return(GetPartInfo(number)); case ItemType.Book: case ItemType.Set: ret = GetSetInfo(number); if (ret == null) { number += "-1"; ret = GetSetInfo(number); } return(ret); case ItemType.MOC: ret = GetMOCInfo(number); if (ret == null) { number = "MOC-" + number; ret = GetMOCInfo(number); } return(ret); case ItemType.Instruction: case ItemType.Catalog: case ItemType.Gear: case ItemType.Minifig: default: return(null); } ; }
public BrickItem getSets(string number) { BricksetAPIv2SoapClient bsAPI = new BricksetAPIv2SoapClient(); var ret = bsAPI.getSets(apikey, "", "", "", "", $"{number}", "", "", "", "", "", "", ""); if (ret == null) { return(null); } BrickItem retitem = new BrickItem(); retitem.Number = number; retitem.Name = ret[0].name; retitem.BrickService = ServiceProvider.Brickset; retitem.ItemType = ItemType.Set; retitem.Theme = ret[0].theme; retitem.ThumbnailUrl = ret[0].thumbnailURL; retitem.BrickURL = ret[0].bricksetURL; int years; int.TryParse(ret[0].year, out years); retitem.YearReleased = years; return(retitem); }
public BrickItem GetCatalogItem(string number, TypeDescription typedesc = TypeDescription.SET) { try { string url = $"https://api.bricklink.com/api/store/v1/items/{typedesc.ToString()}/{number}"; for (int i = 0; i < retry; i++) { var strret = ExecuteRequest(url); var retobjdeser = Newtonsoft.Json.JsonConvert.DeserializeObject <CatalogMain>(strret); Debug.WriteLine($"{retobjdeser.meta.message}, {retobjdeser.meta.description}, {retobjdeser.meta.code}"); if (retobjdeser.meta.message == "OK") { BrickItem retset = new BrickItem(); //crap but ok as enum are aligned and not searching for other elements than the one which can match retset.ItemType = (ItemType)typedesc; retset.Number = retobjdeser.data.no; retset.Name = retobjdeser.data.name; retset.ThumbnailUrl = retobjdeser.data.thumbnail_url; switch (typedesc) { case TypeDescription.MINIFIG: retset.BrickURL = "https://www.bricklink.com/v2/catalog/catalogitem.page?M=" + retset.Number; break; case TypeDescription.PART: retset.BrickURL = "https://www.bricklink.com/v2/catalog/catalogitem.page?P=" + retset.Number; break; case TypeDescription.SET: retset.BrickURL = "https://www.bricklink.com/v2/catalog/catalogitem.page?S=" + retset.Number; break; case TypeDescription.BOOK: retset.BrickURL = "https://www.bricklink.com/v2/catalog/catalogitem.page?B=" + retset.Number; break; case TypeDescription.GEAR: retset.BrickURL = "https://www.bricklink.com/v2/catalog/catalogitem.page?G=" + retset.Number; break; case TypeDescription.CATALOG: retset.BrickURL = "https://www.bricklink.com/v2/catalog/catalogitem.page?C=" + retset.Number; break; case TypeDescription.INSTRUCTION: case TypeDescription.UNSORTED_LOT: case TypeDescription.ORIGINAL_BOX: default: retset.BrickURL = "https://www.bricklink.com/v2/search.page?q=" + retset.Number; break; } //clean URL, sometimes it comes without the http if (retset.ThumbnailUrl.Length > 0) { if (retset.ThumbnailUrl.IndexOf("http", StringComparison.CurrentCultureIgnoreCase) < 0) { retset.ThumbnailUrl = "http:" + retset.ThumbnailUrl; } } //need to implement category names try { retset.Theme = categories.Where(x => x.category_id == retobjdeser.data.category_id).First().category_name; } catch (Exception) { retset.Theme = ""; } //get all the prices details PriceGuideItem retPrice = GetPriceGuide(retobjdeser.data.no, typedesc, false); double retail_price; retset.New = new PriceDetails(); Double.TryParse(retPrice?.avg_price, NumberStyles.AllowDecimalPoint, CultureInfo.InvariantCulture, out retail_price); retset.New.Average = retail_price; Double.TryParse(retPrice?.min_price, NumberStyles.AllowDecimalPoint, CultureInfo.InvariantCulture, out retail_price); retset.New.Min = retail_price; Double.TryParse(retPrice?.max_price, NumberStyles.AllowDecimalPoint, CultureInfo.InvariantCulture, out retail_price); retset.New.Max = retail_price; // so far only USD, need to implement other currencies retset.New.Currency = "USD"; retPrice = GetPriceGuide(retobjdeser.data.no, typedesc, true); retset.Used = new PriceDetails(); Double.TryParse(retPrice?.avg_price, NumberStyles.AllowDecimalPoint, CultureInfo.InvariantCulture, out retail_price); retset.Used.Average = retail_price; Double.TryParse(retPrice?.min_price, NumberStyles.AllowDecimalPoint, CultureInfo.InvariantCulture, out retail_price); retset.Used.Min = retail_price; Double.TryParse(retPrice?.max_price, NumberStyles.AllowDecimalPoint, CultureInfo.InvariantCulture, out retail_price); retset.Used.Max = retail_price; retset.Used.Currency = "USD"; retset.YearReleased = retobjdeser.data.year_released; retset.BrickService = ServiceProvider.Bricklink; return(retset); } } return(null); } catch (Exception) { return(null); } }
private IMessageActivity BuildMessage(IDialogContext context, BrickItem retbrick) { var reply = context.MakeMessage(); if ((retbrick.BrickService == ServiceProvider.Bricklink) || (retbrick.BrickService == ServiceProvider.Brickset) || (retbrick.BrickService == ServiceProvider.Rebrickable) || (retbrick.BrickService == ServiceProvider.Peeron)) { reply.Attachments = new List <Attachment>(); List <CardAction> cardButtons = new List <CardAction>(); if (retbrick.Instructions != null) { foreach (var inst in retbrick.Instructions) { cardButtons.Add(new CardAction() { Title = inst.Name, Value = inst.URL, Type = "openUrl" }); } } HeroCard plCard = new HeroCard() { Title = $"# {retbrick.Number} - {retbrick.Name}" }; if (retbrick.ThumbnailUrl != null) { if (retbrick.ThumbnailUrl != "") { List <CardImage> cardImages = new List <CardImage>(); cardImages.Add(new CardImage(url: retbrick.ThumbnailUrl)); plCard.Images = cardImages; } } if (retbrick.BrickURL != null) { if (retbrick.BrickURL != "") { cardButtons.Add(new CardAction() { Title = $"{retbrick.BrickService.ToString()} page", Value = retbrick.BrickURL, Type = "openUrl" }); } } plCard.Buttons = cardButtons; plCard.Subtitle = $"Theme: {retbrick.Theme}"; if (retbrick.YearReleased != 0) { plCard.Subtitle += $" - Year: {retbrick.YearReleased}"; } else { plCard.Subtitle += " - Year unknown"; } if (retbrick.Color != null) { if (retbrick.Color != "") { plCard.Subtitle += $" - Color: {retbrick.Color}"; } } //string setcurrency; //need to implement a way to check the currncy. //context.PrivateConversationData.TryGetValue(BrickBotRes.CurrencyValue, out setcurrency); if (retbrick.BrickService == ServiceProvider.Bricklink) { if (retbrick.New.Average != 0) { plCard.Text += $"New min {retbrick.New.Min.ToString("0.00")}; max {retbrick.New.Max.ToString("0.00")}; avg {retbrick.New.Average.ToString("0.00")} {retbrick.New.Currency}. "; } if (retbrick.Used.Average != 0) { plCard.Text += $"Used min {retbrick.Used.Min.ToString("0.00")}; max {retbrick.Used.Max.ToString("0.00")}; avg {retbrick.Used.Average.ToString("0.00")} {retbrick.Used.Currency}. "; } } else if (retbrick.New?.Average != null) { if (retbrick.New.Average != 0) { plCard.Text += $"Price {retbrick.New.Average} {retbrick.New.Currency}"; } } reply.Attachments.Add(plCard.ToAttachment()); } return(reply); }
} // end Function public void BrickDown(BrickItem brick) { m_editBrick = brick; m_isEdit = true; MyButtonAnimation.instance.SetBool("isBrickEdit", true); }
void Start() { instance = GetComponent <BrickEditor>(); m_editBrick = null; m_isEdit = false; }
public BrickItem GetSetDetails(string number) { string url = $"http://www.peeron.com/inv/sets/{number}"; HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); HttpWebResponse response = (HttpWebResponse)request.GetResponse(); Stream dataStream = response.GetResponseStream(); // Open the stream using a StreamReader for easy access. StreamReader reader = new StreamReader(dataStream); // Read the content. var pagecontent = reader.ReadToEnd(); BrickItem retitem = new BrickItem(); retitem.BrickURL = url; //search for MSRP const string magicstring = "MSRP: <b>$"; var idx = pagecontent.IndexOf(magicstring); int endidx; if (idx > 0) { endidx = pagecontent.IndexOf("</b>", idx + magicstring.Length); var price = pagecontent.Substring(idx + magicstring.Length, endidx - idx - magicstring.Length); double pricedouble; if (Double.TryParse(price, NumberStyles.AllowDecimalPoint, CultureInfo.InvariantCulture, out pricedouble)) { retitem.New = new PriceDetails(); retitem.New.Average = pricedouble; retitem.New.Currency = "USD"; } } //find theme string theme = pagecontent; theme = theme.Substring(theme.IndexOf(">Theme</a>")); const string magichref = "<a href=\""; for (int i = 0; i < 2; i++) { idx = theme.IndexOf(magichref); theme = theme.Substring(idx + magichref.Length); } idx = theme.IndexOf("\">"); theme = theme.Substring(idx + 2); endidx = theme.IndexOf('<'); theme = theme.Substring(0, endidx); retitem.Theme = theme; // Find year const string magicyear = "Year:"; string yearstr = pagecontent; yearstr = yearstr.Substring(yearstr.IndexOf(magicyear)); yearstr = yearstr.Substring(yearstr.IndexOf("\">") + 2); yearstr = yearstr.Substring(0, yearstr.IndexOf('<')); int year; int.TryParse(yearstr, out year); retitem.YearReleased = year; //find instructions string instruct = pagecontent; const string magicinstructions = "instructions?</strong>"; const string magicend = "</ul>"; string name; if (instruct.IndexOf(magicinstructions) > 0) { instruct = instruct.Substring(instruct.IndexOf(magicinstructions) + magicinstructions.Length); instruct = instruct.Substring(0, instruct.IndexOf(magicend)); //find all the <a href name = instruct; int count = 0; do { idx = name.IndexOf(magichref); if (idx > 0) { count++; name = name.Substring(idx + magichref.Length); } } while (idx > 0); if (count > 0) { retitem.Instructions = new SetInstruction[count]; for (int i = 0; i < count; i++) { retitem.Instructions[i] = new SetInstruction(); idx = instruct.IndexOf(magichref); if (idx > 0) { instruct = instruct.Substring(idx + magichref.Length); url = instruct.Substring(0, instruct.IndexOf('"')); //check if it's a relative of abosulte if (!url.ToLower().Contains("http")) { url = "http://www.peeron.com" + url; } retitem.Instructions[i].URL = url; name = instruct.Substring(instruct.IndexOf('>') + 1); name = name.Substring(0, name.IndexOf('<')); retitem.Instructions[i].Name = name; } } } } //try to extract image thumbnail const string magicpicture = "id=\"setpic\""; url = pagecontent.Substring(pagecontent.IndexOf(magicpicture) + magicpicture.Length); url = url.Substring(url.IndexOf('"') + 1); url = url.Substring(0, url.IndexOf('"')); retitem.ThumbnailUrl = url; retitem.BrickService = ServiceProvider.Peeron; retitem.ItemType = ItemType.Set; retitem.Number = number; //try to extract the title const string magictitle = "id=\"settitle\">"; name = pagecontent.Substring(pagecontent.IndexOf(magictitle) + magictitle.Length); name = name.Substring(name.IndexOf(':') + 2); name = name.Substring(0, name.IndexOf('<')); retitem.Name = name; return(retitem); }
public BrickItem GetPartDetails(string number) { string url = $"http://www.peeron.com/inv/parts/{number}"; HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); HttpWebResponse response = (HttpWebResponse)request.GetResponse(); Stream dataStream = response.GetResponseStream(); // Open the stream using a StreamReader for easy access. StreamReader reader = new StreamReader(dataStream); // Read the content. var pagecontent = reader.ReadToEnd(); BrickItem retitem = new BrickItem(); retitem.BrickURL = url; //find instructions string instruct = pagecontent; string magicinstructions = $"({number})"; string magicend = $"<a href=\"/inv/parts/{number}?ignorepat=y\">Include patterns</a>"; const string magichref = "<a href=\""; string name; int idx = 0; if (instruct.IndexOf(magicinstructions) > 0) { instruct = instruct.Substring(instruct.IndexOf(magicinstructions) + magicinstructions.Length); instruct = instruct.Substring(0, instruct.IndexOf(magicend)); //find all the <a href name = instruct; int count = 0; do { idx = name.IndexOf(magichref); if (idx > 0) { count++; name = name.Substring(idx + magichref.Length); } } while (idx > 0); if (count > 0) { retitem.Instructions = new SetInstruction[count]; for (int i = 0; i < count; i++) { retitem.Instructions[i] = new SetInstruction(); idx = instruct.IndexOf(magichref); if (idx > 0) { instruct = instruct.Substring(idx + magichref.Length); url = instruct.Substring(0, instruct.IndexOf('"')); //check if it's a relative of abosulte if (!url.ToLower().Contains("http")) { url = "http://www.peeron.com" + url; } retitem.Instructions[i].URL = url; name = instruct.Substring(instruct.IndexOf('>') + 1); name = name.Substring(0, name.IndexOf('<')); retitem.Instructions[i].Name = name; } } } } //try to extract image thumbnail const string magicpicture = "id=\"setpic\""; url = pagecontent.Substring(pagecontent.IndexOf(magicpicture) + magicpicture.Length); url = url.Substring(url.IndexOf('"') + 1); url = url.Substring(0, url.IndexOf('"')); retitem.ThumbnailUrl = url; retitem.BrickService = ServiceProvider.Peeron; retitem.ItemType = ItemType.Set; retitem.Number = number; //try to extract the title string magictitle = "Sets that have"; name = pagecontent.Substring(pagecontent.IndexOf(magictitle) + magictitle.Length); name = name.Substring(name.IndexOf(':') + 2); name = name.Substring(0, name.IndexOf('<')); retitem.Name = name; if (name == "Unknown part") { return(null); } return(retitem); }