Example #1
0
        public void ExtractFile(String FileSource, String FileTarget)
        {
            FileStream FileISO = File.Open(FileName, FileMode.Open, FileAccess.Read);

            try
            {
                CDReader     ReaderISO     = new CDReader(FileISO, true);
                SparseStream _SourceStream = ReaderISO.OpenFile(FileSource, FileMode.Open, FileAccess.Read);
                Byte[]       _ReadAllByte  = new Byte[_SourceStream.Length];
                _SourceStream.Read(_ReadAllByte, 0, _ReadAllByte.Length);
                _SourceStream.Close();

                FileStream _FileCreated = new FileStream(FileTarget, FileMode.CreateNew);
                _FileCreated.Position = 0;
                _FileCreated.Write(_ReadAllByte, 0, _ReadAllByte.Length);
                _FileCreated.Close();
            }
            catch (IOException ex)
            {
                if (ex.Message != "No such file")
                {
                    Console.WriteLine("-----------------------------------------------------");
                    Console.WriteLine("ExtractFile(" + FileSource + ", " + FileTarget + ")");
                    Console.WriteLine(ex.Message);
                    Console.WriteLine("-----------------------------------------------------");
                }
                else
                {
                    Console.WriteLine("ExtractFile(" + FileSource + ") --> " + Path.GetFileName(FileName));
                }
            }
            FileISO.Close();
        }
        public override void Close()
        {
            using (new NtfsTransaction())
            {
                base.Close();
                _baseStream.Close();

                UpdateMetadata();
            }
        }
Example #3
0
 private void NewToolStripMenuItem_Click(object sender, EventArgs e)
 {
     if (fileLoaded)
     {
         string       fname = Interaction.InputBox("Enter file name.", "Dreamcaster", "file.lua");
         LuaFile      file  = new LuaFile(fname, "-- " + fname);
         SparseStream strm  = fs.OpenFile(fname, FileMode.Create);
         byte[]       data  = Encoding.ASCII.GetBytes(file.data);
         strm.Write(data, 0, data.Length);
         strm.Close();
         UpdateListbox();
     }
 }
Example #4
0
 private void SaveToolStripMenuItem_Click(object sender, EventArgs e)
 {
     if (fileLoaded)
     {
         LuaFile file = m_luaFiles.SelectedItem as LuaFile;
         Console.WriteLine("Saving " + file.name);
         SparseStream strm = fs.OpenFile(file.name, FileMode.Create, FileAccess.Write);
         byte[]       data = Encoding.ASCII.GetBytes(file.data);
         strm.Write(data, 0, data.Length);
         strm.Close();
         Console.WriteLine("Saved");
         UpdateListbox();
     }
 }
Example #5
0
        public override void Close()
        {
            if (_baseStream == null)
            {
                return;
            }

            using (new NtfsTransaction())
            {
                base.Close();
                _baseStream.Close();

                UpdateMetadata();

                _baseStream = null;
            }
        }
Example #6
0
 private void CompileToolStripMenuItem_Click(object sender, EventArgs e)
 {
     if (fileLoaded)
     {
         UpdateListbox();
         fs.DeleteDirectory("lua", true);
         fs.CreateDirectory("lua");
         foreach (LuaFile file in lfiles)
         {
             Console.WriteLine("Writing " + file.name);
             SparseStream stream = fs.OpenFile(file.name, FileMode.Create);
             stream.Write(Encoding.ASCII.GetBytes(file.data), 0, file.data.Length);
             stream.Close();
             Console.WriteLine("Wrote");
         }
         MessageBox.Show("Finished saving.", "Dreamcaster");
     }
 }
Example #7
0
 public static void ReadIsoFolder(DiscFileSystem cdReader, string sIsoPath, string sDestinationRootPath)
 {
     try
     {
         string[] saFiles = cdReader.GetFiles(sIsoPath);
         foreach (string sFile in saFiles)
         {
             DiscFileInfo dfiIso = cdReader.GetFileInfo(sFile);
             string sDestinationPath = Path.Combine(sDestinationRootPath, dfiIso.DirectoryName.Substring(0, dfiIso.DirectoryName.Length - 1));
             if (!Directory.Exists(sDestinationPath))
             {
                 Directory.CreateDirectory(sDestinationPath);
             }
             string sDestinationFile = Path.Combine(sDestinationPath, dfiIso.Name);
             SparseStream streamIsoFile = cdReader.OpenFile(sFile, FileMode.Open);
             FileStream fsDest = new FileStream(sDestinationFile, FileMode.Create);
             byte[] baData = new byte[0x4000];
             while (true)
             {
                 int nReadCount = streamIsoFile.Read(baData, 0, baData.Length);
                 if (nReadCount < 1)
                 {
                     break;
                 }
                 else
                 {
                     fsDest.Write(baData, 0, nReadCount);
                 }
             }
             streamIsoFile.Close();
             fsDest.Close();
         }
         string[] saDirectories = cdReader.GetDirectories(sIsoPath);
         foreach (string sDirectory in saDirectories)
         {
             ReadIsoFolder(cdReader, sDirectory, sDestinationRootPath);
         }
         return;
     }
     catch (Exception ex)
     {
         MessageBox.Show(ex.ToString());
     }
 }
Example #8
0
 private void CopyDirectoriesAndFiles(FatFileSystem ffs, string parentDirectory)
 {
     foreach (var file in Directory.GetFiles(parentDirectory))
     {
         SparseStream ss    = ffs.OpenFile(file.Replace(InputRootDirectory, ""), FileMode.CreateNew);
         FileStream   fs    = new FileStream(file, FileMode.Open);
         byte[]       bytes = new byte[fs.Length];
         fs.Read(bytes, 0, (int)fs.Length);
         ss.Write(bytes, 0, (int)fs.Length);
         ss.Flush();
         ss.Close();
         ffs.SetAttributes(file.Replace(InputRootDirectory, ""), FileAttributes.Normal);
     }
     foreach (var directory in Directory.GetDirectories(parentDirectory))
     {
         ffs.CreateDirectory(directory.Replace(InputRootDirectory, ""));
         CopyDirectoriesAndFiles(ffs, directory);
     }
 }
Example #9
0
 private void UpdateListbox()
 {
     Console.WriteLine("Updating listbox");
     if (fileLoaded)
     {
         lfiles.Clear();
         foreach (string i in fs.GetFiles("lua"))
         {
             Console.WriteLine("Adding " + i);
             SparseStream strm = fs.OpenFile(i, FileMode.Open);
             byte[]       data = new byte[strm.Length];
             strm.Read(data, 0, data.Length);
             strm.Close();
             string  sdata   = Encoding.ASCII.GetString(data);
             LuaFile newfile = new LuaFile(i, sdata);
             lfiles.Add(newfile);
         }
         m_luaFiles.Items.Clear();
         foreach (LuaFile file in lfiles)
         {
             m_luaFiles.Items.Add(file);
         }
     }
 }
Example #10
0
        public Byte[] ReadAllByte(String FileSource)
        {
            Byte[]     result  = { 0x0 };
            FileStream FileISO = File.Open(FileName, FileMode.Open, FileAccess.Read);

            try
            {
                CDReader     ReaderISO     = new CDReader(FileISO, true);
                SparseStream _SourceStream = ReaderISO.OpenFile(FileSource, FileMode.Open, FileAccess.Read);
                Byte[]       _ReadAllByte  = new Byte[_SourceStream.Length];
                _SourceStream.Read(_ReadAllByte, 0, _ReadAllByte.Length);
                result = _ReadAllByte;
                _SourceStream.Close();
            }
            catch (Exception ex)
            {
                Console.WriteLine("-----------------------------------------------------");
                Console.WriteLine("ReadAllByte(" + FileSource + ")");
                Console.WriteLine(ex.Message);
                Console.WriteLine("-----------------------------------------------------");
            }
            FileISO.Close();
            return(result);
        }
Example #11
0
 public override void Close()
 {
     base.Close();
     _wrapped.Close();
 }
Example #12
0
        private void NewToolStripMenuItem1_Click(object sender, EventArgs e)
        {
            Console.WriteLine("Creating new project");
            fileLoaded = true;
            string     flasize = Interaction.InputBox("Enter lua & asset size in megabytes.", "Dreamcaster", "30");
            long       asSize  = int.Parse(flasize) * 1024 * 1024;
            string     fmdsize = Interaction.InputBox("Enter meta size in megabytes.", "Dreamcaster", "5");
            long       mdSize  = int.Parse(fmdsize) * 1024 * 1024;
            string     fname   = Interaction.InputBox("Enter project name.", "Dreamcaster", "project.bin");
            FileStream fst     = File.Create(fname);

            Console.WriteLine("Asset Dat Size: " + asSize);
            Console.WriteLine("Media Dat Size: " + mdSize);
            Console.WriteLine("Total Dat Size: " + (asSize + mdSize));
            disk = Disk.Initialize(fst, Ownership.None, asSize + mdSize);
            BiosPartitionTable table = BiosPartitionTable.Initialize(disk);

            table.Create(asSize, WellKnownPartitionType.WindowsFat, false); // main assets
            table.Create(mdSize, WellKnownPartitionType.WindowsFat, false); // meta
            fs  = FatFileSystem.FormatPartition(disk, 0, "DHP1-LA");        // lua and assets
            mfs = FatFileSystem.FormatPartition(disk, 1, "DHP1-MD");        // metadata
            fs.CreateDirectory("lua");
            mfs.CreateDirectory("mdlg");
            mfs.CreateDirectory("gpst");
            mfs.CreateDirectory(@"gpst\readonly");
            SparseStream mstream    = mfs.OpenFile(@"mdlg\licn.mdt", FileMode.OpenOrCreate);
            SparseStream stream     = fs.OpenFile(@"lua\main.lua", FileMode.Create);
            string       defaultstr = @"local key = '' -- this is the key that people will use to enter your Server
-- if the key specified here is not the same as the key people use to join(e.g.the key is bivkoi and the user is joining with a key of "")
-- then the connection will be denied, and if the key is blank and someone joins with a key the connection will be denied aswell.
-- you can manually change how it accepts requests by changing the function peerhandle
local game = DataModel:C('Factories'):C('GameLibrary')
local characterfactory = DataModel:C('Factories'):C('CharacterFactory')
local math = game.math
local random = game:GenerateRandom(game:FindEntropy())
resolution = { 433, 426}

function peerhandle(request)
    request:AcceptIfKey(key)
end

function peerdisconnect(peer, info, player)
    player:Destroy()
end

function peerconnect(peer, player)
    game:Debug('New Connection')
    player = characterfactory:NewPlayer('newpeer', peer)
    char = player:GetChar()
    char:Fill(0, 0, 0)
    player:SetGameTitle('Dreamscape')
    char:AddBrush(0, 0, 0)-- brush 0 black
    char:AddBrush(255, 0, 0)-- brush 1 red
    char:AddBrush(0, 255, 0)-- brush 2 green
    char:AddBrush(0, 0, 255)-- brush 3 blue
    char:AddBrush(255, 0, 255)-- brush 4 red + blue
    char:AddBrush(255, 255, 0)-- brush 5 red + green
    char:AddBrush(0, 255, 255)-- brush 6 green + blue
    char:AddBrush(255, 255, 255)-- brush 7 white
    char:AddBrush(127, 127, 127)-- brush 8 gray
end

function act(action, peer, player)

end

function getinfo()
    return '<head><style>body { font-family: arial; }</style></head><body><h1>Generic Dreamscape Server</h1></body>'
end";

            byte[] defautlbyt = Encoding.ASCII.GetBytes(defaultstr);
            stream.Write(defautlbyt, 0, defautlbyt.Length);
            defaultstr = m_file.Text;
            defautlbyt = Encoding.ASCII.GetBytes(defaultstr);
            mstream.Write(defautlbyt, 0, defautlbyt.Length);
            stream.Close();
            mstream.Close();
            UpdateListbox();
            Text = "Dreamcaster -- " + fname;
            Console.WriteLine("Done");
        }
Example #13
0
        void MainC(string[] args)
        {
            Disk           disk       = new Disk("server.bin");
            PartitionTable partitions = disk.Partitions;
            PartitionInfo  fs_pi      = partitions[0];
            FatFileSystem  fs         = new FatFileSystem(fs_pi.Open());
            PartitionInfo  mfs_pi     = partitions[1];
            FatFileSystem  mfs        = new FatFileSystem(mfs_pi.Open());

            svtime = DateTime.Now.Ticks;
            Console.WriteLine("Starting...");
            netListener  = new EventBasedNetListener();
            client       = new NetManager(netListener, new XorEncryptLayer("dreamscape"));
            inetListener = new EventBasedNetListener();
            iclient      = new NetManager(inetListener);
            lua          = new Lua();
            gameInstance = new Instance("DataModel");
            Factory factoryContainer = new Factory("Factories");

            factoryContainer.Parent = gameInstance;
            CharacterFactory characterFactory = new CharacterFactory("CharacterFactory");

            characterFactory.Parent = factoryContainer;
            GameLibrary gameLibrary = new GameLibrary("GameLibrary");

            gameLibrary.Parent = factoryContainer;

            lua.LoadCLRPackage();
            lua.DebugHook += Lua_DebugHook;
            SparseStream stream = fs.OpenFile("lua\\main.lua", FileMode.Open, FileAccess.Read);

            byte[] data = new byte[stream.Length];
            stream.Read(data, 0, data.Length);
            string code = Encoding.ASCII.GetString(data);

            stream.Close();
            lua["netwriter"] = new NetDataWriter();
            lua["netserver"] = client;
            lua["DataModel"] = gameInstance;
            lua.DoString("import('dreamhost','dreamscape','System','NLua','LiteNetLib','LiteNetLib.Utils','dreamhost.lua')\n" + code, svtime.ToString());

            this.characterFactory = characterFactory;
            client.Start(6698);
            Console.WriteLine("Server ready! Hosting on UDP port 6698.");
            client.AutoRecycle = true;
            netListener.ConnectionRequestEvent += (request) =>
            {
                Console.WriteLine("Connection");
                LuaFunction func = lua["peerhandle"] as LuaFunction;
                try
                {
                    func.Call(request);
                } catch (Exception e)
                {
                    request.Accept();
                    Console.WriteLine(e);
                }
            };
            netListener.PeerDisconnectedEvent += (peer, info) =>
            {
                Player plr = null;
                foreach (Player i in characterFactory.Children)
                {
                    if (i.peer == peer)
                    {
                        plr = i;
                    }
                }
                Console.WriteLine("Disconnect");
                LuaFunction func = lua["peerdisconnect"] as LuaFunction;
                try
                {
                    func.Call(peer, info, plr);
                } catch (Exception e)
                {
                    Console.WriteLine(e);
                }
            };
            netListener.PeerConnectedEvent += (peer) =>
            {
                Player player = new Player(gameLibrary.FindEntropy().ToString(), peer);
                player.Parent = characterFactory;
                Console.WriteLine("Successful Connect");
                LuaFunction func = lua["peerconnect"] as LuaFunction;
                try
                {
                    func.Call(peer, player);
                } catch (Exception e)
                {
                    Console.WriteLine(e);
                }
            };
            netListener.NetworkReceiveEvent += NetworkReceive;
            Console.WriteLine("Starting info server...");
            inetListener.PeerConnectedEvent += (peer) =>
            {
                Console.WriteLine("Sending peer info");
                NetDataWriter writer = new NetDataWriter();
                LuaFunction   func   = lua["getinfo"] as LuaFunction;
                try
                {
                    writer.Put(func.Call(peer).First() as string);
                }
                catch (Exception e)
                {
                    Console.WriteLine(e);
                    writer.Put("Please contact the <b>SYSOP</b> for this server.\n" + e);
                }
                peer.Send(writer, DeliveryMethod.ReliableSequenced);
            };
            inetListener.ConnectionRequestEvent += (request) =>
            {
                Console.WriteLine("Connected to info");
                request.Accept();
            };
            iclient.Start(6699);
            iclient.AutoRecycle = true;
            Console.WriteLine("Info server ready! Hosting on UDP port 6699.");
            while (true)
            {
                client.PollEvents();
                Thread.Sleep(15);
            }
        }