Exemple #1
0
        public BaseItem(BaseItem item)
        {
            spriteId = item.getId();
            data     = item.getTypeData();

            textures = new Dictionary <MeubiData, Image>();
            foreach (KeyValuePair <MeubiData, Image> pair in item.getTextures())
            {
                textures.Add(pair.Key.Clone() as MeubiData, pair.Value.Clone() as Image);
            }
            offsetData = new Dictionary <MeubiData, Vector2>();
            foreach (KeyValuePair <MeubiData, Vector2> pair in item.getOffsets())
            {
                offsetData.Add(pair.Key.Clone() as MeubiData, pair.Value);
            }
        }
Exemple #2
0
        public void SetSpriteId(int id)
        {
            data = GameScreenManager.Instance.GetFurniTypeBySpriteId(id);

            if (data == null)
            {
                Logger.Warn("Sprite Id not found:", id);
                return;
            }
            try
            {
                if (data.id == 0)
                {
                    return;
                }

                for (int r = 0; r < data.rotations; r++)
                {
                    for (int i = 0; i < data.interactions; i++)
                    {
                        for (int x = 0; x < data.xdim; x++)
                        {
                            for (int y = 0; y < data.ydim; y++)
                            {
                                if (File.Exists(@"Content/Client/Items/" + data.classname + "/" + r + "_" + i + "_" + x + "_" + y + ".xnb"))
                                {
                                    textures.Add(new MeubiData(r, i, x, y), new Image(GameScreenManager.Instance.GetContentManager(), "Client/Items/" + data.classname + "/" + r + "_" + i + "_" + x + "_" + y, Vector2.Zero));
                                    if (!ColorData.Compare(data.color, 0, 0, 0))
                                    {
                                        textures.Add(new MeubiData(r, i, x, y, true), new Image(GameScreenManager.Instance.GetContentManager(), "Client/Items/" + data.classname + "/" + r + "_" + i + "_" + x + "_" + y + "_C", Vector2.Zero).SetColor(data.color));
                                    }
                                }
                                else if (r == 1)
                                {
                                    textures.Add(new MeubiData(r, i, x, y), new Image(GameScreenManager.Instance.GetContentManager(), "Client/Items/" + data.classname + "/" + 0 + "_" + i + "_" + x + "_" + y, Vector2.Zero, 1f, 0, SpriteEffects.FlipHorizontally));
                                    if (!ColorData.Compare(data.color, 0, 0, 0))
                                    {
                                        textures.Add(new MeubiData(r, i, x, y, true), new Image(GameScreenManager.Instance.GetContentManager(), "Client/Items/" + data.classname + "/" + 0 + "_" + i + "_" + x + "_" + y + "_C", Vector2.Zero, 1f, 0, SpriteEffects.FlipHorizontally).SetColor(data.color));
                                    }
                                }
                                else if (r == 3)
                                {
                                    textures.Add(new MeubiData(r, i, x, y), new Image(GameScreenManager.Instance.GetContentManager(), "Client/Items/" + data.classname + "/" + 2 + "_" + i + "_" + x + "_" + y, Vector2.Zero, 1f, 0, SpriteEffects.FlipHorizontally));
                                    if (!ColorData.Compare(data.color, 0, 0, 0))
                                    {
                                        textures.Add(new MeubiData(r, i, x, y, true), new Image(GameScreenManager.Instance.GetContentManager(), "Client/Items/" + data.classname + "/" + 2 + "_" + i + "_" + x + "_" + y + "_C", Vector2.Zero, 1f, 0, SpriteEffects.FlipHorizontally).SetColor(data.color));
                                    }
                                }
                                //else Console.WriteLine("Texture not found!");
                                //else textures.Add(new MeubiData(r, i, x, y), new Image(GameScreenManager.Instance.GetContentManager(), "Client/Items/" + type.classname + "/" + 0 + "_" + 0 + "_" + x + "_" + y, Vector2.Zero));
                            }
                        }
                    }
                }

                if (File.Exists(@"Content/Client/Items/" + data.classname + "/offsets.txt"))
                {
                    string   text  = File.ReadAllText(@"Content/Client/Items/" + data.classname + "/offsets.txt");
                    string[] files = text.Split('\n');

                    foreach (string line in files)
                    {
                        string[] data      = line.Split(';');
                        string[] meubiData = data[2].Split('_');

                        try
                        {
                            if (meubiData[4] != null)
                            {
                                offsetData.Add(new MeubiData(int.Parse(meubiData[0]), int.Parse(meubiData[1]), int.Parse(meubiData[2]), int.Parse(meubiData[3]), true), new Vector2(int.Parse(data[0]), int.Parse(data[1])));
                            }
                        }
                        catch (IndexOutOfRangeException ex)
                        {
                            offsetData.Add(new MeubiData(int.Parse(meubiData[0]), int.Parse(meubiData[1]), int.Parse(meubiData[2]), int.Parse(meubiData[3])), new Vector2(int.Parse(data[0]), int.Parse(data[1])));
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                var t = new Thread(() => SetSpriteId(id));
                //if (textureLoadIssue) Thread.Sleep(100);
                //else textureLoadIssue = true;

                if (attemptAtReload++ < 10)
                {
                    t.Start();
                }
                else
                {
                    Logger.Error("Could not load Sprite: ", id, " afther ", attemptAtReload, " attempts.\n" + ex);
                }
            }
        }