-
Notifications
You must be signed in to change notification settings - Fork 28
Expand file tree
/
Copy pathFile.cs
More file actions
122 lines (99 loc) · 2.57 KB
/
File.cs
File metadata and controls
122 lines (99 loc) · 2.57 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using UnityEngine;
namespace kOS
{
public class File : List<String>
{
public String Filename;
public File(File copy)
{
Filename = copy.Filename;
foreach (String line in copy)
{
Add(line);
}
}
public File(String filename)
{
this.Filename = filename;
}
public File(ConfigNode fileNode)
{
Load(fileNode);
}
public File Copy()
{
File retFile = new File(Filename);
foreach (String line in this)
{
retFile.Add(line);
}
return retFile;
}
public int GetSize()
{
int finalSize = 0;
foreach (String line in this)
{
finalSize += line.Length;
}
return finalSize;
}
public ConfigNode Save(string nodeName)
{
ConfigNode node = new ConfigNode(nodeName);
node.AddValue("filename", Filename);
foreach (String s in this)
{
node.AddValue("line", EncodeLine(s));
}
return node;
}
internal void Load(ConfigNode fileNode)
{
Filename = fileNode.GetValue("filename");
foreach (String s in fileNode.GetValues("line"))
{
Add(DecodeLine(s));
}
}
public static String EncodeLine(String input)
{
return input.Replace("{", "{").Replace("}", "}").Replace(" ", " "); // Stops universe from imploding
}
public static String DecodeLine(String input)
{
return input.Replace("{", "{").Replace("}", "}").Replace(" ", " ");
}
public string Serialize()
{
string output = "";
foreach (String s in this)
{
output += s + "\n";
}
return output;
}
public void Deserialize(String input)
{
this.Clear();
foreach (String s in input.Split('\n'))
{
Add(s);
}
}
}
public struct FileInfo
{
public string Name;
public int Size;
public FileInfo(string Name, int Size)
{
this.Name = Name;
this.Size = Size;
}
}
}