示例#1
0
        public static EleGraphicalData ReadFromStream(int id, EleInstance instance, BigEndianReader reader)
        {
            var type = (EleGraphicalElementTypes)reader.ReadByte();

            switch (type)
            {
            case EleGraphicalElementTypes.ANIMATED:
                return(AnimatedGraphicalElementData.ReadFromStream(instance, id, reader));

            case EleGraphicalElementTypes.BLENDED:
                return(BlendedGraphicalElementData.ReadFromStream(instance, id, reader));

            case EleGraphicalElementTypes.BOUNDING_BOX:
                return(BoundingBoxGraphicalElementData.ReadFromStream(instance, id, reader));

            case EleGraphicalElementTypes.ENTITY:
                return(EntityGraphicalElementData.ReadFromStream(instance, id, reader));

            case EleGraphicalElementTypes.NORMAL:
                return(NormalGraphicalElementData.ReadFromStream(instance, id, reader));

            case EleGraphicalElementTypes.PARTICLES:
                return(ParticlesGraphicalElementData.ReadFromStream(instance, id, reader));

            default:
                throw new Exception("Unknown graphical data of type " + type);
            }
        }
示例#2
0
 public GfxTemplate(NormalGraphicalElementData element)
 {
     GfxId              = element.Gfx;
     Height             = element.Height;
     HorizontalSymmetry = element.HorizontalSymmetry;
     Origin             = new Point(element.Origin.X, element.Origin.Y);
     Size = new Point(element.Size.X, element.Size.Y);
 }
示例#3
0
        public static void GetElements(DlmMap map, Elements elements, out List <MapInteractiveElement> interactiveElements)
        {
            interactiveElements = new List <MapInteractiveElement>();
            foreach (var layer in map.Layers)
            {
                foreach (var cell in layer.Cells)
                {
                    foreach (var element in cell.Elements)
                    {
                        if (element is DlmGraphicalElement)
                        {
                            DlmGraphicalElement graphicalElement = element as DlmGraphicalElement;

                            if (graphicalElement.Identifier != 0)
                            {
                                var gfxElement = elements.ReadElement((int)graphicalElement.ElementId);

                                if (gfxElement.Type != EleGraphicalElementTypes.ENTITY)
                                {
                                    NormalGraphicalElementData normalElement    = gfxElement as NormalGraphicalElementData;
                                    MapInteractiveElement      interactiveTable = new MapInteractiveElement();
                                    interactiveTable.ElementId = (int)graphicalElement.Identifier;
                                    interactiveTable.MapId     = map.Id;
                                    interactiveTable.CellId    = (ushort)cell.Id;
                                    if (normalElement != null)
                                    {
                                        interactiveTable.GfxId = normalElement.Gfx;
                                    }
                                    interactiveTable.GfxBonesId = -1;
                                    interactiveElements.Add(interactiveTable);
                                }
                                else
                                {
                                    EntityGraphicalElementData entityElement    = gfxElement as EntityGraphicalElementData;
                                    MapInteractiveElement      interactiveTable = new MapInteractiveElement();
                                    interactiveTable.ElementId  = (int)graphicalElement.Identifier;
                                    interactiveTable.MapId      = map.Id;
                                    interactiveTable.CellId     = (ushort)cell.Id;
                                    interactiveTable.GfxBonesId = ushort.Parse(entityElement.EntityLook.Replace("{", "").Replace("}", ""));
                                    interactiveTable.GfxId      = -1;
                                    interactiveElements.Add(interactiveTable);
                                }
                            }
                        }
                    }
                }
            }
        }
示例#4
0
 public GfxElement(DlmGraphicalElement element, NormalGraphicalElementData graphicalElement, BitmapSource gfx, ObjectsLayer layer)
 {
     Cell = element.Cell.Id;
     ColorMultiplicator = element.ColorMultiplicator;
     Altitude           = element.Altitude;
     m_elementId        = element.ElementId;
     Identifier         = element.Identifier;
     Offset             = new Point(element.Offset.X, element.Offset.Y);
     PixelOffset        = new Point(element.PixelOffset.X, element.PixelOffset.Y);
     FinalTeint         = element.FinalTeint;
     Hue         = element.Hue;
     Shadow      = element.Shadow;
     Layer       = layer;
     Template    = new GfxTemplate(graphicalElement);
     ImageSource = gfx;
 }
        public static EleGraphicalData readElement(Elements instance, BigEndianReader reader, int id)
        {
            EleGraphicalElementTypes type = (EleGraphicalElementTypes)reader.ReadByte();
            EleGraphicalData         result;

            switch (type)
            {
            case EleGraphicalElementTypes.NORMAL:
                result = NormalGraphicalElementData.ReadFromStream(instance, id, reader);
                break;

            case EleGraphicalElementTypes.BOUNDING_BOX:
                result = BoundingBoxGraphicalElementData.ReadFromStream(instance, id, reader);
                break;

            case EleGraphicalElementTypes.ANIMATED:
                result = AnimatedGraphicalElementData.ReadFromStream(instance, id, reader);
                break;

            case EleGraphicalElementTypes.ENTITY:
                result = EntityGraphicalElementData.ReadFromStream(instance, id, reader);
                break;

            case EleGraphicalElementTypes.PARTICLES:
                result = ParticlesGraphicalElementData.ReadFromStream(instance, id, reader);
                break;

            case EleGraphicalElementTypes.BLENDED:
                result = BlendedGraphicalElementData.ReadFromStream(instance, id, reader);
                break;

            default:
                throw new Exception("Unknown graphical data of type " + type);
            }
            return(result);
        }
        private void PreLoading()
        {
            if (m_map == null)
            {
                return;
            }

            m_layers = new List <LayerContent>();
            foreach (var layer in m_map.Layers.OrderBy(x => x.LayerId))
            {
                LayerContent instanceLayer = null;


                if (!m_layers.Any(x => x.Type == (LayerEnum)layer.LayerId))
                {
                    m_layers.Add(new LayerContent()
                    {
                        Type = (LayerEnum)layer.LayerId
                    });
                }



                instanceLayer = m_layers.First(x => x.Type == (LayerEnum)layer.LayerId);

                // recupere Identifier qui est egale au ElementId que le serveur doit envoyer
                List <int> Identifierlist = (from i in layer.Cells
                                             from y in i.Elements
                                             where y is GraphicalElement && (y as GraphicalElement).Identifier != 0
                                             select(y as GraphicalElement).Identifier).ToList();

                List <int> ElementIdlist = (from i in layer.Cells
                                            from y in i.Elements
                                            where y is GraphicalElement && Identifierlist.Contains((y as GraphicalElement).Identifier)
                                            select(y as GraphicalElement).ElementId).ToList();

                foreach (var cell in layer.Cells.OrderBy(x => x.CellId))
                {
                    foreach (GraphicalElement element in cell.Elements.Where(x => x is GraphicalElement))
                    {
                        var graphicElement = TextureManager.Instance.GetElementData(element.ElementId);

                        if (graphicElement is NormalGraphicalElementData)
                        {
                            NormalGraphicalElementData g = graphicElement as NormalGraphicalElementData;


                            if (g != null && TextureManager.Instance.GetImageGfx(g.Gfx) != null)
                            {
                                var instance = new Test()
                                {
                                    CellID = cell.CellId, GraphicalElement = element, Sprite = new Sprite(TextureManager.Instance.GetImageGfx(g.Gfx)), GraphicElement = graphicElement, Manager = this
                                };
                                var test = instance.GetPosToDrawTexture();

                                var currentCell = GetCell(new System.Drawing.Point((int)test.X, (int)test.Y), false, instance.Sprite.TextureRect.Width, instance.Sprite.TextureRect.Height);
                                var d           = instance.Sprite.TextureRect;
                                var testg       = instance.GraphicalElement.PixelOffsetX;

                                instanceLayer.AddElement(cell.CellId, instance);
                            }
                        }
                        else if (graphicElement is EntityGraphicalElementData)
                        {
                            var d = ActorLook.Parse((graphicElement as EntityGraphicalElementData).EntityLook);
                            if (d.BonesID == 650)
                            {
                                var j = TextureManager.Instance.GetImageGfx(650);

                                var instance = new Test()
                                {
                                    CellID = cell.CellId, GraphicalElement = element, Sprite = new Sprite(new Texture(@"E:\Map Editor Britana\DesignEditeurMap\DesignEditeurMap\bin\Debug\data\img\655450.png")), GraphicElement = graphicElement, Manager = this
                                };

                                instanceLayer.AddElement(cell.CellId, instance);
                            }
                        }
                    }
                }
            }
        }