private void MainForm_Shown(object sender, EventArgs e) { InitServersView(); RefreshServers(); LoadV2ray(); //自动从网络同步本地时间 if (config.autoSyncTime) { CDateTime.SetLocalTime(); } ChangePACButtonStatus(config.listenerType); }
protected void grvData_HtmlDataCellPrepared(object sender, ASPxGridViewTableDataCellEventArgs e) { if (e.CellValue != null) { string toolTip = Environment.NewLine + "Mô tả: " + grvData.GetRowValues(e.VisibleIndex, "Description").ToString() + Environment.NewLine + Environment.NewLine + "Mật khẩu: " + grvData.GetRowValues(e.VisibleIndex, "ContestPassword").ToString() + Environment.NewLine + Environment.NewLine + "Sửa gần nhất: " + DateTime.Parse(grvData.GetRowValues(e.VisibleIndex, "ModifiedOn").ToString()).ToString("dd/MM/yyyy") + Environment.NewLine + Environment.NewLine + "Tạo bởi: " + grvData.GetRowValues(e.VisibleIndex, "FullName").ToString() + Environment.NewLine; //+ e.CellValue.ToString(); if (grvData.GetRowValues(e.VisibleIndex, "StartTime") != null) { try { toolTip += "Bắt đầu: " + DateTime.Parse(grvData.GetRowValues(e.VisibleIndex, "StartTime").ToString()).ToString("HH:mm, dd/MM/yyyy") + Environment.NewLine + Environment.NewLine; } catch (Exception) { } } if (grvData.GetRowValues(e.VisibleIndex, "EndTime") != null) { try { toolTip += "Kết thúc: " + DateTime.Parse(grvData.GetRowValues(e.VisibleIndex, "EndTime").ToString()).ToString("HH:mm, dd/MM/yyyy") + Environment.NewLine + Environment.NewLine; } catch (Exception) { } } if (e.DataColumn.FieldName == "StartTime" || e.DataColumn.FieldName == "EndTime") { try { DateTime dt = DateTime.Parse(e.CellValue.ToString()); e.Cell.Text = CDateTime.getTimeNoti(dt); } catch { } } e.Cell.ToolTip = toolTip; } }
internal static OpenEhr.AM.Archetype.ConstraintModel.Primitive.CPrimitive CPrimitive(string typeName) { DesignByContract.Check.Require(!string.IsNullOrEmpty(typeName), string.Format(CommonStrings.XMustNotBeNullOrEmpty, "typeName")); OpenEhr.AM.Archetype.ConstraintModel.Primitive.CPrimitive cPrimitive = null; switch (typeName) { case "C_BOOLEAN": cPrimitive = new CBoolean(); break; case "C_DATE": cPrimitive = new CDate(); break; case "C_DATE_TIME": cPrimitive = new CDateTime(); break; case "C_DURATION": cPrimitive = new CDuration(); break; case "C_TIME": cPrimitive = new CTime(); break; case "C_INTEGER": cPrimitive = new CInteger(); break; case "C_REAL": cPrimitive = new CReal(); break; case "C_STRING": cPrimitive = new CString(); break; default: throw new NotSupportedException("type not supported: " + typeName); } DesignByContract.Check.Ensure(cPrimitive != null, "cObject must not be null."); return(cPrimitive); }
private static CDateTime Map(this C_DATE_TIME model) { var primitive = new CDateTime { AssumedValue = new DateTime { Value = model.assumed_value }, Pattern = model.pattern }; if (model.range != null) { primitive.Range = model.range.Map(); } return(primitive); }
public FrmOpt10060Caller() { InitializeComponent(); Func <DataTable> funcGetStockData = () => { RichQuery oRichQuery = new RichQuery(); return(oRichQuery.p_ScodeQuery("1", "", "", false).Tables[0].Copy()); }; _dtStockCode = funcGetStockData(); foreach (DataRow dr in _dtStockCode.Rows) { _StockQueue.Enqueue(dr["STOCK_CODE"].ToString()); } proBar10060.Maximum = _dtStockCode.Rows.Count; if (System.DateTime.Now.DayOfWeek == DayOfWeek.Saturday) { _stdDate = DateTime.Today.AddDays(-1).ToString("yyyyMMdd"); } else if (System.DateTime.Now.DayOfWeek == DayOfWeek.Sunday) { _stdDate = DateTime.Today.AddDays(-2).ToString("yyyyMMdd"); } else { int i = Int32.Parse(System.DateTime.Now.ToString("HH") + System.DateTime.Now.ToString("ss")); if (i > 1600) { _stdDate = CDateTime.FormatDate(System.DateTime.Now.Date.ToShortDateString()); } else if (System.DateTime.Now.DayOfWeek == DayOfWeek.Monday) { _stdDate = DateTime.Today.AddDays(-3).ToString("yyyyMMdd"); } else { _stdDate = DateTime.Today.AddDays(-1).ToString("yyyyMMdd"); } } }
protected void grvData_HtmlDataCellPrepared(object sender, ASPxGridViewTableDataCellEventArgs e) { // if (e.DataColumn.FieldName == "Date") if (e.CellValue != null) { string toolTip = Environment.NewLine + "Người gửi: " + grvData.GetRowValues(e.VisibleIndex, "NameCreatedBy").ToString() + Environment.NewLine + Environment.NewLine + "Nội dung: " + grvData.GetRowValues(e.VisibleIndex, "Content").ToString() + Environment.NewLine + Environment.NewLine + "Ngày giờ: " + DateTime.Parse(grvData.GetRowValues(e.VisibleIndex, "Date").ToString()).ToString("HH:mm, dd/MM/yyyy") + Environment.NewLine + Environment.NewLine; e.Cell.ToolTip = toolTip; } if (e.DataColumn.FieldName == "Date") { if (e.CellValue != null) { e.Cell.Text = CDateTime.getTimeNoti(DateTime.Parse(e.CellValue.ToString())); } } }
/// <summary> /// Read the whole file /// </summary> public void ReadAll() { BaseStream.Seek(0, SeekOrigin.Begin); if (ReadUInt32() != Magic) { throw new InvalidCR2WFileException("Not a CR2W file - Missing 'CR2W' magic header."); } var version = ReadUInt32(); if (!(version == 162 || version == 163)) { throw new InvalidCR2WFileException($"This reader only supports CR2W versions 162 and 163. File version was read as {version}."); } //Base data. Flags = ReadUInt32(); TimeStamp = ReadCDateTime(); BuildVersion = ReadUInt32(); CR2WSize = ReadUInt32(); BufferSize = ReadUInt32(); CRC32 = ReadUInt32(); NumChunks = ReadUInt32(); //Headers. ReadTableHeaders(); //Tables. ReadStrings(); ReadNames(); ReadResources(); ReadObjects(); ReadBuffers(); ReadEmbedded(); }
public void Read(BinaryReader file) { m_stream = file.BaseStream; #region Read Headers // read file header var id = ReadStruct <uint>(); if (id != MAGIC) { throw new FormatException($"Not a CR2W file, Magic read as 0x{id:X8}"); } m_fileheader = ReadStruct <CR2WFileHeader>(); if (m_fileheader.version > 163 || m_fileheader.version < 159) { throw new FormatException($"Unknown Version {m_fileheader.version}. Supported versions: 159 - 163."); } var dt = new CDateTime(m_fileheader.timeStamp); m_tableheaders = ReadStructs <CR2WTable>(10); // read strings m_strings = ReadStringsBuffer(); // read tables names = ReadTable <CR2WName>(1).Select(_ => new CR2WNameWrapper(_) { Str = m_dictionary[_.value], }).ToList(); imports = ReadTable <CR2WImport>(2).Select(_ => new CR2WImportWrapper(_) { DepotPathStr = m_dictionary[_.depotPath], ClassNameStr = names[_.className].Str, }).ToList(); properties = ReadTable <CR2WProperty>(3).Select(_ => new CR2WPropertyWrapper(_)).ToList(); chunks = ReadTable <CR2WExport>(4).Select(_ => new CR2WExportWrapper(this, _) { //ParentChunkId = _.parentID }).ToList(); buffers = ReadTable <CR2WBuffer>(5).Select(_ => new CR2WBufferWrapper(_)).ToList(); embedded = ReadTable <CR2WEmbedded>(6).Select(_ => new CR2WEmbeddedWrapper(_) { ParentImports = imports, Handle = m_dictionary[_.path], }).ToList(); #endregion #region Read Data // Read object data //block 5 foreach (var chunk in chunks) { chunk.ReadData(file); } // Read buffer data //block 6 foreach (var buffer in buffers) { //buffer.ReadData(file); } // Read embedded files //block 7 foreach (var emb in embedded) { emb.ReadData(file); } #endregion //this never actually triggers /*#region Read Buffer * file.BaseStream.Seek(m_fileheader.fileSize, SeekOrigin.Begin); * m_hasInternalBuffer = m_fileheader.bufferSize > m_fileheader.fileSize; * byte[] bufferdata; * var actualbuffersize = (int)(m_fileheader.bufferSize - m_fileheader.fileSize); * if (actualbuffersize > 0) * { * bufferdata = new byte[actualbuffersize]; * file.BaseStream.Read(bufferdata, 0, actualbuffersize); * } #endregion*/ m_stream = null; }
/// <summary>Создание объекта</summary> /// <param name="x_sLastName">фамилия родственника</param> /// <param name="x_sFirstName">имя родственника</param> /// <param name="x_sMiddleName">отчество родственника</param> public CPerson(string x_sLastName, string x_sFirstName, string x_sMiddleName, CDateTime x_dtBirthDate) : base(true) { LastName = x_sLastName; FirstName = x_sFirstName; MiddleName = x_sMiddleName; BirthDate = x_dtBirthDate; }
public void IsValidValueThrowsException() { var instance = new CDateTime(); instance.IsValidValue(null); }
/// <summary> /// /// </summary> /// <param name="dt">작업할 종목들</param> /// <param name="stdDate">기준일로부터 최근 3개월</param> public FrmOptDayJobCaller(DataTable dt, String stdDate) { InitializeComponent(); _stdDate = stdDate; _clsDataAccessUtil = new ClsDataAccessUtil(); ClsAxKH.AxKH_10015_OnReceived += new ClsAxKH.OnReceivedEventHandler(Opt10015_OnReceived); ClsAxKH.AxKH_10081_OnReceived += new ClsAxKH.OnReceivedEventHandler(Opt10081_OnReceived); if (dt == null) { Func <DataTable> funcGetStockData = () => { RichQuery oRichQuery = new RichQuery(); return(oRichQuery.p_ScodeQuery("1", "", "", false).Tables[0].Copy()); }; _dtStockCode = funcGetStockData(); } else { Func <DataTable> funcGetStockData = () => { RichQuery oRichQuery = new RichQuery(); return(oRichQuery.p_ScodeQuery("1", "", "", false).Tables[0].Copy()); }; _dtStockCode = dt.Copy(); dt = null; } foreach (DataRow dr in _dtStockCode.Rows) { if (ClsAxKH.GetMasterCodeName(dr["STOCK_CODE"].ToString().Trim()) == "") { continue; } _StockQueue.Enqueue(dr["STOCK_CODE"].ToString()); } proBar10015.Maximum = _dtStockCode.Rows.Count; proBar10060.Maximum = _dtStockCode.Rows.Count; proBar10081.Maximum = _dtStockCode.Rows.Count; if (_stdDate == "") { if (System.DateTime.Now.DayOfWeek == DayOfWeek.Saturday) { _stdDate = DateTime.Today.AddDays(-1).ToString("yyyyMMdd"); } else if (System.DateTime.Now.DayOfWeek == DayOfWeek.Sunday) { _stdDate = DateTime.Today.AddDays(-2).ToString("yyyyMMdd"); } else { int i = Int32.Parse(System.DateTime.Now.ToString("HH") + System.DateTime.Now.ToString("ss")); if (i > 1600) { _stdDate = CDateTime.FormatDate(System.DateTime.Now.Date.ToShortDateString()); } else if (System.DateTime.Now.DayOfWeek == DayOfWeek.Monday) { _stdDate = DateTime.Today.AddDays(-3).ToString("yyyyMMdd"); } else { _stdDate = DateTime.Today.AddDays(-1).ToString("yyyyMMdd"); } } } string reDate = ""; ClsUtil clsUtil = new ClsUtil(); reDate = clsUtil.Mid(_stdDate, 1, 4) + "-" + clsUtil.Mid(_stdDate, 5, 2) + clsUtil.Mid(_stdDate, 7, 2); DateTime dtDate = Convert.ToDateTime(reDate); _minDate = dtDate.AddDays(Convert.ToInt32(DayOfWeek.Monday) - Convert.ToInt32(dtDate.DayOfWeek)).ToString("yyyyMMdd"); proBar10015.Value = _StockQueue.Count; proBar10081.Value = _StockQueue.Count; proBar10060.Value = _StockQueue.Count; OnGetStockCode(); BtnStart.Text = "작업 중"; }
void ParseVariale(string type, int size, string offset) { var arr = type.Split(new char[] { ':' }, 2); switch (arr[0]) { case "Uint8": { Writer.WriteLine(" {0}", ReadByte()); } return; case "Uint16": { Writer.WriteLine(" {0}", ReadUInt16()); } return; case "Uint32": { Writer.WriteLine(" {0}", ReadUInt32()); } return; case "Uint64": { Writer.WriteLine(" {0}", ReadUInt64()); } return; case "Int8": { Writer.WriteLine(" {0}", ReadSByte()); } return; case "Int16": { Writer.WriteLine(" {0}", ReadInt16()); } return; case "Int32": { Writer.WriteLine(" {0}", ReadInt32()); } return; case "Int64": { Writer.WriteLine(" {0}", ReadInt64()); } return; case "Float": { Writer.WriteLine(" {0}", ReadSingle()); } return; case "Double": { Writer.WriteLine(" {0}", ReadDouble()); } return; case "String": { var length = ReadVLQInt32(); if (length < 0) { Writer.WriteLine(" {0}", Encoding.ASCII.GetString(ReadBytes(length * -1))); } else { Writer.WriteLine(" {0}", Encoding.Unicode.GetString(ReadBytes(length * 2))); } } return; case "StringAnsi": { var b = ReadByte(); var nxt = (b & (1 << 7)) != 0; int len = b & ((1 << 7) - 1); if (nxt) { Writer.WriteLine(" {0}", Encoding.Unicode.GetString(ReadBytes(len * 2))); } else { Writer.WriteLine(" {0}", Encoding.ASCII.GetString(ReadBytes(len))); } } return; case "Bool": { Writer.WriteLine(" {0}", ReadBoolean()); } return; case "CName": { Writer.WriteLine(" {0}", names[ReadUInt16()].Value); } return; case "CGUID": { Writer.WriteLine(" {0}", new CGUID(ReadBytes(16)).ToString()); } return; case "LocalizedString": { Writer.WriteLine(" {0}", ReadUInt32()); } return; case "ptr": { Writer.WriteLine(" Object {0}", ReadUInt32()); } return; case "soft": { var res = resources[ReadUInt16() - 1]; Writer.WriteLine(" {0} {1} ({2})", res.Type, res.Path, res.Flags); } return; case "array": { var len = ReadUInt32(); arr = arr[1].Split(new char[] { ',' }, 3); Writer.WriteLine(" {0}", len); Writer.WriteLine("{0}{{", offset.Substring(1)); for (uint i = 0; i < len; i++) { Writer.Write("{0}Id {1}:", offset, i); ParseVariale(arr[2], size, $"\t{offset}"); } Writer.WriteLine("{0}}}", offset.Substring(1)); } return; case "handle": { var id = ReadInt32(); if (id >= 0) { Writer.WriteLine(" Object: {0}", id); } else { id *= -1; var res = resources[id - 1]; Writer.WriteLine(" {0} {1} ({2})", res.Type, res.Path, res.Flags); } } return; case "SAppearanceAttachment": { Writer.WriteLine(); Writer.WriteLine("{0}{{", offset.Substring(1)); ReadVariable(offset); var bytecount = ReadInt32(); var unknown = ReadBytes(bytecount - 4); Writer.WriteLine("{0}Unknown Bytes: {1}", offset, bytecount - 4); Writer.WriteLine("{0}}}", offset.Substring(1)); } return; case "IdTag": { var dynamic = ReadBoolean(); var guid = new CGUID(ReadBytes(16)); if (dynamic) { Writer.WriteLine(" [Dynamic: {0}]", guid.ToString()); } else { Writer.WriteLine(" [Static: {0}]", guid.ToString()); } } return; case "EngineTransform": { Writer.Write(" [ "); var flags = ReadByte(); if ((flags & 1) == 1) { Writer.Write("Posistion:{0},{1},{2} ", ReadSingle(), ReadSingle(), ReadSingle()); } if ((flags & 2) == 2) { Writer.Write("Rotation:{0},{1},{2} ", ReadSingle(), ReadSingle(), ReadSingle()); } if ((flags & 4) == 4) { Writer.Write("Scale:{0},{1},{2} ", ReadSingle(), ReadSingle(), ReadSingle()); } Writer.WriteLine("]"); } return; case "EngineQsTransform": { Writer.Write("[ "); var flags = ReadByte(); if ((flags & 1) == 1) { Writer.Write("Posistion:{0},{1},{2} ", ReadSingle(), ReadSingle(), ReadSingle()); } if ((flags & 2) == 2) { Writer.Write("Rotation:{0},{1},{2},{3} ", ReadSingle(), ReadSingle(), ReadSingle(), ReadSingle()); } if ((flags & 4) == 4) { Writer.Write("Scale:{0},{1},{2} ", ReadSingle(), ReadSingle(), ReadSingle()); } Writer.WriteLine("]"); } return; case "TagList": { var count = ReadByte(); var tags = new string[count]; for (var i = 0; i < count; i++) { tags[i] = names[ReadUInt16()].Value; } Writer.WriteLine(" [{0}]", string.Join(",", tags)); } return; case "EntityHandle": { /* * Read the first byte which will tell you what type of entity handle it is. * Values: * 0 - None - 0 bytes * 1 - Entity Guid - 32 bytes * 2 - IdTag - 17 bytes * * Then read off that variable type. * * IdTag: * 1 Byte - 0 = Static, 1 = Dynamic * 16 Bytes - Guid Value * Entity: * 16 Bytes - Guid Value * 16 Bytes - Unknown * */ var handletype = ReadByte(); switch (handletype) { //Entity case 1: var eguid = new CGUID(ReadBytes(16)); var unkn = ReadBytes(16); Writer.WriteLine(" [Entity - {0}]", eguid.ToString()); break; //IdTag case 2: var dynamic = ReadBoolean(); var guid = new CGUID(ReadBytes(16)); if (dynamic) { Writer.WriteLine(" [Dynamic: {0}]", guid.ToString()); } else { Writer.WriteLine(" [Static: {0}]", guid.ToString()); } break; } } return; case "static": { var length = ReadUInt32(); arr = arr[1].Split(new char[] { ',' }, 2); Writer.WriteLine(" {0}", length); Writer.WriteLine("{0}{{", offset.Substring(1)); for (uint i = 0; i < length; i++) { Writer.Write("{0}Id {1}:", offset, i); ParseVariale(arr[1], size, $"\t{offset}"); } Writer.WriteLine("{0}}}", offset.Substring(1)); } return; case "CDateTime": { var datetime = new CDateTime(ReadUInt64()); Writer.WriteLine(" {0}.{1}", datetime.ToString(), datetime.Value.Millisecond); } return; case "SharedDataBuffer": { var datasize = ReadInt32(); var bytes = ReadBytes(datasize); Writer.WriteLine(" {0} bytes", datasize); } return; case "DataBuffer": { var datasize = ReadInt32(); var bytes = ReadBytes(datasize); Writer.WriteLine(" {0} bytes", datasize); } return; case "DeferredDataBuffer": { Writer.WriteLine(" {0}", ReadUInt16()); } return; case "CPhysicalCollision": { var unknown = ReadUInt32(); var nameCount = ReadByte(); Writer.WriteLine(); Writer.WriteLine("{0}{{", offset.Substring(1)); Writer.WriteLine("{0}unknown Uint32 {1}", offset, unknown); Writer.WriteLine("{0}Types", offset); Writer.WriteLine("{0}{{", offset); for (byte i = 0; i < nameCount; i++) { Writer.WriteLine("\t{0}Id {1}: {2}", offset, i, names[ReadUInt16()].Value); } Writer.WriteLine("{0}}}", offset); Writer.WriteLine("{0}Bytes {1}", offset, String.Join(", ", ReadBytes(16))); Writer.WriteLine("{0}}}", offset.Substring(1)); } return; } Type myType = Type.GetType($"CR2W.Types.W3.{type}"); if (myType != null) { if (myType.IsEnum) { if (myType.IsDefined(typeof(FlagsAttribute), false)) { var values = new List <string>(); while (true) { var flag = ReadUInt16(); if (flag == 0) { break; } values.Add(names[flag].Value); } if (values.Count != 0) { Writer.WriteLine(" {0}", Enum.Parse(myType, String.Join(",", values))); } else { Writer.WriteLine(" {0}", "None"); } } else { var value = names[ReadUInt16()].Value; Writer.WriteLine(" {0}", value); } return; } } Writer.WriteLine(); Writer.WriteLine("{0}{{", offset.Substring(1)); ReadVariable(offset); Writer.WriteLine("{0}}}", offset.Substring(1)); }
protected void grvData_HtmlDataCellPrepared(object sender, ASPxGridViewTableDataCellEventArgs e) { //if (e.DataColumn.FieldName == "Description") if (e.CellValue != null) { string toolTip = Environment.NewLine + "Mô tả: " + grvData.GetRowValues(e.VisibleIndex, "Description").ToString() + Environment.NewLine + Environment.NewLine + "Tạo bởi " + grvData.GetRowValues(e.VisibleIndex, "FullName").ToString() + Environment.NewLine + Environment.NewLine + "Sửa gần đây nhất: " + DateTime.Parse(grvData.GetRowValues(e.VisibleIndex, "ModifiedOn").ToString()).ToString("dd/MM/yyyy") + Environment.NewLine + Environment.NewLine; if (rblFilter.SelectedIndex != 2) { //chưa được duyệt không thể nhìn thấy password toolTip += "Mật khẩu : " + grvData.GetRowValues(e.VisibleIndex, "ContestPassword").ToString() + Environment.NewLine; } try { if (grvData.GetRowValues(e.VisibleIndex, "StartTime") != null) { toolTip += "Bắt đầu: " + DateTime.Parse(grvData.GetRowValues(e.VisibleIndex, "StartTime").ToString()).ToString("HH:mm, dd/MM/yyyy") + Environment.NewLine + Environment.NewLine; } if (grvData.GetRowValues(e.VisibleIndex, "EndTime") != null) { toolTip += "Kết thúc: " + DateTime.Parse(grvData.GetRowValues(e.VisibleIndex, "EndTime").ToString()).ToString("HH:mm, dd/MM/yyyy") + Environment.NewLine + Environment.NewLine; } } catch (Exception) { } if (e.DataColumn.FieldName == "StartTime" || e.DataColumn.FieldName == "EndTime") { try { DateTime dt = DateTime.Parse(e.CellValue.ToString()); e.Cell.Text = CDateTime.getTimeNoti(dt); } catch { } } //+ e.CellValue.ToString(); e.Cell.ToolTip = toolTip; // e.Cell.Visible = false; try { if (e.DataColumn.FieldName == "ContestId") { if (rblFilter.SelectedIndex == 2) // chưa phê duyệt thì k được xem { e.Cell.Enabled = false; } else if (rblFilter.SelectedIndex == 1) // đã phê duyệt mà hết hạn cũng không được tham gia { DateTime startTime = DateTime.Parse(grvData.GetRowValues(e.VisibleIndex, "StartTime").ToString()); DateTime endTime = DateTime.Parse(grvData.GetRowValues(e.VisibleIndex, "EndTime").ToString()); DateTime now = DateTime.Now; if (now > endTime || now < startTime) { e.Cell.Enabled = false; } } } } catch (Exception) { } } }
public void Read(BinaryReader file) { m_stream = file.BaseStream; #region Read Headers var id = ReadStruct <uint>(); if (id != MAGIC) { throw new FormatException($"Not a CR2W file, Magic read as 0x{id:X8}"); } m_fileheader = ReadStruct <CR2WFileHeader>(); if (m_fileheader.version > 163 || m_fileheader.version < 159) { throw new FormatException($"Unknown Version {m_fileheader.version}. Supported versions: 159 - 163."); } var dt = new CDateTime(m_fileheader.timeStamp); m_hasInternalBuffer = m_fileheader.bufferSize > m_fileheader.fileSize; m_tableheaders = ReadStructs <CR2WTableHeader>(10); m_strings = ReadStringsBuffer(); m_names = ReadTable <CR2WName>(1); m_imports = ReadTable <CR2WImportHeader>(2); m_table4 = ReadTable <CR2WTable4Item>(3); m_exports = ReadTable <CR2WExportHeader>(4); m_buffers = ReadTable <CR2WBufferHeader>(5); m_embedded = ReadTable <CR2WEmbeddedHeader>(6); #endregion #region Read Data // read Name data names = (from n in m_names let str = new CR2WString() { hash = n.hash, offset = n.value, str = m_dictionary[n.value] } select str).ToList(); // Read Handle data (imports) imports = (from i in m_imports let handle = new CR2WHandle() { offset = i.depotPath, filetype = i.className, flags = i.flags, str = m_dictionary[i.depotPath] } select handle).ToList(); // Read Chunk data (exports) chunks = new List <CR2WChunk>(); foreach (var c in m_exports) { var chunk = new CR2WChunk(this) { typeId = c.className, Flags = c.objectFlags, ParentChunkId = c.parentID, size = c.dataSize, offset = c.dataOffset, template = c.template, crc = c.crc32 }; chunks.Add(chunk); chunk.ReadData(file); } // Read Buffer Data (block 6) buffers = new List <CR2WBuffer>(); foreach (var b in m_buffers) { var buffer = new CR2WBuffer() { flags = b.flags, index = b.index, offset = b.offset, size = b.diskSize, memsize = b.memSize, crc = b.crc32 }; buffers.Add(buffer); } // Read Embedded Data (Block 7) embedded = new List <CR2WEmbedded>(); foreach (var e in m_embedded) { var emb = new CR2WEmbedded() { handle_name_count = e.importIndex, handle_name_offset = e.path, pathHash = e.pathHash, offset = e.dataOffset, size = e.dataSize }; var offset = e.path; for (int i = 0; i < e.importIndex; i++) { if (offset > m_dictionary.Last().Key) { continue; } emb.handles.Add(m_dictionary[offset]); offset += (uint)m_dictionary[offset].Length + 1; } embedded.Add(emb); emb.ReadData(file); } #endregion #region Read Buffer file.BaseStream.Seek(m_fileheader.fileSize, SeekOrigin.Begin); var actualbuffersize = (int)(m_fileheader.bufferSize - m_fileheader.fileSize); if (actualbuffersize > 0) { bufferdata = new byte[actualbuffersize]; file.BaseStream.Read(bufferdata, 0, actualbuffersize); } #endregion m_stream = null; }
private void ProcessFile() { var id = ReadStruct <uint>(); if (id != MAGIC) { throw new FormatException($"Not a CR2W file, Magic read as 0x{id:X8}"); } m_fileheader = ReadStruct <CR2WFileHeader>(); if (m_fileheader.version > 163 || m_fileheader.version < 159) { throw new FormatException($"Unknown Version {m_fileheader.version}. Supported versions: 159 - 163."); } var dt = new CDateTime(m_fileheader.timeStamp, null, ""); m_hasInternalBuffer = m_fileheader.bufferSize > m_fileheader.fileSize; m_tableheaders = ReadStructs <CR2WTable>(10); m_strings = ReadStringsBuffer(); m_names = ReadTable <CR2WName>(1); m_imports = ReadTable <CR2WImport>(2); m_table4 = ReadTable <CR2WProperty>(3); m_exports = ReadTable <CR2WExport>(4); m_buffers = ReadTable <CR2WBuffer>(5); m_embedded = ReadTable <CR2WEmbedded>(6); // Fixing for (int i = 0; i < m_names.Length; i++) { FixNameFNV1A(ref m_names[i]); } for (int i = 0; i < m_exports.Length; i++) { FixExportCRC32(ref m_exports[i]); } for (int i = 0; i < m_buffers.Length; i++) { FixBufferCRC32(ref m_buffers[i]); } // Write File m_stream.Seek(160, SeekOrigin.Begin); WriteStringBuffer(); WriteTable <CR2WName>(m_names, 1); WriteTable <CR2WImport>(m_imports, 2); WriteTable <CR2WProperty>(m_table4, 3); WriteTable <CR2WExport>(m_exports, 4); WriteTable <CR2WBuffer>(m_buffers, 5); WriteTable <CR2WEmbedded>(m_embedded, 6); // Write Header again m_stream.Seek(0, SeekOrigin.Begin); m_fileheader.timeStamp = CDateTime.Now.ToUInt64(); m_fileheader.crc32 = CalculateHeaderCRC32(); WriteStruct <uint>(MAGIC); WriteStruct <CR2WFileHeader>(m_fileheader); WriteStructs <CR2WTable>(m_tableheaders); }
public void CreateToday() { CDateTime c_dtToday = new CDateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day); Assert.IsTrue(c_dtToday.Day == DateTime.Now.Day); }
public void AddInputOutputParameter(String name, CDateTime value) { _parameters.Add(new Parameter(name, value, ParameterDirection.InputOutput)); }
void ParseVariale(string type, int size, string offset) { var arr = type.Split(new char[] { ':' }, 2); switch (arr[0]) { #region .NET Types case "Uint8": { Writer.WriteLine(" {0}", ReadByte()); } return; case "Uint16": { Writer.WriteLine(" {0}", ReadUInt16()); } return; case "Uint32": { Writer.WriteLine(" {0}", ReadUInt32()); } return; case "Uint64": { Writer.WriteLine(" {0}", ReadUInt64()); } return; case "Int8": { Writer.WriteLine(" {0}", ReadSByte()); } return; case "Int16": { Writer.WriteLine(" {0}", ReadInt16()); } return; case "Int32": { Writer.WriteLine(" {0}", ReadInt32()); } return; case "Int64": { Writer.WriteLine(" {0}", ReadInt64()); } return; case "Float": { Writer.WriteLine(" {0}", ReadSingle()); } return; case "String": { var(flag, length) = ReadVLQInt32(); var encoding = flag ? Encoding.ASCII : Encoding.Unicode; var chars = new char[length]; var byteSize = encoding.GetByteCount(chars); var bytes = ReadBytes(byteSize); encoding.GetChars(bytes, 0, byteSize, chars, 0); Writer.WriteLine(" {0}", new string(chars)); } return; case "Bool": { Writer.WriteLine(" {0}", ReadBoolean()); } return; #endregion #region RED Types case "StringAnsi": { var length = ReadByte(); var bytes = ReadBytes(length); Writer.WriteLine(" {0}", new StringAnsi(bytes)); } return; case "CName": { Writer.WriteLine(" {0}", names[ReadUInt16()].Value); } return; case "CGUID": { Writer.WriteLine(" {0}", new CGUID(ReadBytes(16)).ToString()); } return; case "LocalizedString": { Writer.WriteLine(" {0}", ReadUInt32()); } return; case "ptr": { Writer.WriteLine(" Object {0}", ReadUInt32()); } return; case "soft": { var id = ReadUInt16(); if (id == 0) { Writer.WriteLine(" NULL"); return; } var res = resources[id - 1]; Writer.WriteLine(" {0} {1} ({2})", res.Type, res.Path, res.Flags); } return; case "array": { arr = arr[1].Split(new char[] { ',' }, 3); var len = ReadUInt32(); Writer.WriteLine(" {0}", len); Writer.WriteLine("{0}{{", offset.Substring(1)); for (uint i = 0; i < len; i++) { Writer.Write("{0}Id {1}:", offset, i); ParseVariale(arr[2], size, $"\t{offset}"); } Writer.WriteLine("{0}}}", offset.Substring(1)); } return; case "handle": { var id = ReadInt32(); if (id >= 0) { Writer.WriteLine(" Object: {0}", id); } else { id *= -1; var res = resources[id - 1]; Writer.WriteLine(" {0} {1} ({2})", res.Type, res.Path, res.Flags); } } return; case "SAppearanceAttachment": { Writer.WriteLine(); Writer.WriteLine("{0}{{", offset.Substring(1)); ReadVariable(offset); var bytecount = ReadInt32(); var unknown = ReadBytes(bytecount - 4); Writer.WriteLine("{0}Unknown Bytes: {1}", offset, bytecount - 4); Writer.WriteLine("{0}}}", offset.Substring(1)); } return; case "IdTag": { var dynamic = ReadBoolean(); var guid = new CGUID(ReadBytes(16)); if (dynamic) { Writer.WriteLine(" [Dynamic: {0}]", guid.ToString()); } else { Writer.WriteLine(" [Static: {0}]", guid.ToString()); } } return; case "EngineTransform": { Writer.Write(" [ "); var flags = ReadByte(); if ((flags & 1) == 1) { Writer.Write("Posistion:{0},{1},{2} ", ReadSingle(), ReadSingle(), ReadSingle()); } if ((flags & 2) == 2) { Writer.Write("Rotation:{0},{1},{2} ", ReadSingle(), ReadSingle(), ReadSingle()); } if ((flags & 4) == 4) { Writer.Write("Scale:{0},{1},{2} ", ReadSingle(), ReadSingle(), ReadSingle()); } Writer.WriteLine("]"); } return; case "EngineQsTransform": { Writer.Write(" [ "); var flags = ReadByte(); if ((flags & 1) == 1) { Writer.Write("Posistion:{0},{1},{2} ", ReadSingle(), ReadSingle(), ReadSingle()); } if ((flags & 2) == 2) { Writer.Write("Rotation:{0},{1},{2},{3} ", ReadSingle(), ReadSingle(), ReadSingle(), ReadSingle()); } if ((flags & 4) == 4) { Writer.Write("Scale:{0},{1},{2} ", ReadSingle(), ReadSingle(), ReadSingle()); } Writer.WriteLine("]"); } return; case "TagList": { // This could be a vlq int value but so far there is no tag list // size big enough to use more than one bytes. var count = ReadByte(); var tags = new string[count]; for (var i = 0; i < count; i++) { tags[i] = names[ReadUInt16()].Value; } Writer.WriteLine(" [{0}]", string.Join(",", tags)); } return; case "EntityHandle": { /* * Read the first byte which will tell you what type of entity handle it is. * Values: * 0 - None - 0 bytes * 1 - Entity Guid - 32 bytes * 2 - IdTag - 17 bytes * * Then read off that variable type. * * IdTag: * 1 Byte - 0 = Static, 1 = Dynamic * 16 Bytes - Guid Value * Entity: * 16 Bytes - Guid Value * 16 Bytes - Unknown */ var handletype = ReadByte(); switch (handletype) { //Entity case 1: var eguid = new CGUID(ReadBytes(16)); var unkn = ReadBytes(16); Writer.WriteLine(" [Entity - {0}]", eguid.ToString()); break; //IdTag case 2: var dynamic = ReadBoolean(); var guid = new CGUID(ReadBytes(16)); if (dynamic) { Writer.WriteLine(" [Dynamic: {0}]", guid.ToString()); } else { Writer.WriteLine(" [Static: {0}]", guid.ToString()); } break; } } return; case "static": { var length = ReadUInt32(); arr = arr[1].Split(new char[] { ',' }, 2); Writer.WriteLine(" {0}", length); Writer.WriteLine("{0}{{", offset.Substring(1)); for (uint i = 0; i < length; i++) { Writer.Write("{0}Id {1}:", offset, i); ParseVariale(arr[1], size, $"\t{offset}"); } Writer.WriteLine("{0}}}", offset.Substring(1)); } return; case "CDateTime": { var datetime = new CDateTime(ReadUInt64()); Writer.WriteLine(" {0}.{1}", datetime.ToString(), datetime.Value.Millisecond); } return; case "SharedDataBuffer": { var datasize = ReadInt32(); var bytes = ReadBytes(datasize); Writer.WriteLine(" {0} bytes", datasize); } return; case "DataBuffer": { var datasize = ReadInt32(); var bytes = ReadBytes(datasize); Writer.WriteLine(" {0} bytes", datasize); } return; case "DeferredDataBuffer": { Writer.WriteLine(" {0}", ReadUInt16()); } return; case "SMeshTypeResourceLODLevel": { Writer.WriteLine(" {0}", ReadSingle()); } return; case "CPhysicalCollision": { var unknown = ReadUInt32(); var nameCount = ReadByte(); Writer.WriteLine(); Writer.WriteLine("{0}{{", offset.Substring(1)); Writer.WriteLine("{0}unknown Uint32 {1}", offset, unknown); Writer.WriteLine("{0}Types", offset); Writer.WriteLine("{0}{{", offset); for (byte i = 0; i < nameCount; i++) { Writer.WriteLine("\t{0}Id {1}: {2}", offset, i, names[ReadUInt16()].Value); } Writer.WriteLine("{0}}}", offset); Writer.WriteLine("{0}Bytes {1}", offset, String.Join(", ", ReadBytes(16))); Writer.WriteLine("{0}}}", offset.Substring(1)); } return; #endregion } //Detects types such as [7]Float etc... var regEx = Regex.Match(type, @"^\[([0-9]+)\]([\x00-\x7F]+)$"); if (regEx.Success) { var arraySize = ReadUInt32(); if (arraySize != Convert.ToUInt32(regEx.Groups[1].Value)) { throw new FormatException(); } Writer.WriteLine(" {0}", arraySize); Writer.WriteLine("{0}{{", offset.Substring(1)); for (uint i = 0; i < arraySize; i++) { Writer.Write("{0}Id {1}:", offset, i); ParseVariale(regEx.Groups[2].Value, size, $"\t{offset}"); } Writer.WriteLine("{0}}}", offset.Substring(1)); return; } var myType = AssemblyDictionary.GetTypeByName(type); if (myType != null && myType.IsEnum) { if (myType.IsDefined(typeof(FlagsAttribute), false)) { var values = new List <string>(); while (true) { var flag = ReadUInt16(); if (flag == 0) { break; } values.Add(names[flag].Value); } if (values.Count != 0) { Writer.WriteLine(" {0}", Enum.Parse(myType, String.Join(",", values))); } else { Writer.WriteLine(" {0}", "None"); } } else { var value = names[ReadUInt16()].Value; Writer.WriteLine(" {0}", value); } return; } Writer.WriteLine(); Writer.WriteLine("{0}{{", offset.Substring(1)); ReadVariable(offset); Writer.WriteLine("{0}}}", offset.Substring(1)); }