override public void Setup_AfterAdd(ByteBuffer buffer, int beginPos) { base.Setup_AfterAdd(buffer, beginPos); if (!buffer.Seek(beginPos, 6)) { return; } if ((ObjectType)buffer.ReadByte() != packageItem.objectType) { return; } string str; int itemCount = buffer.ReadShort(); _items = new string[itemCount]; _values = new string[itemCount]; for (int i = 0; i < itemCount; i++) { int nextPos = buffer.ReadShort(); nextPos += buffer.position; _items[i] = buffer.ReadS(); _values[i] = buffer.ReadS(); str = buffer.ReadS(); if (str != null) { if (_icons == null) { _icons = new string[itemCount]; } _icons[i] = str; } buffer.position = nextPos; } str = buffer.ReadS(); if (str != null) { this.text = str; _selectedIndex = Array.IndexOf(_items, str); } else if (_items.Length > 0) { _selectedIndex = 0; this.text = _items[0]; } else { _selectedIndex = -1; } str = buffer.ReadS(); if (str != null) { this.icon = str; } if (buffer.ReadBool()) { this.titleColor = buffer.ReadColor(); } int iv = buffer.ReadInt(); if (iv > 0) { visibleItemCount = iv; } _popupDirection = (PopupDirection)buffer.ReadByte(); iv = buffer.ReadShort(); if (iv >= 0) { _selectionController = parent.GetControllerAt(iv); } }
//Reads the next short of the byteArray (2 bytes) public short readShort() { return(ByteBuffer.ReadShort()); }
void LoadFont(PackageItem item) { BitmapFont font = new BitmapFont(item); item.bitmapFont = font; ByteBuffer buffer = item.rawData; buffer.Seek(0, 0); bool ttf = buffer.ReadBool(); font.colorEnabled = buffer.ReadBool(); font.scaleEnabled = buffer.ReadBool(); buffer.ReadBool(); //hasChannel int fontSize = buffer.ReadInt(); int xadvance = buffer.ReadInt(); int lineHeight = buffer.ReadInt(); float texScaleX = 1; float texScaleY = 1; NTexture mainTexture = null; AtlasSprite mainSprite = null; if (ttf && _sprites.TryGetValue(item.id, out mainSprite)) { mainTexture = (NTexture)GetItemAsset(mainSprite.atlas); texScaleX = mainTexture.root.uvRect.Width / mainTexture.width; texScaleY = mainTexture.root.uvRect.Height / mainTexture.height; } buffer.Seek(0, 1); BitmapFont.BMGlyph bg; int cnt = buffer.ReadInt(); for (int i = 0; i < cnt; i++) { int nextPos = buffer.ReadShort(); nextPos += buffer.position; bg = new BitmapFont.BMGlyph(); char ch = buffer.ReadChar(); font.AddChar(ch, bg); string img = buffer.ReadS(); int bx = buffer.ReadInt(); int by = buffer.ReadInt(); bg.offsetX = buffer.ReadInt(); bg.offsetY = buffer.ReadInt(); bg.width = buffer.ReadInt(); bg.height = buffer.ReadInt(); bg.advance = buffer.ReadInt(); bg.channel = buffer.ReadByte(); if (bg.channel == 1) { bg.channel = 3; } else if (bg.channel == 2) { bg.channel = 2; } else if (bg.channel == 3) { bg.channel = 1; } if (ttf) { if (mainSprite.rotated) { bg.uv[0] = new Vector2((float)(by + bg.height + mainSprite.rect.X) * texScaleX, 1 - (float)(mainSprite.rect.Bottom - bx) * texScaleY); bg.uv[1] = new Vector2(bg.uv[0].X - (float)bg.height * texScaleX, bg.uv[0].Y); bg.uv[2] = new Vector2(bg.uv[1].X, bg.uv[0].Y + (float)bg.width * texScaleY); bg.uv[3] = new Vector2(bg.uv[0].X, bg.uv[2].Y); } else { bg.uv[0] = new Vector2((float)(bx + mainSprite.rect.X) * texScaleX, 1 - (float)(by + bg.height + mainSprite.rect.Y) * texScaleY); bg.uv[1] = new Vector2(bg.uv[0].X, bg.uv[0].Y + (float)bg.height * texScaleY); bg.uv[2] = new Vector2(bg.uv[0].X + (float)bg.width * texScaleX, bg.uv[1].Y); bg.uv[3] = new Vector2(bg.uv[2].X, bg.uv[0].Y); } bg.lineHeight = lineHeight; } else { PackageItem charImg; if (_itemsById.TryGetValue(img, out charImg)) { GetItemAsset(charImg); charImg.texture.GetUV(bg.uv); bg.width = charImg.texture.width; bg.height = charImg.texture.height; if (mainTexture == null) { mainTexture = charImg.texture.root; } } if (fontSize == 0) { fontSize = bg.height; } if (bg.advance == 0) { if (xadvance == 0) { bg.advance = bg.offsetX + bg.width; } else { bg.advance = xadvance; } } bg.lineHeight = bg.offsetY < 0 ? bg.height : (bg.offsetY + bg.height); if (bg.lineHeight < font.size) { bg.lineHeight = font.size; } } buffer.position = nextPos; } font.size = fontSize; font.mainTexture = mainTexture; }
/// <summary> /// 接收到消息 /// </summary> /// <param name="ms"></param> void OnReceivedMessage(MemoryStream ms) { BinaryReader r = new BinaryReader(ms); byte[] message = r.ReadBytes((int)(ms.Length - ms.Position)); //int msglen = message.Length; ByteBuffer buffer = new ByteBuffer(message); int mainId = buffer.ReadShort(); //NetworkManager.AddEvent(mainId, buffer); //TODO:notify receive message }
bool LoadPackage(ByteBuffer buffer, string packageSource, string assetNamePrefix) { if (buffer.ReadUint() != 0x46475549) { if (Application.isPlaying) { throw new Exception("FairyGUI: old package format found in '" + packageSource + "'"); } else { Debug.LogWarning("FairyGUI: old package format found in '" + packageSource + "'"); return(false); } } buffer.version = buffer.ReadInt(); buffer.ReadBool(); //compressed id = buffer.ReadString(); name = buffer.ReadString(); if (_packageInstById.ContainsKey(id) && name != _packageInstById[id].name) { Debug.LogWarning("FairyGUI: Package id conflicts, '" + name + "' and '" + _packageInstById[id].name + "'"); return(false); } buffer.Skip(20); int indexTablePos = buffer.position; int cnt; buffer.Seek(indexTablePos, 4); cnt = buffer.ReadInt(); string[] stringTable = new string[cnt]; for (int i = 0; i < cnt; i++) { stringTable[i] = buffer.ReadString(); } buffer.stringTable = stringTable; buffer.Seek(indexTablePos, 1); PackageItem pi; if (assetNamePrefix == null) { assetNamePrefix = string.Empty; } else if (assetNamePrefix.Length > 0) { assetNamePrefix = assetNamePrefix + "_"; } cnt = buffer.ReadShort(); for (int i = 0; i < cnt; i++) { int nextPos = buffer.ReadInt(); nextPos += buffer.position; pi = new PackageItem(); pi.owner = this; pi.type = (PackageItemType)buffer.ReadByte(); pi.id = buffer.ReadS(); pi.name = buffer.ReadS(); buffer.ReadS(); //path pi.file = buffer.ReadS(); pi.exported = buffer.ReadBool(); pi.width = buffer.ReadInt(); pi.height = buffer.ReadInt(); switch (pi.type) { case PackageItemType.Image: { pi.objectType = ObjectType.Image; int scaleOption = buffer.ReadByte(); if (scaleOption == 1) { Rect rect = new Rect(); rect.x = buffer.ReadInt(); rect.y = buffer.ReadInt(); rect.width = buffer.ReadInt(); rect.height = buffer.ReadInt(); pi.scale9Grid = rect; pi.tileGridIndice = buffer.ReadInt(); } else if (scaleOption == 2) { pi.scaleByTile = true; } buffer.ReadBool(); //smoothing break; } case PackageItemType.MovieClip: { buffer.ReadBool(); //smoothing pi.objectType = ObjectType.MovieClip; pi.rawData = buffer.ReadBuffer(); break; } case PackageItemType.Font: { pi.rawData = buffer.ReadBuffer(); break; } case PackageItemType.Component: { int extension = buffer.ReadByte(); if (extension > 0) { pi.objectType = (ObjectType)extension; } else { pi.objectType = ObjectType.Component; } pi.rawData = buffer.ReadBuffer(); UIObjectFactory.ResolvePackageItemExtension(pi); break; } case PackageItemType.Atlas: case PackageItemType.Sound: case PackageItemType.Misc: { pi.file = assetNamePrefix + pi.file; break; } } _items.Add(pi); _itemsById[pi.id] = pi; if (pi.name != null) { _itemsByName[pi.name] = pi; } buffer.position = nextPos; } buffer.Seek(indexTablePos, 2); cnt = buffer.ReadShort(); for (int i = 0; i < cnt; i++) { int nextPos = buffer.ReadShort(); nextPos += buffer.position; string itemId = buffer.ReadS(); pi = _itemsById[buffer.ReadS()]; AtlasSprite sprite = new AtlasSprite(); sprite.atlas = pi; sprite.rect.x = buffer.ReadInt(); sprite.rect.y = buffer.ReadInt(); sprite.rect.width = buffer.ReadInt(); sprite.rect.height = buffer.ReadInt(); sprite.rotated = buffer.ReadBool(); _sprites[itemId] = sprite; buffer.position = nextPos; } if (buffer.Seek(indexTablePos, 3)) { cnt = buffer.ReadShort(); for (int i = 0; i < cnt; i++) { int nextPos = buffer.ReadInt(); nextPos += buffer.position; if (_itemsById.TryGetValue(buffer.ReadS(), out pi)) { if (pi.type == PackageItemType.Image) { pi.pixelHitTestData = new PixelHitTestData(); pi.pixelHitTestData.Load(buffer); } } buffer.position = nextPos; } } if (!Application.isPlaying) { _items.Sort(ComparePackageItem); } return(true); }
/// <summary> /// /// </summary> /// <param name="clientid"></param> /// <param name="block"></param> private void ProcessSetHisData2(string clientid, ByteBuffer block) { Parent.AsyncCallback(clientid, ToByteBuffer(APIConst.HisValueFun, (byte)1)); var service = ServiceLocator.Locator.Resolve <ITagHisValueProduct>(); int count = block.ReadInt(); for (int i = 0; i < count; i++) { int id = block.ReadInt(); var dt = DateTime.FromBinary(block.ReadLong()); TagType tp = (TagType)block.ReadByte(); switch (tp) { case TagType.Bool: var bval = block.ReadByte(); var qa = block.ReadByte(); service.SetTagHisValue(id, dt, bval, qa); break; case TagType.Byte: var btval = block.ReadByte(); qa = block.ReadByte(); service.SetTagHisValue(id, dt, btval, qa); //service.SetTagHisValue(id,new TagValue() { Quality = qa, Time = dt, Value = btval }); break; case TagType.Short: var sbval = block.ReadShort(); qa = block.ReadByte(); service.SetTagHisValue(id, dt, sbval, qa); // service.SetTagHisValue(id,new TagValue() { Quality = qa, Time = dt, Value = sbval }); break; case TagType.UShort: var usbval = block.ReadUShort(); qa = block.ReadByte(); service.SetTagHisValue(id, dt, usbval, qa); // service.SetTagHisValue(id,new TagValue() { Quality = qa, Time = dt, Value = usbval }); break; case TagType.Int: var ibval = block.ReadInt(); qa = block.ReadByte(); service.SetTagHisValue(id, dt, ibval, qa); //service.SetTagHisValue(id,new TagValue() { Quality = qa, Time = dt, Value = ibval }); break; case TagType.UInt: var uibval = block.ReadUInt(); qa = block.ReadByte(); service.SetTagHisValue(id, dt, uibval, qa); // service.SetTagHisValue(id,new TagValue() { Quality = qa, Time = dt, Value = uibval }); break; case TagType.Long: var lbval = block.ReadLong(); qa = block.ReadByte(); service.SetTagHisValue(id, dt, lbval, qa); // service.SetTagHisValue(id,new TagValue() { Quality = qa, Time = dt, Value = lbval }); break; case TagType.ULong: var ulbval = (ulong)block.ReadLong(); qa = block.ReadByte(); service.SetTagHisValue(id, dt, ulbval, qa); //service.SetTagHisValue(id,new TagValue() { Quality = qa, Time = dt, Value = ulbval }); break; case TagType.Float: var fbval = block.ReadFloat(); qa = block.ReadByte(); service.SetTagHisValue(id, dt, fbval, qa); // service.SetTagHisValue(id,new TagValue() { Quality = qa, Time = dt, Value = fbval }); break; case TagType.Double: var dbval = block.ReadDouble(); qa = block.ReadByte(); service.SetTagHisValue(id, dt, dbval, qa); //service.SetTagHisValue(id,new TagValue() { Quality = qa, Time = dt, Value = dbval }); break; case TagType.String: var stbval = block.ReadString(); qa = block.ReadByte(); service.SetTagHisValue(id, dt, stbval, qa); // service.SetTagHisValue(id,new TagValue() { Quality = qa, Time = dt, Value = stbval }); break; case TagType.DateTime: var dtbval = DateTime.FromBinary(block.ReadLong()); qa = block.ReadByte(); service.SetTagHisValue(id, dt, dtbval, qa); //service.SetTagHisValue(id,new TagValue() { Quality = qa, Time = dt, Value = dtbval }); break; case TagType.IntPoint: var ival1 = block.ReadInt(); var ival2 = block.ReadInt(); qa = block.ReadByte(); service.SetTagHisValue(id, dt, qa, ival1, ival2); break; case TagType.UIntPoint: //var upbval = new UIntPointData() { X = block.ReadUnsignedInt(), Y = block.ReadUnsignedInt() }; var uival1 = block.ReadInt(); var uival2 = block.ReadInt(); qa = block.ReadByte(); service.SetTagHisValue(id, dt, qa, uival1, uival2); //service.SetTagHisValue(id,new TagValue() { Quality = qa, Time = dt, Value = upbval }); break; case TagType.IntPoint3: ival1 = block.ReadInt(); ival2 = block.ReadInt(); var ival3 = block.ReadInt(); qa = block.ReadByte(); service.SetTagHisValue(id, dt, qa, ival1, ival2, ival3); break; case TagType.UIntPoint3: uival1 = block.ReadInt(); uival2 = block.ReadInt(); var uival3 = block.ReadInt(); qa = block.ReadByte(); service.SetTagHisValue(id, dt, qa, uival1, uival2, uival3); break; case TagType.LongPoint: var lval1 = block.ReadLong(); var lval2 = block.ReadLong(); qa = block.ReadByte(); service.SetTagHisValue(id, dt, qa, lval1, lval2); //var lpbval = new LongPointData() { X = block.ReadLong(), Y = block.ReadLong() }; //qa = block.ReadByte(); //service.SetTagHisValue(id,new TagValue() { Quality = qa, Time = dt, Value = lpbval }); break; case TagType.ULongPoint: var ulval1 = (ulong)block.ReadLong(); var ulval2 = (ulong)block.ReadLong(); qa = block.ReadByte(); service.SetTagHisValue(id, dt, qa, ulval1, ulval2); //var ulpbval = new ULongPointData() { X = (ulong)block.ReadLong(), Y = (ulong)block.ReadLong() }; //qa = block.ReadByte(); //service.SetTagHisValue(id,new TagValue() { Quality = qa, Time = dt, Value = ulpbval }); break; case TagType.LongPoint3: lval1 = block.ReadLong(); lval2 = block.ReadLong(); var lval3 = block.ReadLong(); qa = block.ReadByte(); service.SetTagHisValue(id, dt, qa, lval1, lval2, lval3); //var lp3bval = new LongPoint3Data() { X = block.ReadLong(), Y = block.ReadLong(), Z = block.ReadLong() }; //qa = block.ReadByte(); //service.SetTagHisValue(id,new TagValue() { Quality = qa, Time = dt, Value = lp3bval }); break; case TagType.ULongPoint3: ulval1 = (ulong)block.ReadLong(); ulval2 = (ulong)block.ReadLong(); var ulval3 = (ulong)block.ReadLong(); qa = block.ReadByte(); service.SetTagHisValue(id, dt, qa, ulval1, ulval2, ulval3); //var ulp3bval = new ULongPoint3Data() { X = (ulong)block.ReadLong(), Y = (ulong)block.ReadLong(), Z = (ulong)block.ReadLong() }; //qa = block.ReadByte(); //service.SetTagHisValue(id,new TagValue() { Quality = qa, Time = dt, Value = ulp3bval }); break; } } }
public static object GetObject(LuaTable table, ByteBuffer buffer) { // string name = LuaOpreate.getString(table, "Name"); int type = LuaOpreate.getInt(table, "Type"); if (type == (int)TypeCode.Int32) { var tInt = buffer.ReadInt(); return(tInt); } else if (type == (int)TypeCode.UInt32) { return(buffer.ReadUInt()); } else if (type == (int)TypeCode.UInt16) { return(buffer.ReadUShort()); } else if (type == (int)TypeCode.Int16) { return(buffer.ReadShort()); } else if (type == (int)TypeCode.Byte) { return(buffer.ReadByte()); } else if (type == (int)TypeCode.Single) { return(buffer.ReadFloat()); } else if (type == (int)TypeCode.String) { var str = buffer.ReadString(); return(str); } else if (type == (int)TypeCode.Boolean) { return(buffer.ReadBoolean()); } else if (type == (int)TypeCode.Int64) { return(buffer.ReadLong()); } else if (type == TypeArray) { var len = buffer.ReadUShort(); JArray arr = new JArray(); if (len == 0) { return(arr); } var tablei = table["Table"] as LuaTable; for (int i = 0; i < len; i++) { arr.Add(GetObject(tablei[1] as LuaTable, buffer)); } return(arr); } else if (type == TypeCustomArray) { var len = buffer.ReadUShort(); JArray arr = new JArray(); if (len == 0) { return(arr); } var tablei = table["Table"] as LuaTable; for (int i = 0; i < len; i++) { JObject obj = new JObject(); for (int j = 0; j < tablei.Length; j++) { var tablej = tablei[j + 1] as LuaTable; string name = LuaOpreate.getString(tablej, "Name"); obj.Add(new JProperty(name, GetObject(tablej, buffer))); } arr.Add(obj); } return(arr); } return(null); }
override public void Setup_AfterAdd(ByteBuffer buffer, int beginPos) { base.Setup_AfterAdd(buffer, beginPos); if (!buffer.Seek(beginPos, 6)) { return; } if ((ObjectType)buffer.ReadByte() != packageItem.objectType) { return; } string str; str = buffer.ReadS(); if (str != null) { this.title = str; } str = buffer.ReadS(); if (str != null) { this.selectedTitle = str; } str = buffer.ReadS(); if (str != null) { this.icon = str; } str = buffer.ReadS(); if (str != null) { this.selectedIcon = str; } if (buffer.ReadBool()) { this.titleColor = buffer.ReadColor(); } int iv = buffer.ReadInt(); if (iv != 0) { this.titleFontSize = iv; } iv = buffer.ReadShort(); if (iv >= 0) { _relatedController = parent.GetControllerAt(iv); } _relatedPageId = buffer.ReadS(); str = buffer.ReadS(); if (str != null) { sound = UIPackage.GetItemAssetByURL(str) as NAudioClip; } if (buffer.ReadBool()) { soundVolumeScale = buffer.ReadFloat(); } this.selected = buffer.ReadBool(); }
public void Read(ByteBuffer buf) { PlayerId = (sbyte) buf.ReadByte(); Location = new Vector3S { X = buf.ReadShort(), Z = buf.ReadShort(), Y = buf.ReadShort() }; Yaw = buf.ReadByte(); Pitch = buf.ReadByte(); }
override public void Setup_AfterAdd(ByteBuffer buffer, int beginPos) { base.Setup_AfterAdd(buffer, beginPos); if (!buffer.Seek(beginPos, 6)) { return; } if ((ObjectType)buffer.ReadByte() != packageItem.objectType) { return; } string str; int itemCount = buffer.ReadShort(); for (int i = 0; i < itemCount; i++) { int nextPos = buffer.ReadUshort(); nextPos += buffer.position; _items.Add(buffer.ReadS()); _values.Add(buffer.ReadS()); str = buffer.ReadS(); if (str != null) { if (_icons == null) { _icons = new List <string>(); } _icons.Add(str); } buffer.position = nextPos; } str = buffer.ReadS(); if (str != null) { this.text = str; _selectedIndex = _items.IndexOf(str); } else if (_items.Count > 0) { _selectedIndex = 0; this.text = _items[0]; } else { _selectedIndex = -1; } str = buffer.ReadS(); if (str != null) { this.icon = str; } if (buffer.ReadBool()) { this.titleColor = buffer.ReadColor(); } int iv = buffer.ReadInt(); if (iv > 0) { visibleItemCount = iv; } _popupDirection = (PopupDirection)buffer.ReadByte(); iv = buffer.ReadShort(); if (iv >= 0) { _selectionController = parent.GetControllerAt(iv); } if (buffer.version >= 5) { str = buffer.ReadS(); if (str != null) { sound = UIPackage.GetItemAssetByURL(str) as NAudioClip; } soundVolumeScale = buffer.ReadFloat(); } }
public void Read(ByteBuffer buf) { X = buf.ReadShort(); Z = buf.ReadShort(); Y = buf.ReadShort(); Block = buf.ReadByte(); }
internal void ConstructFromResource(List <GObject> objectPool, int poolIndex) { if (!packageItem.translated) { packageItem.translated = true; TranslationHelper.TranslateComponent(packageItem); } ByteBuffer buffer = packageItem.rawData; buffer.Seek(0, 0); underConstruct = true; sourceWidth = buffer.ReadInt(); sourceHeight = buffer.ReadInt(); initWidth = sourceWidth; initHeight = sourceHeight; SetSize(sourceWidth, sourceHeight); if (buffer.ReadBool()) { minWidth = buffer.ReadInt(); maxWidth = buffer.ReadInt(); minHeight = buffer.ReadInt(); maxHeight = buffer.ReadInt(); } if (buffer.ReadBool()) { float f1 = buffer.ReadFloat(); float f2 = buffer.ReadFloat(); SetPivot(f1, f2, buffer.ReadBool()); } if (buffer.ReadBool()) { _margin.top = buffer.ReadInt(); _margin.bottom = buffer.ReadInt(); _margin.left = buffer.ReadInt(); _margin.right = buffer.ReadInt(); } OverflowType overflow = (OverflowType)buffer.ReadByte(); if (overflow == OverflowType.Scroll) { int savedPos = buffer.position; buffer.Seek(0, 7); SetupScroll(buffer); buffer.position = savedPos; } else { SetupOverflow(overflow); } if (buffer.ReadBool()) //clipSoftness { buffer.Skip(8); } _buildingDisplayList = true; buffer.Seek(0, 1); int controllerCount = buffer.ReadShort(); for (int i = 0; i < controllerCount; i++) { int nextPos = buffer.ReadShort(); nextPos += buffer.position; Controller controller = new Controller(); _controllers.Add(controller); controller.parent = this; controller.Setup(buffer); buffer.position = nextPos; } buffer.Seek(0, 2); GObject child; int childCount = buffer.ReadShort(); for (int i = 0; i < childCount; i++) { int dataLen = buffer.ReadShort(); int curPos = buffer.position; if (objectPool != null) { child = objectPool[poolIndex + i]; } else { buffer.Seek(curPos, 0); ObjectType type = (ObjectType)buffer.ReadByte(); string src = buffer.ReadS(); string pkgId = buffer.ReadS(); PackageItem pi = null; if (src != null) { UIPackage pkg; if (pkgId != null) { pkg = UIPackage.GetById(pkgId); } else { pkg = packageItem.owner; } pi = pkg != null?pkg.GetItem(src) : null; } if (pi != null) { child = UIObjectFactory.NewObject(pi); child.packageItem = pi; child.ConstructFromResource(); } else { child = UIObjectFactory.NewObject(type); } } child.underConstruct = true; child.Setup_BeforeAdd(buffer, curPos); child.InternalSetParent(this); _children.Add(child); buffer.position = curPos + dataLen; } buffer.Seek(0, 3); this.relations.Setup(buffer, true); buffer.Seek(0, 2); buffer.Skip(2); for (int i = 0; i < childCount; i++) { int nextPos = buffer.ReadShort(); nextPos += buffer.position; buffer.Seek(buffer.position, 3); _children[i].relations.Setup(buffer, false); buffer.position = nextPos; } buffer.Seek(0, 2); buffer.Skip(2); for (int i = 0; i < childCount; i++) { int nextPos = buffer.ReadShort(); nextPos += buffer.position; child = _children[i]; child.Setup_AfterAdd(buffer, buffer.position); child.underConstruct = false; buffer.position = nextPos; } buffer.Seek(0, 4); buffer.Skip(2); //customData this.opaque = buffer.ReadBool(); int maskId = buffer.ReadShort(); if (maskId != -1) { this.mask = GetChildAt(maskId).displayObject; buffer.ReadBool(); //reversedMask } string hitTestId = buffer.ReadS(); if (hitTestId != null) { PackageItem pi = packageItem.owner.GetItem(hitTestId); if (pi != null && pi.pixelHitTestData != null) { int i1 = buffer.ReadInt(); int i2 = buffer.ReadInt(); this.rootContainer.hitArea = new PixelHitTest(pi.pixelHitTestData, i1, i2); } } buffer.Seek(0, 5); int transitionCount = buffer.ReadShort(); for (int i = 0; i < transitionCount; i++) { int nextPos = buffer.ReadShort(); nextPos += buffer.position; Transition trans = new Transition(this); trans.Setup(buffer); _transitions.Add(trans); buffer.position = nextPos; } if (_transitions.Count > 0) { this.onAddedToStage.Add(__addedToStage); this.onRemovedFromStage.Add(__removedFromStage); } ApplyAllControllers(); _buildingDisplayList = false; underConstruct = false; BuildNativeDisplayList(); SetBoundsChangedFlag(); if (packageItem.objectType != ObjectType.Component) { ConstructExtension(buffer); } OnConstruct(); }
public static object GetObject(ProtoDataType table, ByteBuffer buffer) { int type = table.Type; if (type == (int)TypeCode.Int32) { var tInt = buffer.ReadInt(); return(tInt); } else if (type == (int)TypeCode.UInt32) { return(buffer.ReadUInt()); } else if (type == (int)TypeCode.UInt16) { return(buffer.ReadUShort()); } else if (type == (int)TypeCode.Int16) { return(buffer.ReadShort()); } else if (type == (int)TypeCode.Byte) { return(buffer.ReadByte()); } else if (type == (int)TypeCode.SByte) { return((sbyte)buffer.ReadByte()); } else if (type == (int)TypeCode.Single) { return(buffer.ReadFloat()); } else if (type == (int)TypeCode.String) { var str = buffer.ReadString(); return(str); } else if (type == (int)TypeCode.Boolean) { return(buffer.ReadBoolean()); } else if (type == (int)TypeCode.Int64) { return(buffer.ReadLong()); } else if (type == TypeCodeList1) { var len = buffer.ReadUShort(); JArray arr = new JArray(); if (len == 0) { return(arr); } // var table1 = table[KeyTable].Value<JArray>()[0].Value<JObject>(); var table1 = table.Table[0]; for (int i = 0; i < len; i++) { arr.Add(GetObject(table1, buffer)); } return(arr); } else if (type == TypeCodeList2) { var len = buffer.ReadUShort(); JArray arr = new JArray(); if (len == 0) { return(arr); } // var table1 = table[KeyTable].Value<JArray>(); var table1 = table.Table; for (int i = 0; i < len; i++) { JObject obj = new JObject(); for (int j = 0; j < table1.Length; j++) { var tablej = table1[j]; string name = tablej.Name; obj.Add(new JProperty(name, GetObject(tablej, buffer))); } arr.Add(obj); } return(arr); } else if (type == TypeCodeList3) { var len = buffer.ReadUShort(); JArray arr = new JArray(); if (len == 0) { return(arr); } for (int i = 0; i < len; i++) { JObject obj = new JObject(); var enumTable = table.Table[0]; int enumIndex = -1; if (enumTable.Type == (int)TypeCode.Byte) { var enumValue = buffer.ReadByte(); obj.Add(new JProperty(enumTable.Name, enumValue)); enumIndex = enumTable.EnumList.IndexOf(enumValue); } else if (enumTable.Type == (int)TypeCode.Int16) { var enumValue = buffer.ReadShort(); obj.Add(new JProperty(enumTable.Name, enumValue)); enumIndex = enumTable.EnumList.IndexOf(enumValue); } if (enumIndex >= 0) { var table1 = table.Table[enumIndex + 1]; JObject obj1 = new JObject(); for (int j = 0; j < table1.Table.Length; j++) { obj1.Add(new JProperty(table1.Table[j].Name, GetObject(table1.Table[j], buffer))); } obj.Add(table1.Name, obj1); } arr.Add(obj); } return(arr); } else if (type == TypeProtocolList) { var len = buffer.ReadUShort(); JArray arr = new JArray(); if (len == 0) { return(arr); } for (int i = 0; i < len; i++) { JObject obj = new JObject(); int protoLen = buffer.ReadInt(); ushort protoID = buffer.ReadUShort(); obj.Add(new JProperty("ID", protoID)); JObject data = new JObject(); FillObject(data, ProtocolFactory.Instance.propsJsonDict[protoID], buffer, 1); obj.Add(new JProperty("Data", JsonConvert.SerializeObject(data))); arr.Add(obj); } return(arr); } return(null); }
public void Read(ByteBuffer buf) { Distance = buf.ReadShort(); }
public static object GetObject(Type type, ByteBuffer buffer) { if (type.IsEnum) { //TODO:因为暂时没有用到,所以暂时不管枚举类 return(0); } if (Type.GetTypeCode(type) == TypeCode.Int32) { var tInt = buffer.ReadInt(); return(tInt); } else if (Type.GetTypeCode(type) == TypeCode.UInt32) { return(buffer.ReadUInt()); } else if (Type.GetTypeCode(type) == TypeCode.UInt16) { return(buffer.ReadUShort()); } else if (Type.GetTypeCode(type) == TypeCode.Int16) { return(buffer.ReadShort()); } else if (Type.GetTypeCode(type) == TypeCode.Byte) { return(buffer.ReadByte()); } else if (Type.GetTypeCode(type) == TypeCode.SByte) { return((sbyte)buffer.ReadByte()); } else if (Type.GetTypeCode(type) == TypeCode.Single) { return(buffer.ReadFloat()); } else if (Type.GetTypeCode(type) == TypeCode.String) { var str = buffer.ReadString(); return(str); } else if (Type.GetTypeCode(type) == TypeCode.Boolean) { return(buffer.ReadBoolean()); } else if (Type.GetTypeCode(type) == TypeCode.Int64) { return(buffer.ReadLong()); } else if (Type.GetTypeCode(type) == TypeCode.Object) { if (type.IsAbstract) { var typeName = buffer.ReadString(); // UnityEngine.Debug.Log(typeName); return(GetObject(Type.GetType(typeName), buffer)); } else if (type.IsGenericType) { // UnityEngine.Debug.Log("arr:" + type.Name); var len = buffer.ReadUShort(); //TODO:这里默认generic类型就是List类型!需要扩展的时候要进行修改! var constructor = type.GetConstructors()[0]; var tType = type.GetGenericArguments()[0]; var list = constructor.Invoke(new object[0]) as System.Collections.IList; for (int j = 0; j < len; j++) { list.Add(GetObject(tType, buffer)); } return(list); } else if (type.IsArray) { // UnityEngine.Debug.Log("arr:" + type.Name); var len = buffer.ReadUShort(); var constructor = type.GetConstructors()[0]; var arr = (Array)constructor.Invoke(new object[] { len }); if (len == 0) { return(arr); } var tType = Type.GetType(type.FullName.Replace("[]", string.Empty)); for (int j = 0; j < len; j++) { arr.SetValue(GetObject(tType, buffer), j); } return(arr); } else if (type.IsValueType) { // UnityEngine.Debug.Log("value type:" + type.FullName); if (type.Name.EndsWith("Rect")) { return(new UnityEngine.Rect(buffer.ReadFloat(), buffer.ReadFloat(), buffer.ReadFloat(), buffer.ReadFloat())); } else if (type.Name.EndsWith("Vector2")) { return(new UnityEngine.Vector2(buffer.ReadFloat(), buffer.ReadFloat())); } else if (type.Name.EndsWith("Vector3")) { return(new UnityEngine.Vector3(buffer.ReadFloat(), buffer.ReadFloat(), buffer.ReadFloat())); } else if (type.Name.EndsWith("RectInt")) { return(new UnityEngine.RectInt(buffer.ReadInt(), buffer.ReadInt(), buffer.ReadInt(), buffer.ReadInt())); } } else { var data = type.GetConstructors()[0].Invoke(constructorParams); var tProps = type.GetProperties(); FillObject(data, tProps, buffer); return(data); } } return(null); }
override public void Setup_BeforeAdd(ByteBuffer buffer, int beginPos) { base.Setup_BeforeAdd(buffer, beginPos); buffer.Seek(beginPos, 5); int type = buffer.ReadByte(); if (type != 0) { int lineSize = buffer.ReadInt(); Color lineColor = buffer.ReadColor(); Color fillColor = buffer.ReadColor(); bool roundedRect = buffer.ReadBool(); Vector4 cornerRadius = new Vector4(); if (roundedRect) { for (int i = 0; i < 4; i++) { cornerRadius[i] = buffer.ReadFloat(); } } if (type == 1) { if (roundedRect) { _shape.DrawRoundRect(lineSize, lineColor, fillColor, cornerRadius.x, cornerRadius.y, cornerRadius.z, cornerRadius.w); } else { _shape.DrawRect(lineSize, lineColor, fillColor); } } else if (type == 2) { _shape.DrawEllipse(lineSize, fillColor, lineColor, fillColor, 0, 360); } else if (type == 3) { int cnt = buffer.ReadShort() / 2; Vector2[] points = new Vector2[cnt]; for (int i = 0; i < cnt; i++) { points[i].Set(buffer.ReadFloat(), buffer.ReadFloat()); } _shape.DrawPolygon(points, fillColor, lineSize, lineColor); } else if (type == 4) { int sides = buffer.ReadShort(); float startAngle = buffer.ReadFloat(); int cnt = buffer.ReadShort(); float[] distances = null; if (cnt > 0) { distances = new float[cnt]; for (int i = 0; i < cnt; i++) { distances[i] = buffer.ReadFloat(); } } _shape.DrawRegularPolygon(sides, lineSize, fillColor, lineColor, fillColor, startAngle, distances); } } originColor = color; }
public void Setup(ByteBuffer buffer) { int beginPos = buffer.position; buffer.Seek(beginPos, 0); name = buffer.ReadS(); autoRadioGroupDepth = buffer.ReadBool(); buffer.Seek(beginPos, 1); int cnt = buffer.ReadShort(); _pageIds.Capacity = cnt; _pageNames.Capacity = cnt; for (int i = 0; i < cnt; i++) { _pageIds.Add(buffer.ReadS()); _pageNames.Add(buffer.ReadS()); } int homePageIndex = 0; if (buffer.version >= 2) { int homePageType = buffer.ReadByte(); switch (homePageType) { case 1: homePageIndex = buffer.ReadShort(); break; case 2: homePageIndex = _pageNames.IndexOf(UIPackage.branch); if (homePageIndex == -1) { homePageIndex = 0; } break; case 3: homePageIndex = _pageNames.IndexOf(UIPackage.GetVar(buffer.ReadS())); if (homePageIndex == -1) { homePageIndex = 0; } break; } } buffer.Seek(beginPos, 2); cnt = buffer.ReadShort(); if (cnt > 0) { if (_actions == null) { _actions = new List <ControllerAction>(cnt); } for (int i = 0; i < cnt; i++) { int nextPos = buffer.ReadShort(); nextPos += buffer.position; ControllerAction action = ControllerAction.CreateAction((ControllerAction.ActionType)buffer.ReadByte()); action.Setup(buffer); _actions.Add(action); buffer.position = nextPos; } } if (parent != null && _pageIds.Count > 0) { _selectedIndex = homePageIndex; } else { _selectedIndex = -1; } }
void LoadFont(PackageItem item) { BitmapFont font = new BitmapFont(item); item.bitmapFont = font; ByteBuffer buffer = item.rawData; buffer.Seek(0, 0); bool ttf = buffer.ReadBool(); font.canTint = buffer.ReadBool(); font.resizable = buffer.ReadBool(); font.hasChannel = buffer.ReadBool(); int fontSize = buffer.ReadInt(); int xadvance = buffer.ReadInt(); int lineHeight = buffer.ReadInt(); float texScaleX = 1; float texScaleY = 1; NTexture mainTexture = null; AtlasSprite mainSprite = null; if (ttf && _sprites.TryGetValue(item.id, out mainSprite)) { mainTexture = (NTexture)GetItemAsset(mainSprite.atlas); texScaleX = mainTexture.root.uvRect.width / mainTexture.width; texScaleY = mainTexture.root.uvRect.height / mainTexture.height; } buffer.Seek(0, 1); BitmapFont.BMGlyph bg; int cnt = buffer.ReadInt(); for (int i = 0; i < cnt; i++) { int nextPos = buffer.ReadShort(); nextPos += buffer.position; bg = new BitmapFont.BMGlyph(); char ch = buffer.ReadChar(); font.AddChar(ch, bg); string img = buffer.ReadS(); int bx = buffer.ReadInt(); int by = buffer.ReadInt(); bg.offsetX = buffer.ReadInt(); bg.offsetY = buffer.ReadInt(); bg.width = buffer.ReadInt(); bg.height = buffer.ReadInt(); bg.advance = buffer.ReadInt(); bg.channel = buffer.ReadByte(); if (bg.channel == 1) { bg.channel = 3; } else if (bg.channel == 2) { bg.channel = 2; } else if (bg.channel == 3) { bg.channel = 1; } if (ttf) { if (mainSprite.rotated) { bg.uv[0] = new Vector2((float)(by + bg.height + mainSprite.rect.x) * texScaleX, 1 - (float)(mainSprite.rect.yMax - bx) * texScaleY); bg.uv[1] = new Vector2(bg.uv[0].x - (float)bg.height * texScaleX, bg.uv[0].y); bg.uv[2] = new Vector2(bg.uv[1].x, bg.uv[0].y + (float)bg.width * texScaleY); bg.uv[3] = new Vector2(bg.uv[0].x, bg.uv[2].y); } else { bg.uv[0] = new Vector2((float)(bx + mainSprite.rect.x) * texScaleX, 1 - (float)(by + bg.height + mainSprite.rect.y) * texScaleY); bg.uv[1] = new Vector2(bg.uv[0].x, bg.uv[0].y + (float)bg.height * texScaleY); bg.uv[2] = new Vector2(bg.uv[0].x + (float)bg.width * texScaleX, bg.uv[1].y); bg.uv[3] = new Vector2(bg.uv[2].x, bg.uv[0].y); } bg.lineHeight = lineHeight; } else { PackageItem charImg; if (_itemsById.TryGetValue(img, out charImg)) { GetItemAsset(charImg); Rect uvRect = charImg.texture.uvRect; bg.uv[0] = uvRect.position; bg.uv[1] = new Vector2(uvRect.xMin, uvRect.yMax); bg.uv[2] = new Vector2(uvRect.xMax, uvRect.yMax); bg.uv[3] = new Vector2(uvRect.xMax, uvRect.yMin); if (charImg.texture.rotated) { NGraphics.RotateUV(bg.uv, ref uvRect); } bg.width = charImg.texture.width; bg.height = charImg.texture.height; if (mainTexture == null) { mainTexture = charImg.texture.root; } } if (fontSize == 0) { fontSize = bg.height; } if (bg.advance == 0) { if (xadvance == 0) { bg.advance = bg.offsetX + bg.width; } else { bg.advance = xadvance; } } bg.lineHeight = bg.offsetY < 0 ? bg.height : (bg.offsetY + bg.height); if (bg.lineHeight < font.size) { bg.lineHeight = font.size; } } buffer.position = nextPos; } font.size = fontSize; font.mainTexture = mainTexture; if (!font.hasChannel) { font.shader = ShaderConfig.imageShader; } }
public object Read(ByteBuffer buffer, bool peek = false) => buffer.ReadShort(peek);
/// <summary> /// /// </summary> /// <param name="clientid"></param> /// <param name="block"></param> private void ProcessSetHisData(string clientid, ByteBuffer block) { var id = block.ReadInt(); var count = block.ReadInt(); var typ = block.ReadByte(); //int timedu = block.ReadInt(); var service = ServiceLocator.Locator.Resolve <ITagHisValueProduct>(); //List<TagValue> tagvalues = new List<TagValue>(); switch (typ) { case (byte)TagType.Bool: for (int i = 0; i < count; i++) { var dt = DateTime.FromBinary(block.ReadLong()); var bval = block.ReadByte(); var qa = block.ReadByte(); service.SetTagHisValue(id, dt, bval, qa); //service.SetTagHisValue(id,new TagValue() { Quality = qa, Time = dt, Value = bval }); } break; case (byte)TagType.Byte: for (int i = 0; i < count; i++) { var dt = DateTime.FromBinary(block.ReadLong()); var bval = block.ReadByte(); var qa = block.ReadByte(); service.SetTagHisValue(id, dt, bval, qa); // service.SetTagHisValue(id, new TagValue() { Quality = qa, Time = dt, Value = bval }); } break; case (byte)TagType.Short: for (int i = 0; i < count; i++) { var dt = DateTime.FromBinary(block.ReadLong()); var bval = block.ReadShort(); var qa = block.ReadByte(); service.SetTagHisValue(id, dt, bval, qa); // service.SetTagHisValue(id, new TagValue() { Quality = qa, Time = dt, Value = bval }); } break; case (byte)TagType.UShort: for (int i = 0; i < count; i++) { var dt = DateTime.FromBinary(block.ReadLong()); var bval = block.ReadUShort(); var qa = block.ReadByte(); service.SetTagHisValue(id, dt, bval, qa); // service.SetTagHisValue(id, new TagValue() { Quality = qa, Time = dt, Value = bval }); } break; case (byte)TagType.Int: for (int i = 0; i < count; i++) { var dt = DateTime.FromBinary(block.ReadLong()); var bval = block.ReadInt(); var qa = block.ReadByte(); service.SetTagHisValue(id, dt, bval, qa); // service.SetTagHisValue(id, new TagValue() { Quality = qa, Time = dt, Value = bval }); } break; case (byte)TagType.UInt: for (int i = 0; i < count; i++) { var dt = DateTime.FromBinary(block.ReadLong()); var bval = block.ReadUInt(); var qa = block.ReadByte(); service.SetTagHisValue(id, dt, bval, qa); //service.SetTagHisValue(id, new TagValue() { Quality = qa, Time = dt, Value = bval }); } break; case (byte)TagType.Long: for (int i = 0; i < count; i++) { var dt = DateTime.FromBinary(block.ReadLong()); var bval = block.ReadLong(); var qa = block.ReadByte(); service.SetTagHisValue(id, dt, bval, qa); // service.SetTagHisValue(id, new TagValue() { Quality = qa, Time = dt, Value = bval }); } break; case (byte)TagType.ULong: for (int i = 0; i < count; i++) { var dt = DateTime.FromBinary(block.ReadLong()); var bval = (ulong)block.ReadLong(); var qa = block.ReadByte(); service.SetTagHisValue(id, dt, bval, qa); //service.SetTagHisValue(id, new TagValue() { Quality = qa, Time = dt, Value = bval }); } break; case (byte)TagType.Float: for (int i = 0; i < count; i++) { var dt = DateTime.FromBinary(block.ReadLong()); var bval = block.ReadFloat(); var qa = block.ReadByte(); service.SetTagHisValue(id, dt, bval, qa); //service.SetTagHisValue(id, new TagValue() { Quality = qa, Time = dt, Value = bval }); } break; case (byte)TagType.Double: for (int i = 0; i < count; i++) { var dt = DateTime.FromBinary(block.ReadLong()); var bval = block.ReadDouble(); var qa = block.ReadByte(); service.SetTagHisValue(id, dt, bval, qa); //service.SetTagHisValue(id, new TagValue() { Quality = qa, Time = dt, Value = bval }); } break; case (byte)TagType.String: for (int i = 0; i < count; i++) { var dt = DateTime.FromBinary(block.ReadLong()); var bval = block.ReadString(); var qa = block.ReadByte(); service.SetTagHisValue(id, dt, bval, qa); //service.SetTagHisValue(id, new TagValue() { Quality = qa, Time = dt, Value = bval }); } break; case (byte)TagType.DateTime: for (int i = 0; i < count; i++) { var dt = DateTime.FromBinary(block.ReadLong()); var bval = DateTime.FromBinary(block.ReadLong()); var qa = block.ReadByte(); service.SetTagHisValue(id, dt, bval, qa); // service.SetTagHisValue(id, new TagValue() { Quality = qa, Time = dt, Value = bval }); } break; case (byte)TagType.IntPoint: for (int i = 0; i < count; i++) { var dt = DateTime.FromBinary(block.ReadLong()); var bval1 = block.ReadInt(); var bval2 = block.ReadInt(); var qa = block.ReadByte(); service.SetTagHisValue(id, dt, qa, bval1, bval2); //service.SetTagHisValue(id, new TagValue() { Quality = qa, Time = dt, Value = bval }); } break; case (byte)TagType.UIntPoint: for (int i = 0; i < count; i++) { var dt = DateTime.FromBinary(block.ReadLong()); //var bval = new UIntPointData() { X = block.ReadUnsignedInt(), Y = block.ReadUnsignedInt() }; var bval1 = block.ReadUInt(); var bval2 = block.ReadUInt(); var qa = block.ReadByte(); service.SetTagHisValue(id, dt, qa, bval1, bval2); //service.SetTagHisValue(id, new TagValue() { Quality = qa, Time = dt, Value = bval }); } break; case (byte)TagType.IntPoint3: for (int i = 0; i < count; i++) { var dt = DateTime.FromBinary(block.ReadLong()); // var bval = new IntPoint3Data() { X = block.ReadInt(), Y = block.ReadInt(),Z=block.ReadInt() }; var bval1 = block.ReadInt(); var bval2 = block.ReadInt(); var bval3 = block.ReadInt(); var qa = block.ReadByte(); service.SetTagHisValue(id, dt, qa, bval1, bval2, bval3); // service.SetTagHisValue(id, new TagValue() { Quality = qa, Time = dt, Value = bval }); } break; case (byte)TagType.UIntPoint3: for (int i = 0; i < count; i++) { var dt = DateTime.FromBinary(block.ReadLong()); // var bval = new UIntPoint3Data() { X = block.ReadUnsignedInt(), Y = block.ReadUnsignedInt(), Z = block.ReadUnsignedInt() }; var bval1 = block.ReadUInt(); var bval2 = block.ReadUInt(); var bval3 = block.ReadUInt(); var qa = block.ReadByte(); service.SetTagHisValue(id, dt, qa, bval1, bval2, bval3); //service.SetTagHisValue(id, new TagValue() { Quality = qa, Time = dt, Value = bval }); } break; case (byte)TagType.LongPoint: for (int i = 0; i < count; i++) { var dt = DateTime.FromBinary(block.ReadLong()); // var bval = new LongPointData() { X = block.ReadLong(), Y = block.ReadLong() }; var bval1 = block.ReadLong(); var bval2 = block.ReadLong(); var qa = block.ReadByte(); service.SetTagHisValue(id, dt, qa, bval1, bval2); //service.SetTagHisValue(id, new TagValue() { Quality = qa, Time = dt, Value = bval }); } break; case (byte)TagType.ULongPoint: for (int i = 0; i < count; i++) { var dt = DateTime.FromBinary(block.ReadLong()); // var bval = new ULongPointData() { X = (ulong)block.ReadLong(), Y = (ulong)block.ReadLong() }; var bval1 = (ulong)block.ReadLong(); var bval2 = (ulong)block.ReadLong(); var qa = block.ReadByte(); service.SetTagHisValue(id, dt, qa, bval1, bval2); } break; case (byte)TagType.LongPoint3: for (int i = 0; i < count; i++) { var dt = DateTime.FromBinary(block.ReadLong()); // var bval = new LongPoint3Data() { X = block.ReadLong(), Y = block.ReadLong(),Z=block.ReadLong() }; var bval1 = block.ReadLong(); var bval2 = block.ReadLong(); var bval3 = block.ReadLong(); var qa = block.ReadByte(); service.SetTagHisValue(id, dt, qa, bval1, bval2, bval3); } break; case (byte)TagType.ULongPoint3: for (int i = 0; i < count; i++) { var dt = DateTime.FromBinary(block.ReadLong()); // var bval = new ULongPoint3Data() { X = (ulong)block.ReadLong(), Y = (ulong)block.ReadLong(), Z = (ulong)block.ReadLong() }; var bval1 = (ulong)block.ReadLong(); var bval2 = (ulong)block.ReadLong(); var bval3 = (ulong)block.ReadLong(); var qa = block.ReadByte(); service.SetTagHisValue(id, dt, qa, bval1, bval2, bval3); } break; } //service.SetTagHisValue(id, tagvalues); Parent.AsyncCallback(clientid, ToByteBuffer(APIConst.HisValueFun, (byte)1)); }
/// <summary> /// /// </summary> /// <param name="clientid"></param> /// <param name="block"></param> private void ProcessSetRealData(string clientid, ByteBuffer block) { var service = ServiceLocator.Locator.Resolve <IRealTagConsumer>(); int count = block.ReadInt(); for (int i = 0; i < count; i++) { var id = block.ReadInt(); byte typ = block.ReadByte(); object value = null; switch (typ) { case (byte)TagType.Bool: value = block.ReadByte(); break; case (byte)TagType.Byte: value = block.ReadByte(); break; case (byte)TagType.Short: value = block.ReadShort(); break; case (byte)TagType.UShort: value = (ushort)block.ReadShort(); break; case (byte)TagType.Int: value = block.ReadInt(); break; case (byte)TagType.UInt: value = (uint)block.ReadInt(); break; case (byte)TagType.Long: value = block.ReadLong(); break; case (byte)TagType.ULong: value = (ulong)block.ReadLong(); break; case (byte)TagType.Float: value = block.ReadFloat(); break; case (byte)TagType.Double: value = block.ReadDouble(); break; case (byte)TagType.String: value = block.ReadString(); break; case (byte)TagType.DateTime: var tick = block.ReadLong(); value = new DateTime(tick); break; case (byte)TagType.IntPoint: value = new IntPointData(block.ReadInt(), block.ReadInt()); break; case (byte)TagType.UIntPoint: value = new UIntPointData(block.ReadInt(), block.ReadInt()); break; case (byte)TagType.IntPoint3: value = new IntPoint3Data(block.ReadInt(), block.ReadInt(), block.ReadInt()); break; case (byte)TagType.UIntPoint3: value = new UIntPoint3Data(block.ReadInt(), block.ReadInt(), block.ReadInt()); break; case (byte)TagType.LongPoint: value = new LongPointData(block.ReadLong(), block.ReadLong()); break; case (byte)TagType.ULongPoint: value = new ULongPointData(block.ReadLong(), block.ReadLong()); break; case (byte)TagType.LongPoint3: value = new LongPoint3Data(block.ReadLong(), block.ReadLong(), block.ReadLong()); break; case (byte)TagType.ULongPoint3: value = new ULongPoint3Data(block.ReadLong(), block.ReadLong(), block.ReadLong()); break; } service.SetTagValueForConsumer(id, value); } Parent.AsyncCallback(clientid, ToByteBuffer(ApiFunConst.RealDataSetFun, (byte)1)); }
bool LoadPackage(ByteBuffer buffer) { if (buffer.ReadUint() != 0x46475549) { throw new Exception("FairyGUI: old package format found in '" + assetPath + "'"); } buffer.version = buffer.ReadInt(); buffer.ReadBool(); //compressed id = buffer.ReadString(); name = buffer.ReadString(); if (_packageInstById.ContainsKey(id) && name != _packageInstById[id].name) { Log.Warning("FairyGUI: Package id conflicts, '" + name + "' and '" + _packageInstById[id].name + "'"); return(false); } buffer.Skip(20); int indexTablePos = buffer.position; int cnt; buffer.Seek(indexTablePos, 4); cnt = buffer.ReadInt(); string[] stringTable = new string[cnt]; for (int i = 0; i < cnt; i++) { stringTable[i] = buffer.ReadString(); } buffer.stringTable = stringTable; if (buffer.Seek(indexTablePos, 5)) { cnt = buffer.ReadInt(); for (int i = 0; i < cnt; i++) { int index = buffer.ReadUshort(); int len = buffer.ReadInt(); stringTable[index] = buffer.ReadString(len); } } buffer.Seek(indexTablePos, 1); PackageItem pi; cnt = buffer.ReadShort(); for (int i = 0; i < cnt; i++) { int nextPos = buffer.ReadInt(); nextPos += buffer.position; pi = new PackageItem(); pi.owner = this; pi.type = (PackageItemType)buffer.ReadByte(); pi.id = buffer.ReadS(); pi.name = buffer.ReadS(); buffer.ReadS(); //path pi.file = buffer.ReadS(); pi.exported = buffer.ReadBool(); pi.width = buffer.ReadInt(); pi.height = buffer.ReadInt(); switch (pi.type) { case PackageItemType.Image: { pi.objectType = ObjectType.Image; int scaleOption = buffer.ReadByte(); if (scaleOption == 1) { Rectangle rect = new Rectangle(); rect.X = buffer.ReadInt(); rect.Y = buffer.ReadInt(); rect.Width = buffer.ReadInt(); rect.Height = buffer.ReadInt(); pi.scale9Grid = rect; pi.tileGridIndice = buffer.ReadInt(); } else if (scaleOption == 2) { pi.scaleByTile = true; } buffer.ReadBool(); //smoothing break; } case PackageItemType.MovieClip: { buffer.ReadBool(); //smoothing pi.objectType = ObjectType.MovieClip; pi.rawData = buffer.ReadBuffer(); break; } case PackageItemType.Font: { pi.rawData = buffer.ReadBuffer(); break; } case PackageItemType.Component: { int extension = buffer.ReadByte(); if (extension > 0) { pi.objectType = (ObjectType)extension; } else { pi.objectType = ObjectType.Component; } pi.rawData = buffer.ReadBuffer(); UIObjectFactory.ResolvePackageItemExtension(pi); break; } case PackageItemType.Atlas: case PackageItemType.Sound: case PackageItemType.Misc: { pi.file = assetPath + "_" + Path.GetFileNameWithoutExtension(pi.file); break; } } _items.Add(pi); _itemsById[pi.id] = pi; if (pi.name != null) { _itemsByName[pi.name] = pi; } buffer.position = nextPos; } buffer.Seek(indexTablePos, 2); cnt = buffer.ReadShort(); for (int i = 0; i < cnt; i++) { int nextPos = buffer.ReadShort(); nextPos += buffer.position; string itemId = buffer.ReadS(); pi = _itemsById[buffer.ReadS()]; AtlasSprite sprite = new AtlasSprite(); sprite.atlas = pi; sprite.rect.X = buffer.ReadInt(); sprite.rect.Y = buffer.ReadInt(); sprite.rect.Width = buffer.ReadInt(); sprite.rect.Height = buffer.ReadInt(); sprite.rotated = buffer.ReadBool(); _sprites[itemId] = sprite; buffer.position = nextPos; } if (buffer.Seek(indexTablePos, 3)) { cnt = buffer.ReadShort(); for (int i = 0; i < cnt; i++) { int nextPos = buffer.ReadInt(); nextPos += buffer.position; if (_itemsById.TryGetValue(buffer.ReadS(), out pi)) { if (pi.type == PackageItemType.Image) { pi.pixelHitTestData = new PixelHitTestData(); pi.pixelHitTestData.Load(buffer); } } buffer.position = nextPos; } } buffer.Seek(indexTablePos, 0); cnt = buffer.ReadShort(); _dependencies = new Dictionary <string, string> [cnt]; for (int i = 0; i < cnt; i++) { Dictionary <string, string> kv = new Dictionary <string, string>(); kv.Add("id", buffer.ReadS()); kv.Add("name", buffer.ReadS()); _dependencies[i] = kv; } return(true); }
public void Read(ByteBuffer buf) { Length = buf.ReadShort(); Data = buf.ReadByteArray(); Percent = buf.ReadByte(); }
public static void TranslateComponent(PackageItem item) { if (TranslationHelper.strings == null) { return; } Dictionary <string, string> strings; if (!TranslationHelper.strings.TryGetValue(item.owner.id + item.id, out strings)) { return; } string elementId, value; ByteBuffer buffer = item.rawData; buffer.Seek(0, 2); int childCount = buffer.ReadShort(); for (int i = 0; i < childCount; i++) { int dataLen = buffer.ReadShort(); int curPos = buffer.position; buffer.Seek(curPos, 0); ObjectType baseType = (ObjectType)buffer.ReadByte(); ObjectType type = baseType; buffer.Skip(4); elementId = buffer.ReadS(); if (type == ObjectType.Component) { if (buffer.Seek(curPos, 6)) { type = (ObjectType)buffer.ReadByte(); } } buffer.Seek(curPos, 1); if (strings.TryGetValue(elementId + "-tips", out value)) { buffer.WriteS(value); } buffer.Seek(curPos, 2); int gearCnt = buffer.ReadShort(); for (int j = 0; j < gearCnt; j++) { int nextPos = buffer.ReadUshort(); nextPos += buffer.position; if (buffer.ReadByte() == 6) //gearText { buffer.Skip(2); //controller int valueCnt = buffer.ReadShort(); for (int k = 0; k < valueCnt; k++) { string page = buffer.ReadS(); if (page != null) { if (strings.TryGetValue(elementId + "-texts_" + k, out value)) { buffer.WriteS(value); } else { buffer.Skip(2); } } } if (buffer.ReadBool() && strings.TryGetValue(elementId + "-texts_def", out value)) { buffer.WriteS(value); } } buffer.position = nextPos; } if (baseType == ObjectType.Component && buffer.version >= 2) { buffer.Seek(curPos, 4); buffer.Skip(2); //pageController buffer.Skip(4 * buffer.ReadShort()); int cpCount = buffer.ReadShort(); for (int k = 0; k < cpCount; k++) { string target = buffer.ReadS(); int propertyId = buffer.ReadShort(); if (propertyId == 0 && strings.TryGetValue(elementId + "-cp-" + target, out value)) { buffer.WriteS(value); } else { buffer.Skip(2); } } } switch (type) { case ObjectType.Text: case ObjectType.RichText: case ObjectType.InputText: { if (strings.TryGetValue(elementId, out value)) { buffer.Seek(curPos, 6); buffer.WriteS(value); } if (strings.TryGetValue(elementId + "-prompt", out value)) { buffer.Seek(curPos, 4); buffer.WriteS(value); } break; } case ObjectType.List: case ObjectType.Tree: { buffer.Seek(curPos, 8); buffer.Skip(2); int itemCount = buffer.ReadShort(); for (int j = 0; j < itemCount; j++) { int nextPos = buffer.ReadUshort(); nextPos += buffer.position; buffer.Skip(2); //url if (type == ObjectType.Tree) { buffer.Skip(2); } //title if (strings.TryGetValue(elementId + "-" + j, out value)) { buffer.WriteS(value); } else { buffer.Skip(2); } //selected title if (strings.TryGetValue(elementId + "-" + j + "-0", out value)) { buffer.WriteS(value); } else { buffer.Skip(2); } if (buffer.version >= 2) { buffer.Skip(6); buffer.Skip(buffer.ReadShort() * 4); //controllers int cpCount = buffer.ReadShort(); for (int k = 0; k < cpCount; k++) { string target = buffer.ReadS(); int propertyId = buffer.ReadShort(); if (propertyId == 0 && strings.TryGetValue(elementId + "-" + j + "-" + target, out value)) { buffer.WriteS(value); } else { buffer.Skip(2); } } } buffer.position = nextPos; } break; } case ObjectType.Label: { if (buffer.Seek(curPos, 6) && (ObjectType)buffer.ReadByte() == type) { if (strings.TryGetValue(elementId, out value)) { buffer.WriteS(value); } else { buffer.Skip(2); } buffer.Skip(2); if (buffer.ReadBool()) { buffer.Skip(4); } buffer.Skip(4); if (buffer.ReadBool() && strings.TryGetValue(elementId + "-prompt", out value)) { buffer.WriteS(value); } } break; } case ObjectType.Button: { if (buffer.Seek(curPos, 6) && (ObjectType)buffer.ReadByte() == type) { if (strings.TryGetValue(elementId, out value)) { buffer.WriteS(value); } else { buffer.Skip(2); } if (strings.TryGetValue(elementId + "-0", out value)) { buffer.WriteS(value); } } break; } case ObjectType.ComboBox: { if (buffer.Seek(curPos, 6) && (ObjectType)buffer.ReadByte() == type) { int itemCount = buffer.ReadShort(); for (int j = 0; j < itemCount; j++) { int nextPos = buffer.ReadUshort(); nextPos += buffer.position; if (strings.TryGetValue(elementId + "-" + j, out value)) { buffer.WriteS(value); } buffer.position = nextPos; } if (strings.TryGetValue(elementId, out value)) { buffer.WriteS(value); } } break; } } buffer.position = curPos + dataLen; } }
public void Read(ByteBuffer buf) { SizeX = buf.ReadShort(); SizeZ = buf.ReadShort(); SizeY = buf.ReadShort(); }
public void Setup(ByteBuffer buffer) { _controller = _owner.parent.GetControllerAt(buffer.ReadShort()); Init(); int cnt = buffer.ReadShort(); if (this is GearDisplay) { ((GearDisplay)this).pages = buffer.ReadSArray(cnt); } else if (this is GearDisplay2) { ((GearDisplay2)this).pages = buffer.ReadSArray(cnt); } else { for (int i = 0; i < cnt; i++) { string page = buffer.ReadS(); if (page == null) { continue; } AddStatus(page, buffer); } if (buffer.ReadBool()) { AddStatus(null, buffer); } } if (buffer.ReadBool()) { _tweenConfig = new GearTweenConfig(); _tweenConfig.easeType = (EaseType)buffer.ReadByte(); _tweenConfig.duration = buffer.ReadFloat(); _tweenConfig.delay = buffer.ReadFloat(); } if (buffer.version >= 2) { if (this is GearXY) { if (buffer.ReadBool()) { ((GearXY)this).positionsInPercent = true; for (int i = 0; i < cnt; i++) { string page = buffer.ReadS(); if (page == null) { continue; } ((GearXY)this).AddExtStatus(page, buffer); } if (buffer.ReadBool()) { ((GearXY)this).AddExtStatus(null, buffer); } } } else if (this is GearDisplay2) { ((GearDisplay2)this).condition = buffer.ReadByte(); } } if (buffer.version >= 4 && _tweenConfig != null && _tweenConfig.easeType == EaseType.Custom) { _tweenConfig.customEase = new CustomEase(); _tweenConfig.customEase.Create(buffer.ReadPath()); } }
public void Read(ByteBuffer buf) { AppName = buf.ReadString(); ExtensionCount = buf.ReadShort(); }
override protected void ReadItems(ByteBuffer buffer) { int nextPos; string str; bool isFolder; GTreeNode lastNode = null; int level; int prevLevel = 0; int cnt = buffer.ReadShort(); for (int i = 0; i < cnt; i++) { nextPos = buffer.ReadShort(); nextPos += buffer.position; str = buffer.ReadS(); if (str == null) { str = this.defaultItem; if (str == null) { buffer.position = nextPos; continue; } } isFolder = buffer.ReadBool(); level = buffer.ReadByte(); GTreeNode node = new GTreeNode(isFolder, str); node.expanded = true; if (i == 0) { _rootNode.AddChild(node); } else { if (level > prevLevel) { lastNode.AddChild(node); } else if (level < prevLevel) { for (int j = level; j <= prevLevel; j++) { lastNode = lastNode.parent; } lastNode.AddChild(node); } else { lastNode.parent.AddChild(node); } } lastNode = node; prevLevel = level; SetupItem(buffer, node.cell); buffer.position = nextPos; } }
private void ProcessSingleBufferData(ByteBuffer block) { if (block == null) { return; } var count = block.ReadInt(); for (int i = 0; i < count; i++) { var vid = block.ReadInt(); if (vid < 0) { Debug.Print("Invaild value!"); } var typ = block.ReadByte(); object value = null; switch (typ) { case (byte)TagType.Bool: value = block.ReadByte(); break; case (byte)TagType.Byte: value = block.ReadByte(); break; case (byte)TagType.Short: value = block.ReadShort(); break; case (byte)TagType.UShort: value = (ushort)block.ReadShort(); break; case (byte)TagType.Int: value = block.ReadInt(); break; case (byte)TagType.UInt: value = Convert.ToUInt32(block.ReadInt()); break; case (byte)TagType.Long: value = block.ReadLong(); break; case (byte)TagType.ULong: value = (ulong)block.ReadLong(); break; case (byte)TagType.Float: value = block.ReadFloat(); break; case (byte)TagType.Double: value = block.ReadDouble(); break; case (byte)TagType.String: value = ReadString(block); break; case (byte)TagType.DateTime: var tick = block.ReadLong(); value = new DateTime(tick); break; case (byte)TagType.IntPoint: value = new IntPointData(block.ReadInt(), block.ReadInt()); break; case (byte)TagType.UIntPoint: value = new UIntPointData(block.ReadInt(), block.ReadInt()); break; case (byte)TagType.IntPoint3: value = new IntPoint3Data(block.ReadInt(), block.ReadInt(), block.ReadInt()); break; case (byte)TagType.UIntPoint3: value = new UIntPoint3Data(block.ReadInt(), block.ReadInt(), block.ReadInt()); break; case (byte)TagType.LongPoint: value = new LongPointData(block.ReadLong(), block.ReadLong()); break; case (byte)TagType.ULongPoint: value = new ULongPointData(block.ReadLong(), block.ReadLong()); break; case (byte)TagType.LongPoint3: value = new LongPoint3Data(block.ReadLong(), block.ReadLong(), block.ReadLong()); break; case (byte)TagType.ULongPoint3: value = new ULongPoint3Data(block.ReadLong(), block.ReadLong(), block.ReadLong()); break; } var time = new DateTime(block.ReadLong()); var qua = block.ReadByte(); mServier.SetTagValue(vid, ref value, time, qua); } block.UnlockAndReturn(); }