Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        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);
        }
Ejemplo n.º 3
0
    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
Ejemplo n.º 4
0
    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;
            }
        }
    }
Ejemplo n.º 5
0
        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);
            }
            ;
        }
Ejemplo n.º 6
0
        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);
        }
Ejemplo n.º 7
0
        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); }
        }
Ejemplo n.º 8
0
        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);
        }
Ejemplo n.º 9
0
    }     // end Function

    public void BrickDown(BrickItem brick)
    {
        m_editBrick = brick;
        m_isEdit    = true;
        MyButtonAnimation.instance.SetBool("isBrickEdit", true);
    }
Ejemplo n.º 10
0
 void Start()
 {
     instance    = GetComponent <BrickEditor>();
     m_editBrick = null;
     m_isEdit    = false;
 }
Ejemplo n.º 11
0
        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:&nbsp;<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);
        }
Ejemplo n.º 12
0
        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);
        }