当前位置: 首页>>代码示例>>C#>>正文


C# MemoryStream.ReadInt16方法代码示例

本文整理汇总了C#中System.IO.MemoryStream.ReadInt16方法的典型用法代码示例。如果您正苦于以下问题:C# MemoryStream.ReadInt16方法的具体用法?C# MemoryStream.ReadInt16怎么用?C# MemoryStream.ReadInt16使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在System.IO.MemoryStream的用法示例。


在下文中一共展示了MemoryStream.ReadInt16方法的10个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。

示例1: OnGetData

        private void OnGetData(GetDataEventArgs e)
        {
            if (e.MsgID != PacketTypes.NpcStrike)
            {
                return;
            }

            using (MemoryStream data = new MemoryStream(e.Msg.readBuffer, e.Index, e.Length - 1))
            {
                var id = data.ReadInt16();
                var dmg = data.ReadInt16();
                data.ReadSingle();
                data.ReadByte();
                data.ReadByte();

                if (id < 0 || id > Main.maxNPCs)
                {
                    return;
                }

                NPC npc = Main.npc[id];
                if (npc == null)
                {
                    return;
                }

                if (npc.type != NPCID.KingSlime || !npc.active)
                {
                    return;
                }
                if (dmg <= 0)
                {
                    return;
                }

                if (Main.rand == null)
                {
                    Main.rand = new Random((int)DateTime.Now.Ticks);
                }

                for (int i = 0; i < 20; i++)
                {
                    int amt = 4 + Main.rand.Next(1, 5);

                    for (int j = 0; j < amt; j++)
                    {
                        int x = (int)npc.position.X + Main.rand.Next(-80, 81);
                        int y = (int)npc.position.Y + Main.rand.Next(-80, 81);
                        NPC.NewNPC(x, y, NPCID.BlueSlime, 0);
                    }
                }
            }
        }
开发者ID:WhiteXZ,项目名称:Slime2Infinity,代码行数:53,代码来源:Plugin.cs

示例2: ReadInt16

        public void ReadInt16()
        {
            Int16 testValue = 1024;
            using( var stream = new MemoryStream() )
            {
                var bytes = BitConverter.GetBytes( testValue );
                stream.Write( bytes, 0, bytes.Length );
                stream.Seek( 0, SeekOrigin.Begin );

                var value = stream.ReadInt16();
                Assert.AreEqual( value, testValue );
            }
        }
开发者ID:akabekobeko,项目名称:Owl,代码行数:13,代码来源:StreamExtentionsTest.cs

示例3: DecodeImaAdpcmData

        public byte[] DecodeImaAdpcmData()
        {
            var s = new MemoryStream(RawOutput);

            var numBlocks = DataSize / BlockAlign;
            var blockDataSize = BlockAlign - (Channels * 4);
            var outputSize = UncompressedSize * Channels * 2;

            var outOffset = 0;
            var output = new byte[outputSize];

            var predictor = new int[Channels];
            var index = new int[Channels];

            // Decode each block of IMA ADPCM data in RawOutput
            for (var block = 0; block < numBlocks; block++)
            {
                // Each block starts with a initial state per-channel
                for (var c = 0; c < Channels; c++)
                {
                    predictor[c] = s.ReadInt16();
                    index[c] = s.ReadUInt8();
                    /* unknown/reserved */ s.ReadUInt8();

                    // Output first sample from input
                    output[outOffset++] = (byte)predictor[c];
                    output[outOffset++] = (byte)(predictor[c] >> 8);

                    if (outOffset >= outputSize)
                        return output;
                }

                // Decode and output remaining data in this block
                var blockOffset = 0;
                while (blockOffset < blockDataSize)
                {
                    for (var c = 0; c < Channels; c++)
                    {
                        // Decode 4 bytes (to 16 bytes of output) per channel
                        var chunk = s.ReadBytes(4);
                        var decoded = ImaAdpcmReader.LoadImaAdpcmSound(chunk, ref index[c], ref predictor[c]);

                        // Interleave output, one sample per channel
                        var outOffsetChannel = outOffset + (2 * c);
                        for (var i = 0; i < decoded.Length; i += 2)
                        {
                            var outOffsetSample = outOffsetChannel + i;
                            if (outOffsetSample >= outputSize)
                                return output;

                            output[outOffsetSample] = decoded[i];
                            output[outOffsetSample + 1] = decoded[i + 1];
                            outOffsetChannel += 2 * (Channels - 1);
                        }

                        blockOffset += 4;
                    }

                    outOffset += 16 * Channels;
                }
            }

            return output;
        }
开发者ID:pchote,项目名称:OpenRA,代码行数:64,代码来源:WavReader.cs

示例4: OnGetData

        public void OnGetData(GetDataEventArgs args)
        {
            if (args.Msg.whoAmI == player.Index)
            {
                if (args.MsgID == PacketTypes.NpcStrike)
                {
                    MemoryStream data = new MemoryStream(args.Msg.readBuffer, args.Index, args.Length);
                    int npcID = data.ReadInt16();
                    int damage = data.ReadInt16();
                    if (Main.npc[npcID].life - damage <= 0)
                    {
                        if (toBeKilled.ContainsKey(Main.npc[npcID].name))
                            toBeKilled[Main.npc[npcID].name] -= 1;

                        if (toBeKilled[Main.npc[npcID].name] <= 0)
                            toBeKilled.Remove(Main.npc[npcID].name);
                    }
                }
            }
        }
开发者ID:Ijwu,项目名称:TShock-Quest-System,代码行数:20,代码来源:QuestTriggers.cs

示例5: checkItemDrops

        private void checkItemDrops(GetDataEventArgs args)
        {
            if (args.MsgID == PacketTypes.ItemDrop)
            {
                if (args.Handled)
                    return;

                using (var data = new MemoryStream(args.Msg.readBuffer, args.Index, args.Length))
                {
                    Int16 id = data.ReadInt16();
                    float posx = data.ReadSingle();
                    float posy = data.ReadSingle();
                    float velx = data.ReadSingle();
                    float vely = data.ReadSingle();
                    int stack = data.ReadByte();
                    int prefix = data.ReadByte();
                    Int16 type = data.ReadInt16();

                    Item item = new Item();
                    item.SetDefaults(type);

                    if (id == 0)
                        return;

                    if (toBeCollected.ContainsKey(item.name))
                    {
                        toBeCollected[item.name] -= stack;

                        if (toBeCollected[item.name] < 0)
                        {
                            if (Math.Abs(toBeCollected[item.name]) > 1)
                                player.TSPlayer.SendInfoMessage(string.Format("Returning {0} {1}s", Math.Abs(toBeCollected[item.name]), item.name));
                            else
                                player.TSPlayer.SendInfoMessage(string.Format("Returning {0} {1}", Math.Abs(toBeCollected[item.name]), item.name));
                            args.Handled = true;
                            player.TSPlayer.GiveItem(item.type, item.name, item.width, item.width, Math.Abs(toBeCollected[item.name]));
                            toBeCollected.Remove(item.name);
                        }
                        else if (toBeCollected[item.name] > 0)
                        {
                             if (Math.Abs(toBeCollected[item.name]) > 1)
                                player.TSPlayer.SendInfoMessage(string.Format("Drop another {0} {1}s, to continue", Math.Abs(toBeCollected[item.name]), item.name));
                            else
                                player.TSPlayer.SendInfoMessage(string.Format("Drop {0} {1}, to continue", Math.Abs(toBeCollected[item.name]), item.name));
                            args.Handled = true;
                        }
                        else
                        {
                            if (stack > 1)
                                player.TSPlayer.SendInfoMessage(string.Format("You dropped {0} {1}s", stack, item.name));
                            else
                                player.TSPlayer.SendInfoMessage(string.Format("You dropped {0} {1}", stack, item.name));

                            toBeCollected.Remove(item.name);
                            args.Handled = true;
                        }
                    }
                    args.Handled = true;
                }
            }
        }
开发者ID:Ijwu,项目名称:TShock-Quest-System,代码行数:61,代码来源:QuestTriggers.cs

示例6: OnGetData

        private void OnGetData(GetDataEventArgs args)
        {
            var player = Utils.GetPlayer(args.Msg.whoAmI);

            #region ItemDrop
            if (args.MsgID == PacketTypes.ItemDrop)
            {
                if (args.Handled || !player.listingReward)
                    return;

                using (var data = new MemoryStream(args.Msg.readBuffer, args.Index, args.Length))
                {
                    Int16 id = data.ReadInt16();
                    float posx = data.ReadSingle();
                    float posy = data.ReadSingle();
                    float velx = data.ReadSingle();
                    float vely = data.ReadSingle();
                    Int16 stacks = data.ReadInt16();
                    int prefix = data.ReadByte();
                    bool nodelay = data.ReadBoolean();
                    Int16 netid = data.ReadInt16();

                    Item item = new Item();
                    item.SetDefaults(netid);

                    Console.WriteLine(String.Join(", ", id, stacks, prefix, netid));

                    if (stacks == 0)
                        return;

                    player.droppedItems.Add(new BHItem(netid, stacks, prefix));
                    player.TSPlayer.SendInfoMessage("{0} {1}{2} has been added to bounty rewards.",
                        stacks,
                        (prefix == 0) ? "" : TShock.Utils.GetPrefixByIdOrName(prefix.ToString())[0].ToString() + " ",
                        item.name);
                    args.Handled = true;
                }
            }
            #endregion

            #region PlayerDamage
            if (args.MsgID == PacketTypes.PlayerDamage)
            {
                if (args.Handled)
                    return;

                using (var data = new MemoryStream(args.Msg.readBuffer, args.Index, args.Length))
                {
                    var playerID = data.ReadByte();
                    var hitDirection = data.ReadByte();
                    var damage = data.ReadInt16();
                    var pvp = data.ReadBoolean();
                    var crit = data.ReadBoolean();

                    Utils.GetPlayer(playerID).killingPlayer = (args.Msg.whoAmI != playerID) ? Utils.GetPlayer(args.Msg.whoAmI) : null;
                }
            }
            #endregion

            #region KillMe
            if (args.MsgID == PacketTypes.PlayerKillMe)
            {
                if (args.Handled)
                    return;

                using (var data = new MemoryStream(args.Msg.readBuffer, args.Index, args.Length))
                {
                    var playerId = data.ReadByte();
                    var hitDirection = data.ReadByte();
                    var damage = data.ReadInt16();
                    var pvp = data.ReadBoolean();

                    var plr = Utils.GetPlayer(playerId);

                    if (plr.killingPlayer != null)
                    {
                        var killer = plr.killingPlayer;
                        if (pvp)
                        {
                            if (Utils.CheckVictimWasTarget(plr.name, killer.activeBounties))
                            {
                                List<Bounty> completedBounties = new List<Bounty>();
                                foreach (Bounty bounty in killer.activeBounties.Keys)
                                {
                                    if (bounty.target == plr.name)
                                    {
                                        for (int i = 0; i < bounty.reward.Count - 1; i++)
                                        {
                                            Item item = new Item();
                                            item.SetDefaults(bounty.reward[i].id);
                                            killer.TSPlayer.GiveItem(item.netID, item.name, item.width, item.height, bounty.reward[i].stack, bounty.reward[i].prefix);
                                        }
                                        if (bounty.reward[bounty.reward.Count - 1].money != 0)
                                        {
                                            SEconomyPlugin.Instance.WorldAccount.TransferToAsync(
                                                SEconomyPlugin.Instance.GetBankAccount(killer.TSPlayer.UserAccountName),
                                                bounty.reward[bounty.reward.Count - 1].money,
                                                Wolfje.Plugins.SEconomy.Journal.BankAccountTransferOptions.AnnounceToReceiver,
                                                String.Format("for the bounty rewards.", bounty.reward[bounty.reward.Count - 1].money),
                                                String.Format("BountyHunt: " + "receiving money for reward."));
//.........这里部分代码省略.........
开发者ID:bippity,项目名称:BountyHunt,代码行数:101,代码来源:BH.cs

示例7: ParseData

        private void ParseData(GetDataEventArgs args)
        {
            try
            {
                PacketTypes packet = args.MsgID;
                using (var data = new MemoryStream(args.Msg.readBuffer, args.Index, args.Length))
                {
                    TSPlayer player = TShock.Players[args.Msg.whoAmI];
                    var name = player.Name;
                    if (player.IsLoggedIn)
                    {
                        name = player.UserAccountName;
                    }
                    switch (packet)
                    {
                        case PacketTypes.Tile:
                            {
                                byte type = data.ReadInt8();
                                int x = data.ReadInt32();
                                int y = data.ReadInt32();
                                bool fail = true;
                                Action act;
                                if (type == 0 || type == 2 || type == 4)
                                    act = Action.BREAK;
                                else if (type == 1 || type == 3)
                                    act = Action.PLACE;
                                else
                                    act = Action.ERROR;

                                byte tileType = 0;

                                if (act == Action.BREAK)
                                {
                                    tileType = Main.tile[x, y].type;
                                    fail = data.ReadBoolean();
                                }
                                else if (act == Action.PLACE)
                                {
                                    tileType = data.ReadInt8();
                                    fail = false;
                                }
                                if (act != Action.ERROR && !fail)
                                {
                                    TileEvent evt = new TileEvent(x, y, name, player.IP, act, tileType,
                                                                  LogTile.helper.GetTime());
                                    queue.Enqueue(evt);
                                }
                                break;
                            }
                        case PacketTypes.TileKill:
                            {
                                int x = data.ReadInt32();
                                int y = data.ReadInt32();
                                TileEvent evt = new TileEvent(x, y, name, player.IP, Action.BREAK, 0x15,
                                                              LogTile.helper.GetTime());
                                queue.Enqueue(evt);
                                break;
                            }
                        case PacketTypes.ChestOpen:
                            {
                                int chestID = data.ReadInt16();
                                int x = data.ReadInt32();
                                int y = data.ReadInt32();
                                int curChest = 0;
                                if (!chestMap.TryGetValue(player, out curChest)) // chest being opened
                                {
                                    chestMap.Add(player, chestID);
                                    itemMap.Add(player, Main.chest[chestID].item);
                                }
                                else // chest is being closed
                                {
                                    chestMap.Remove(player);
                                    itemMap.Remove(player);
                                }

                                break;
                            }
                        case PacketTypes.ChestItem:
                            {
                                int chestID = data.ReadInt16();
                                byte itemSlot = data.ReadInt8();
                                byte stack = data.ReadInt8();
                                int curChest = 0;
                                int type = itemMap[player][itemSlot].type;
                                if (LogTile.enableDebugOutput)
                                    Console.WriteLine(type);
                                Item[] curItems = Main.chest[chestID].item;
                                if (LogTile.enableDebugOutput)
                                    Console.WriteLine(curItems[itemSlot].type);
                                itemMap.Remove(player);
                                itemMap.Add(player, curItems);
                                break;
                            }
                        case PacketTypes.ChestGetContents:
                            {
                                int x = data.ReadInt32();
                                int y = data.ReadInt32();
                                if (LogTile.enableDebugOutput)
                                    Console.WriteLine("GETChestContents: (" + x + ", " + y + ")");
                                break;
//.........这里部分代码省略.........
开发者ID:NyxStudios,项目名称:LogTile,代码行数:101,代码来源:TileQueue.cs

示例8: ReadTiles

		static void ReadTiles(Map map, IniFile file, int2 fullSize)
		{
			var tileset = Game.ModData.DefaultTileSets[map.Tileset];
			var mapSection = file.GetSection("IsoMapPack5");

			var data = Convert.FromBase64String(mapSection.Aggregate(string.Empty, (a, b) => a + b.Value));
			int cells = (fullSize.X * 2 - 1) * fullSize.Y;
			int lzoPackSize = cells * 11 + 4; // last 4 bytes contains a lzo pack header saying no more data is left
			var isoMapPack = new byte[lzoPackSize];
			UnpackLZO(data, isoMapPack);

			var mf = new MemoryStream(isoMapPack);
			for (var i = 0; i < cells; i++)
			{
				var rx = mf.ReadUInt16();
				var ry = mf.ReadUInt16();
				var tilenum = mf.ReadUInt16();
				/*var zero1 = */mf.ReadInt16();
				var subtile = mf.ReadUInt8();
				var z = mf.ReadUInt8();
				/*var zero2 = */mf.ReadUInt8();

				int dx = rx - ry + fullSize.X - 1;
				int dy = rx + ry - fullSize.X - 1;
				var mapCell = new MPos(dx / 2, dy);
				var cell = mapCell.ToCPos(map);

				if (map.Tiles.Contains(cell))
				{
					if (!tileset.Templates.ContainsKey(tilenum))
						tilenum = subtile = 0;

					map.Tiles[cell] = new TerrainTile(tilenum, subtile);
					map.Height[cell] = z;
				}
			}
		}
开发者ID:GraionDilach,项目名称:OpenRA.Mods.AS,代码行数:37,代码来源:ImportASMapCommand.cs

示例9: OnGetData

        private void OnGetData(GetDataEventArgs args)
        {
            if (args.MsgID != PacketTypes.NpcStrike)
            {
                return;
            }

            if (args.Msg.whoAmI < 0 || args.Msg.whoAmI > Main.maxNetPlayers)
            {
                return;
            }

            Player player = Main.player[args.Msg.whoAmI];

            using (MemoryStream ms = new MemoryStream(args.Msg.readBuffer, args.Index, args.Length - 1))
            {
                short id = ms.ReadInt16();
                ms.ReadInt16();
                ms.ReadSingle();
                ms.ReadInt8();
                bool crit = Convert.ToBoolean(ms.ReadInt8());

                if (Main.npc[id] == null)
                {
                    return;
                }

                if (crit)
                {
                    Dictionary<string, int[]> messages;
                    Item selected = player.inventory[player.selectedItem];

                    if (selected.ranged && !ItemID.Sets.Explosives[selected.type])
                    {
                        messages = config.CritMessages[WeaponType.Range].Messages;
                    }
                    else if (selected.melee)
                    {
                        messages = config.CritMessages[WeaponType.Melee].Messages;
                    }
                    else if (selected.magic)
                    {
                        messages = config.CritMessages[WeaponType.Magic].Messages;
                    }
                    else
                    {
                        if (ItemID.Sets.Explosives[selected.type]
                            || selected.type == ItemID.Grenade
                            || selected.type == ItemID.BouncyGrenade
                            || selected.type == ItemID.PartyGirlGrenade
                            || selected.type == ItemID.StickyGrenade)
                        {
                            messages = config.CritMessages[WeaponType.Explosive].Messages;
                        }
                        else
                        {
                            messages = config.CritMessages[WeaponType.Melee].Messages;
                        }
                    }

                    KeyValuePair<string, int[]> message = messages.ElementAt(r.Next(0, messages.Count));

                    Color c = new Color(message.Value[0], message.Value[1], message.Value[2]);

                    NetMessage.SendData((int)PacketTypes.CreateCombatText,
                        -1, -1, message.Key, (int)c.PackedValue, Main.npc[id].position.X, Main.npc[id].position.Y);
                }
            }
        }
开发者ID:WhiteXZ,项目名称:Critical-Hits,代码行数:69,代码来源:Plugin.cs

示例10: ParseData

        // ParseData +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
        private void ParseData( GetDataEventArgs args )
        {
            try
            {
                PacketTypes packet = args.MsgID;
                using ( var data = new MemoryStream( args.Msg.readBuffer, args.Index, args.Length ) )
                {
                    TSPlayer player = TShock.Players[args.Msg.whoAmI];
                    switch ( packet )
                    {
                        case PacketTypes.ChestItem:
            {
              string action, itemName;
              short  chestID   = data.ReadInt16();
              byte   itemSlot  = data.ReadInt8();
              byte   itemStack = data.ReadInt8();
              byte   prefix    = data.ReadInt8();
              short  itemType  = data.ReadInt16();
              var    oldItem   = Main.chest[chestID].item[itemSlot];
              if ( oldItem.name != null && oldItem.name.Length > 0 )
              {
                action = "cGet";
                itemName = oldItem.name;
              } // if
              else
              {
                var newItem = new Item();
                newItem.netDefaults( itemType );
                newItem.Prefix( prefix );
                newItem.AffixName();
                action = "cPut";
                itemName = newItem.name;
              } // else

              if ( itemType != prevItemType )
              {
                _ircClient.SendMessage( SendType.Message, _actionChannel,
                                 string.Format( "{0} ({1}): {2}: {3}",
                                 player.Name, player.Group.Name, action, itemName ) );
                prevItemType = itemType;
              } // if
                            break;
                        } // case
                    } // switch
                } // using
            } // try
            catch ( Exception exception )
            {
                Console.WriteLine( exception.Message + "(" + exception.StackTrace + ")" );
            } // catch
        }
开发者ID:HySpeed,项目名称:TerrariaPlugins,代码行数:52,代码来源:TerrariaIRC.cs


注:本文中的System.IO.MemoryStream.ReadInt16方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。