本文整理汇总了C#中WorldServer.player.Player.getLocalEnvironment方法的典型用法代码示例。如果您正苦于以下问题:C# Player.getLocalEnvironment方法的具体用法?C# Player.getLocalEnvironment怎么用?C# Player.getLocalEnvironment使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类WorldServer.player.Player
的用法示例。
在下文中一共展示了Player.getLocalEnvironment方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: update
/**
* Update the specified player.
* @param p
*/
public static void update(Player player)
{
//Creates a list of new players in area. [This only happens once.. no rebuilding like all World 2 servers.]
player.getLocalEnvironment().updatePlayersInArea();
//Attempt to skip a pointless update if possible.
//Any current users on screen got a update for me.
bool hasAppearanceUpdate = player.getLocalEnvironment().getSeenPlayers().Exists(new Predicate<Player>(delegate(Player p) { return p.getUpdateFlags().hasAnyUpdate(); }));
//No new pending players and no players pending to get removed from screen.
bool hasAddRemoveUpdate = (player.getLocalEnvironment().getNewPlayers().Count > 0 || player.getLocalEnvironment().getRemovedPlayers().Count > 0);
//no updates.. exit.
if (!hasAppearanceUpdate && !hasAddRemoveUpdate && !player.getUpdateFlags().hasAnyUpdate() && !player.getUpdateFlags().didMapRegionChange() && player.getConnection().getPingCount() < 7) return;
player.getConnection().resetPingCount();
if(player.getUpdateFlags().didMapRegionChange())
player.getPackets().sendMapRegion();
PacketBuilder mainPacket = new PacketBuilder().setId(225).setSize(Packet.Size.VariableShort).initBitAccess();
PacketBuilder updateBlock = new PacketBuilder().setSize(Packet.Size.Bare);
if (player.getUpdateFlags().isTeleporting()) { //teleport
mainPacket.addBits(1, 1);
mainPacket.addBits(2, 3);
mainPacket.addBits(7, player.getLocation().getLocalY(player.getUpdateFlags().getLastRegion())); //currentX
mainPacket.addBits(1, 1);
mainPacket.addBits(2, player.getLocation().getZ()); //heightLevel
mainPacket.addBits(1, player.getUpdateFlags().isUpdateRequired() ? 1 : 0);
mainPacket.addBits(7, player.getLocation().getLocalX(player.getUpdateFlags().getLastRegion())); //currentY
} else {
if (player.getSprites().getPrimarySprite() == -1) { //no movement
mainPacket.addBits(1, player.getUpdateFlags().isUpdateRequired() ? 1 : 0);
if (player.getUpdateFlags().isUpdateRequired())
mainPacket.addBits(2, 0);
} else { //movement.
mainPacket.addBits(1, 1);
if (player.getSprites().getSecondarySprite() == -1) { //not running
mainPacket.addBits(2, 1);
mainPacket.addBits(3, player.getSprites().getPrimarySprite()); //walk
mainPacket.addBits(1, player.getUpdateFlags().isUpdateRequired() ? 1 : 0);
} else {
mainPacket.addBits(2, 2);
mainPacket.addBits(1, 1);
mainPacket.addBits(3, player.getSprites().getPrimarySprite()); //walk
mainPacket.addBits(3, player.getSprites().getSecondarySprite()); //run
mainPacket.addBits(1, player.getUpdateFlags().isUpdateRequired() ? 1 : 0);
}
}
}
if(player.getUpdateFlags().isUpdateRequired())
appendUpdateBlock(player, updateBlock, false); //update my own updates.
mainPacket.addBits(8, player.getLocalEnvironment().getSeenPlayers().Count); //All players I've seen already (not new players)
//Send information of all the players in our own location.
foreach (Player p in player.getLocalEnvironment().getSeenPlayers())
{
if (player.getLocalEnvironment().getRemovedPlayers().Contains(p)) {
mainPacket.addBits(1, 1); //update required.
mainPacket.addBits(2, 3); //delete player.
continue;
} else if (p.getSprites().getPrimarySprite() == -1) {
if(p.getUpdateFlags().isUpdateRequired()) {
mainPacket.addBits(1, 1); //update required.
mainPacket.addBits(2, 0); //finish
} else {
mainPacket.addBits(1, 0); //no update required, either region changed or no movement change.
}
} else if (p.getSprites().getPrimarySprite() != -1 && p.getSprites().getSecondarySprite() == -1) {
mainPacket.addBits(1, 1); //update required.
mainPacket.addBits(2, 1); //update just walk direction sprite
mainPacket.addBits(3, p.getSprites().getPrimarySprite());
mainPacket.addBits(1, p.getUpdateFlags().isUpdateRequired() ? 1 : 0);
} else if (p.getSprites().getPrimarySprite() != -1 && p.getSprites().getSecondarySprite() != -1) { //Bit 2 = 2, updates both sprites.
mainPacket.addBits(1, 1); //update required.
mainPacket.addBits(2, 2); //update both walk & run sprites.
mainPacket.addBits(1, 1);
mainPacket.addBits(3, p.getSprites().getPrimarySprite());
mainPacket.addBits(3, p.getSprites().getSecondarySprite());
mainPacket.addBits(1, p.getUpdateFlags().isUpdateRequired() ? 1 : 0);
}
if (p.getUpdateFlags().isUpdateRequired())
appendUpdateBlock(p, updateBlock, false);
}
//Send information of all the new players in our own location.
foreach (Player p in player.getLocalEnvironment().getNewPlayers())
{
mainPacket.addBits(11, p.getIndex()); //playerId of new player.
int yPos = p.getLocation().getY() - player.getLocation().getY();
int xPos = p.getLocation().getX() - player.getLocation().getX();
mainPacket.addBits(1, 1);
mainPacket.addBits(5, xPos < 0 ? xPos + 32 : xPos);
//.........这里部分代码省略.........