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); } }
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); }
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); } } } } } } }
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); } } } } } }