Subversion Repositories AndroidProjects

Rev

Rev 1607 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
1607 chris 1
using System;
2
using System.Collections.Generic;
3
using System.Linq;
4
using System.Text;
5
using System.Threading.Tasks;
6
using System.IO;
7
 
8
using BauzoidNET.math;
9
 
10
using EndianHandling;
11
 
12
namespace BurutaruEditor.file
13
{
14
    public class BinarySerializer : Serializer
15
    {
16
        //======================================================================================================================================================
17
 
18
        private FileStream mFileStream = null;
19
        private EndianBinaryWriter mWriter = null;
20
        private EndianBinaryReader mReader = null;
21
 
22
        //======================================================================================================================================================
23
 
24
        public BinarySerializer(string filename, OpenMode mode)
25
            : base(filename, mode)
26
        {
27
            if (isOpenForReading())
28
            {
29
                mFileStream = File.OpenRead(filename);
30
                mReader = new EndianBinaryReader(mFileStream, Encoding.ASCII, true);
31
            }
32
            else if (isOpenForWriting())
33
            {
34
                mFileStream = File.OpenWrite(filename);
35
                mWriter = new EndianBinaryWriter(mFileStream, Encoding.ASCII, true);
36
            }
37
        }
38
 
39
        public override void Close()
40
        {
41
            mReader = null;
42
            mWriter = null;
43
            mFileStream.Close();
44
        }
45
 
46
        //======================================================================================================================================================
47
 
48
        public override void Write(string str)
49
        {
50
            byte[] bytes = Encoding.ASCII.GetBytes(str);
51
            mWriter.Write(bytes.Length);
52
            mWriter.Write(bytes);
53
        }
54
 
55
        public override void Write(float number)
56
        {
57
            mWriter.Write(number);
58
        }
59
 
60
        public override void Write(int number)
61
        {
62
            mWriter.Write(number);
63
        }
64
 
65
        public override void Write(Vector2 v)
66
        {
67
            mWriter.Write(v.x);
68
            mWriter.Write(v.y);
69
        }
70
 
1674 chris 71
        public override void Write(Vector3 v)
72
        {
73
            mWriter.Write(v.x);
74
            mWriter.Write(v.y);
75
            mWriter.Write(v.z);
76
        }
77
 
78
        public override void Write(Vector4 v)
79
        {
80
            mWriter.Write(v.x);
81
            mWriter.Write(v.y);
82
            mWriter.Write(v.z);
83
            mWriter.Write(v.w);
84
        }
85
 
1607 chris 86
        public override void Write(bool v)
87
        {
88
            Write(v ? 1 : 0);            
89
        }
90
 
91
        public override string ReadString()
92
        {
93
            int count;
94
            string data;
95
            mReader.ReadInt32(out count);
96
            mReader.ReadString(count, out data);
97
            return data;
98
        }
99
 
100
        public override float ReadFloat()
101
        {
102
            float result;
103
            mReader.ReadSingle(out result);
104
            return result;
105
        }
106
 
107
        public override int ReadInt()
108
        {
109
            int result;
110
            mReader.ReadInt32(out result);
111
            return result;
112
        }
113
 
114
        public override Vector2 ReadVector2()
115
        {
116
            float x = ReadFloat();
117
            float y = ReadFloat();
118
            return new Vector2(x, y);
119
        }
120
 
121
        public override bool ReadBool()
122
        {
123
            int n = ReadInt();
124
            return (n != 0);
125
        }
126
 
127
        //======================================================================================================================================================
128
 
129
    }
130
}