本文整理汇总了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);
}
}
}
}
示例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 );
}
}
示例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;
}
示例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);
}
}
}
}
示例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;
}
}
}
示例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."));
//.........这里部分代码省略.........
示例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;
//.........这里部分代码省略.........
示例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;
}
}
}
示例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);
}
}
}
示例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
}