From 58018d3c67edc422465945130fde21245ca19be2 Mon Sep 17 00:00:00 2001 From: morkt Date: Fri, 12 Sep 2014 15:58:18 +0400 Subject: [PATCH] (ArcStream): added constructors from ArcView.Frame --- GameRes/ArcView.cs | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/GameRes/ArcView.cs b/GameRes/ArcView.cs index b9a285da..933920f6 100644 --- a/GameRes/ArcView.cs +++ b/GameRes/ArcView.cs @@ -392,8 +392,8 @@ namespace GameRes private uint m_size; private long m_position; - public override bool CanRead { get { return true; } } - public override bool CanSeek { get { return true; } } + public override bool CanRead { get { return !disposed; } } + public override bool CanSeek { get { return !disposed; } } public override bool CanWrite { get { return false; } } public override long Length { get { return m_size; } } public override long Position @@ -410,14 +410,27 @@ namespace GameRes m_position = 0; } - public ArcStream (ArcView file, long offset, uint size) + public ArcStream (Frame view) { - m_view = new Frame (file, offset, size); + m_view = view; m_start = m_view.Offset; m_size = m_view.Reserved; m_position = 0; } + public ArcStream (ArcView file, long offset, uint size) + : this (new Frame (file, offset, size)) + { + } + + public ArcStream (Frame view, long offset, uint size) + { + m_view = view; + m_start = offset; + m_size = Math.Min (size, m_view.Reserve (offset, size)); + m_position = 0; + } + /// /// Read stream signature (first 4 bytes) without altering current read position. ///