public new static DlmGraphicalElement ReadFromStream(DlmCell cell, IDataReader reader)
        {
            var element = new DlmGraphicalElement(cell);

            element.m_elementId = reader.ReadUInt();
            element.m_hue       = new ColorMultiplicator(reader.ReadByte(), reader.ReadByte(), reader.ReadByte(), false);
            element.m_shadow    = new ColorMultiplicator(reader.ReadByte(), reader.ReadByte(), reader.ReadByte(), false);

            if (cell.Layer.Map.Version <= 4)
            {
                element.m_offset.X      = reader.ReadByte();
                element.m_offset.Y      = reader.ReadByte();
                element.m_pixelOffset.X = (int)(element.m_offset.X * CELL_HALF_WIDTH);
                element.m_pixelOffset.Y = (int)(element.m_offset.Y * CELL_HALF_HEIGHT);
            }
            else
            {
                element.m_pixelOffset.X = reader.ReadShort();
                element.m_pixelOffset.Y = reader.ReadShort();
                element.m_offset.X      = (int)(element.m_pixelOffset.X / CELL_HALF_WIDTH);
                element.m_offset.Y      = (int)(element.m_pixelOffset.Y / CELL_HALF_HEIGHT);
            }

            element.m_altitude   = reader.ReadByte();
            element.m_identifier = reader.ReadUInt();

            // we don't care
            //element.CalculateFinalTeint();

            return(element);
        }
예제 #2
0
        public static DlmLayer ReadFromStream(DlmMap map, IDataReader reader)
        {
            var layer = new DlmLayer(map);

            layer.LayerId = reader.ReadInt();
            layer.Cells   = new DlmCell[reader.ReadShort()];
            for (int i = 0; i < layer.Cells.Length; i++)
            {
                layer.Cells[i] = DlmCell.ReadFromStream(layer, reader);
            }

            return(layer);
        }
예제 #3
0
        public new static DlmSoundElement ReadFromStream(DlmCell cell, BigEndianReader reader)
        {
            var element = new DlmSoundElement(cell);

            element.m_soundId              = reader.ReadInt();
            element.m_baseVolume           = reader.ReadShort();
            element.m_fullVolumedistance   = reader.ReadInt();
            element.m_nullVolumedistance   = reader.ReadInt();
            element.m_minDelayBetweenloops = reader.ReadShort();
            element.m_maxDelayBetweenloops = reader.ReadShort();

            return(element);
        }
예제 #4
0
        public static DlmCell ReadFromStream(DlmLayer layer, BigEndianReader reader)
        {
            var cell = new DlmCell(layer);

            cell.Id       = reader.ReadShort();
            cell.Elements = new DlmBasicElement[reader.ReadShort()];

            for (int i = 0; i < cell.Elements.Length; i++)
            {
                DlmBasicElement element =
                    DlmBasicElement.ReadFromStream(cell, reader);
                cell.Elements[i] = element;
            }

            return(cell);
        }
예제 #5
0
        public static DlmBasicElement ReadFromStream(DlmCell cell, BigEndianReader reader)
        {
            var type = reader.ReadByte();

            switch ((ElementTypesEnum)type)
            {
            case ElementTypesEnum.Graphical:
                return(DlmGraphicalElement.ReadFromStream(cell, reader));

            case ElementTypesEnum.Sound:
                return(DlmSoundElement.ReadFromStream(cell, reader));

            default:
                throw new Exception("Unknown element ID : " + type + " CellID : " + cell.Id);
            }
        }
예제 #6
0
        public static DlmCell ReadFromStream(DlmLayer layer, IDataReader reader)
        {
            var cell = new DlmCell(layer);

            cell.Id = reader.ReadShort();
            cell.Elements = new DlmBasicElement[reader.ReadShort()];

            for (int i = 0; i < cell.Elements.Length; i++)
            {
                DlmBasicElement element =
                    DlmBasicElement.ReadFromStream(cell, reader);
                cell.Elements[i] = element;
            }

            return cell;
        }
예제 #7
0
        public static DlmBasicElement ReadFromStream(DlmCell cell, IDataReader reader)
        {
            var type = reader.ReadByte();

            switch ((ElementTypesEnum) type)
            {
                case ElementTypesEnum.Graphical:
                    return DlmGraphicalElement.ReadFromStream(cell, reader);

                case ElementTypesEnum.Sound:
                    return DlmSoundElement.ReadFromStream(cell, reader);

                default:
                    throw new Exception("Unknown element ID : " + type + " CellID : " + cell.Id);
            }
        }
 public DlmGraphicalElement(DlmCell cell)
     : base(cell)
 {
 }
        public static new DlmGraphicalElement ReadFromStream(DlmCell cell, BigEndianReader reader)
        {
            var element = new DlmGraphicalElement(cell);

            element.m_elementId = reader.ReadUInt();
            element.m_hue = new ColorMultiplicator(reader.ReadByte(), reader.ReadByte(), reader.ReadByte(), false);
            element.m_shadow = new ColorMultiplicator(reader.ReadByte(), reader.ReadByte(), reader.ReadByte(), false);

            if (cell.Layer.Map.Version <= 4)
            {
                element.m_offset.X = reader.ReadByte();
                element.m_offset.Y = reader.ReadByte();
                element.m_pixelOffset.X = (int) (element.m_offset.X * CELL_HALF_WIDTH);
                element.m_pixelOffset.Y = (int) (element.m_offset.Y * CELL_HALF_HEIGHT);
            }
            else
            {
                element.m_pixelOffset.X = reader.ReadShort();
                element.m_pixelOffset.Y = reader.ReadShort();
                element.m_offset.X = (int)( element.m_pixelOffset.X / CELL_HALF_WIDTH );
                element.m_offset.Y = (int)( element.m_pixelOffset.Y / CELL_HALF_HEIGHT );
            }

            element.m_altitude = reader.ReadByte();
            element.m_identifier = reader.ReadUInt();

            element.CalculateFinalTeint();

            return element;
        }
예제 #10
0
 protected DlmBasicElement(DlmCell cell)
 {
     Cell = cell;
 }
예제 #11
0
        public static new DlmSoundElement ReadFromStream(DlmCell cell, IDataReader reader)
        {
            var element = new DlmSoundElement(cell);

            element.m_soundId = reader.ReadInt();
            element.m_baseVolume = reader.ReadShort();
            element.m_fullVolumedistance = reader.ReadInt();
            element.m_nullVolumedistance = reader.ReadInt();
            element.m_minDelayBetweenloops = reader.ReadShort();
            element.m_maxDelayBetweenloops = reader.ReadShort();

            return element;
        }
예제 #12
0
 public DlmSoundElement(DlmCell cell)
     : base(cell)
 {
 }
예제 #13
0
 public DlmSoundElement(DlmCell cell)
     : base(cell)
 {
 }
 public DlmGraphicalElement(DlmCell cell)
     : base(cell)
 {
 }
예제 #15
0
 protected DlmBasicElement(DlmCell cell)
 {
     Cell = cell;
 }