本文整理汇总了C#中System.Item.BroadcastStateUpdate方法的典型用法代码示例。如果您正苦于以下问题:C# Item.BroadcastStateUpdate方法的具体用法?C# Item.BroadcastStateUpdate怎么用?C# Item.BroadcastStateUpdate使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类System.Item
的用法示例。
在下文中一共展示了Item.BroadcastStateUpdate方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: HandleBottle
private static bool HandleBottle(Session Session, Item Item, RoomInstance Instance, ItemEventType Event, int RequestData)
{
switch (Event)
{
case ItemEventType.Placed:
case ItemEventType.Removing:
if (Item.Flags != "0")
{
Item.Flags = "0";
Item.DisplayFlags = "0";
RoomManager.MarkWriteback(Item, true);
}
break;
case ItemEventType.Interact:
if (Item.Flags != "-1")
{
Item.Flags = "-1";
Item.DisplayFlags = "-1";
Item.BroadcastStateUpdate(Instance);
Item.RequestUpdate(4);
}
break;
case ItemEventType.UpdateTick:
Item.Flags = RandomGenerator.GetNext(0, 7).ToString();
Item.DisplayFlags = Item.Flags;
Item.BroadcastStateUpdate(Instance);
RoomManager.MarkWriteback(Item, true);
break;
}
return true;
}
示例2: HandleAlert
private static bool HandleAlert(Session Session, Item Item, RoomInstance Instance, ItemEventType Event, int RequestData)
{
switch (Event)
{
case ItemEventType.InstanceLoaded:
case ItemEventType.Placed:
case ItemEventType.Removing:
Item.Flags = "0";
Item.DisplayFlags = "0";
break;
case ItemEventType.Interact:
if (!Instance.CheckUserRights(Session) || Item.Flags == "1")
{
break;
}
Item.Flags = "1";
Item.DisplayFlags = "1";
Item.RequestUpdate(4);
Item.BroadcastStateUpdate(Instance);
break;
case ItemEventType.UpdateTick:
if (Item.Flags != "1")
{
break;
}
Item.Flags = "0";
Item.DisplayFlags = "0";
Item.BroadcastStateUpdate(Instance);
break;
}
return true;
}
示例3: HandleFixedSwitchSwitch
private static bool HandleFixedSwitchSwitch(Session Session, Item Item, RoomInstance Instance, ItemEventType Event, int RequestData, uint Opcode)
{
switch (Event)
{
case ItemEventType.Interact:
if (!Instance.CheckUserRights(Session))
{
break;
}
List<Vector2> SwitchTiles = Instance.CalculateAffectedTiles(Item, Item.RoomPosition.GetVector2(), Item.RoomRotation);
RoomActor Actor = Instance.GetActorByReferenceId(Session.CharacterId);
foreach (uint RefId in Item.TemporaryInteractionReferenceIds.Values)
{
RoomActor InteractingActor = Instance.GetActor(RefId);
}
int CurrentState = 0;
int.TryParse(Item.Flags, out CurrentState);
if (CurrentState >= (Item.Definition.BehaviorData - 1))
{
CurrentState = 0;
Item.Flags = CurrentState.ToString();
Item.DisplayFlags = CurrentState.ToString();
}
else
{
int NewState = CurrentState + 1;
Item.Flags = NewState.ToString();
Item.DisplayFlags = NewState.ToString();
}
RoomManager.MarkWriteback(Item, true);
Item.BroadcastStateUpdate(Instance);
Instance.WiredManager.HandleToggleState(Actor, Item);
Instance.RegenerateRelativeHeightmap();
break;
}
return true;
}
示例4: HandleGenericSwitch
private static bool HandleGenericSwitch(Session Session, Item Item, RoomInstance Instance, ItemEventType Event, int RequestData)
{
switch (Event)
{
case ItemEventType.Interact:
if (!Instance.CheckUserRights(Session))
{
return true;
}
int CurrentState = 0;
int.TryParse(Item.Flags, out CurrentState);
int NewState = CurrentState + 1;
if (CurrentState < 0 || CurrentState >= (Item.Definition.BehaviorData - 1))
{
NewState = 0;
}
if (CurrentState != NewState)
{
Item.Flags = NewState.ToString();
Item.DisplayFlags = Item.Flags;
RoomManager.MarkWriteback(Item, true);
Item.BroadcastStateUpdate(Instance);
}
break;
}
return true;
}
示例5: HandleFixedGateSwitch
private static bool HandleFixedGateSwitch(Session Session, Item Item, RoomInstance Instance, ItemEventType Event, int RequestData, uint Opcode)
{
switch (Event)
{
case ItemEventType.Interact:
if (!Instance.CheckUserRights(Session))
{
return true;
}
List<Vector2> GateTiles = Instance.CalculateAffectedTiles(Item, Item.RoomPosition.GetVector2(), Item.RoomRotation);
foreach (Vector2 Tile in GateTiles)
{
if (Instance.GetActorsOnPosition(Tile).Count > 0)
{
return true;
}
}
int CurrentState = 0;
int.TryParse(Item.Flags, out CurrentState);
Item.Flags = (CurrentState == 0 ? 1 : 0).ToString();
Item.DisplayFlags = Item.Flags;
RoomManager.MarkWriteback(Item, true);
Item.BroadcastStateUpdate(Instance);
Instance.RegenerateRelativeHeightmap();
break;
}
return true;
}
示例6: HandleStepSwitch
private static bool HandleStepSwitch(Session Session, Item Item, RoomInstance Instance, ItemEventType Event, int RequestData)
{
switch (Event)
{
case ItemEventType.InstanceLoaded:
case ItemEventType.Moved:
case ItemEventType.Placed:
Item.RequestUpdate(1);
break;
case ItemEventType.UpdateTick:
string Flags = "0";
if (Instance.GetActorsOnPosition(Item.RoomPosition.GetVector2()).Count > 0)
{
Flags = "1";
}
if (Item.DisplayFlags != Flags)
{
Item.DisplayFlags = Flags;
Item.BroadcastStateUpdate(Instance);
}
Item.RequestUpdate(1);
break;
}
return true;
}
示例7: HandleScoreboard
private static bool HandleScoreboard(Session Session, Item Item, RoomInstance Instance, ItemEventType Event, int RequestData)
{
switch (Event)
{
case ItemEventType.Interact:
if (!Instance.CheckUserRights(Session))
{
break;
}
RoomActor Actor = Instance.GetActorByReferenceId(Session.CharacterId);
if (Actor == null)
{
break;
}
if (!Distance.TilesTouching(Actor.Position.GetVector2(), Item.RoomPosition.GetVector2()))
{
Actor.MoveToItemAndInteract(Item, RequestData);
break;
}
int Val = 0;
int.TryParse(Item.DisplayFlags, out Val);
if (RequestData == 1)
{
Val--;
if (Val < 0)
{
Val = 99;
}
}
else if (RequestData == 2)
{
Val++;
if (Val > 99)
{
Val = 0;
}
}
else
{
Val = (Val == -1 ? 0 : -1);
}
Item.DisplayFlags = Val.ToString();
Item.BroadcastStateUpdate(Instance);
break;
}
return true;
}
示例8: HandleTeleporter
private static bool HandleTeleporter(Session Session, Item Item, RoomInstance Instance, ItemEventType Event, int RequestData, uint Opcode)
{
RoomActor Actor = null;
uint LinkedRef = 0;
uint.TryParse(Item.Flags, out LinkedRef);
switch (Event)
{
case ItemEventType.InstanceLoaded:
Item.DisplayFlags = "0";
break;
case ItemEventType.Moved:
if (RequestData != 1)
{
goto case ItemEventType.Removing;
}
break;
case ItemEventType.Removing:
case ItemEventType.Placed:
if (Item.DisplayFlags != "0")
{
Item.DisplayFlags = "0";
if (Event == ItemEventType.Moved)
{
Item.BroadcastStateUpdate(Instance);
}
}
foreach (uint RefId in Item.TemporaryInteractionReferenceIds.Values)
{
RoomActor InteractingActor = Instance.GetActor(RefId);
if (InteractingActor != null)
{
InteractingActor.UnblockWalking();
}
}
Item.TemporaryInteractionReferenceIds.Clear();
break;
case ItemEventType.Interact:
if (Session != null)
{
Actor = Instance.GetActorByReferenceId(Session.CharacterId);
}
if (Actor == null)
{
break;
}
bool IsInFront = (Actor.Position.X == Item.SquareInFront.X && Actor.Position.Y == Item.SquareInFront.Y);
bool IsInTele = !IsInFront && (Actor.Position.X == Item.RoomPosition.X &&
Actor.Position.Y == Item.RoomPosition.Y);
if (!IsInFront && !IsInTele)
{
Actor.MoveToItemAndInteract(Item, RequestData, Opcode);
break;
}
if (Item.DisplayFlags == "0" && Item.TemporaryInteractionReferenceIds.Count == 0)
{
Item.TemporaryInteractionReferenceIds.Add(1, Actor.Id);
Actor.BlockWalking();
using (SqlDatabaseClient MySqlClient = SqlDatabaseManager.GetClient())
{
TeleporterLinkFinder.FillCache(MySqlClient, LinkedRef);
}
if (IsInTele)
{
Item.RequestUpdate(1);
}
else
{
Item.DisplayFlags = "1";
Actor.MoveTo(Item.RoomPosition.GetVector2(), true, true, true);
Item.BroadcastStateUpdate(Instance);
Item.RequestUpdate(3);
}
}
break;
case ItemEventType.UpdateTick:
RoomActor OutgoingUser = null;
//.........这里部分代码省略.........
示例9: HandleDispenser
private static bool HandleDispenser(Session Session, Item Item, RoomInstance Instance, ItemEventType Event, int RequestData, uint Opcode)
{
switch (Event)
{
case ItemEventType.Moved:
{
RoomActor InteractingActor = (Item.TemporaryInteractionReferenceIds.ContainsKey(0) ?
Instance.GetActor(Item.TemporaryInteractionReferenceIds[0]) : null);
if (InteractingActor != null)
{
InteractingActor.UnblockWalking();
}
goto case ItemEventType.InstanceLoaded;
}
case ItemEventType.InstanceLoaded:
{
if (Item.DisplayFlags != "0")
{
Item.DisplayFlags = "0";
Item.BroadcastStateUpdate(Instance);
}
return true;
}
case ItemEventType.Interact:
{
RoomActor InteractingActor = Instance.GetActorByReferenceId(Session.CharacterId);
if (InteractingActor == null)
{
return true;
}
if (InteractingActor.Position.X != Item.SquareInFront.X || InteractingActor.Position.Y !=
Item.SquareInFront.Y)
{
InteractingActor.MoveToItemAndInteract(Item, RequestData, Opcode);
return true;
}
if (Item.TemporaryInteractionReferenceIds.Count == 0)
{
Item.TemporaryInteractionReferenceIds.Add(0, InteractingActor.Id);
InteractingActor.BlockWalking();
InteractingActor.PositionToSet = Item.SquareInFront;
int NewRot = Rotation.Calculate(InteractingActor.Position.GetVector2(),
Item.RoomPosition.GetVector2());
if (InteractingActor.BodyRotation != NewRot)
{
InteractingActor.BodyRotation = NewRot;
InteractingActor.HeadRotation = NewRot;
InteractingActor.UpdateNeeded = true;
}
Item.DisplayFlags = "1";
Item.BroadcastStateUpdate(Instance);
Item.RequestUpdate(2);
}
return true;
}
case ItemEventType.UpdateTick:
{
if (Item.DisplayFlags != "0")
{
Item.DisplayFlags = "0";
Item.BroadcastStateUpdate(Instance);
}
if (Item.TemporaryInteractionReferenceIds.Count < 1)
{
return true;
}
RoomActor InteractingActor = Instance.GetActor(Item.TemporaryInteractionReferenceIds[0]);
Item.TemporaryInteractionReferenceIds.Clear();
if (InteractingActor == null)
{
return true;
}
InteractingActor.CarryItem(DrinkSetManager.GetRandomDrinkForSet(Item.Definition.BehaviorData));
int NewRot = Rotation.Calculate(InteractingActor.Position.GetVector2(),
Item.RoomPosition.GetVector2());
if (InteractingActor.BodyRotation != NewRot)
{
InteractingActor.BodyRotation = NewRot;
InteractingActor.HeadRotation = NewRot;
InteractingActor.UpdateNeeded = true;
}
//.........这里部分代码省略.........
示例10: HandleFireworks
private static bool HandleFireworks(Session Session, Item Item, RoomInstance Instance, ItemEventType Event, int RequestData)
{
int CurrentCharges = 0;
int.TryParse(Item.Flags, out CurrentCharges);
switch (Event)
{
case ItemEventType.InstanceLoaded:
case ItemEventType.Placed:
case ItemEventType.Moved:
case ItemEventType.UpdateTick:
string DesiredDisplayFlags = "0";
if (CurrentCharges > 0)
{
DesiredDisplayFlags = "1";
}
if (Item.DisplayFlags != DesiredDisplayFlags)
{
Item.DisplayFlags = DesiredDisplayFlags;
Item.BroadcastStateUpdate(Instance);
}
break;
case ItemEventType.Interact:
RoomActor Actor = Instance.GetActorByReferenceId(Session.CharacterId);
if (Actor == null)
{
return true;
}
if (Distance.Calculate(Actor.Position.GetVector2(), Item.RoomPosition.GetVector2()) > 1)
{
Actor.MoveToItemAndInteract(Item, RequestData, Item.SquareBehind);
return true;
}
switch (RequestData)
{
// Purchase charges
case 2:
if (Session.CharacterInfo.CreditsBalance < CHARGE_COSTS_CREDITS)
{
return true;
}
if (Session.CharacterInfo.ActivityPointsBalance < CHARGE_COSTS_PIXELS)
{
return true;
}
bool Update = (CurrentCharges <= 0);
CurrentCharges += CHARGE_AMOUNT;
Item.Flags = CurrentCharges.ToString();
using (SqlDatabaseClient MySqlClient = SqlDatabaseManager.GetClient())
{
if (CHARGE_COSTS_CREDITS > 0)
{
Session.CharacterInfo.UpdateCreditsBalance(MySqlClient, -CHARGE_COSTS_CREDITS);
Session.SendData(CreditsBalanceComposer.Compose(Session.CharacterInfo.CreditsBalance));
}
if (CHARGE_COSTS_PIXELS > 0)
{
Session.CharacterInfo.UpdateActivityPointsBalance(MySqlClient, -CHARGE_COSTS_PIXELS);
Session.SendData(ActivityPointsBalanceComposer.Compose(Session.CharacterInfo.ActivityPointsBalance,
-CHARGE_COSTS_PIXELS));
}
Item.SynchronizeDatabase(MySqlClient, true);
}
Session.SendData(FireworksChargeInfoComposer.Compose(Item.Id, CurrentCharges, CHARGE_COSTS_CREDITS,
CHARGE_COSTS_PIXELS, CHARGE_AMOUNT));
if (Update)
{
Item.DisplayFlags = "1";
Item.BroadcastStateUpdate(Instance);
}
break;
case 1:
Session.SendData(FireworksChargeInfoComposer.Compose(Item.Id, CurrentCharges, CHARGE_COSTS_CREDITS,
CHARGE_COSTS_PIXELS, CHARGE_AMOUNT));
break;
default:
case 0:
//.........这里部分代码省略.........
示例11: HandleJukebox
private static bool HandleJukebox(Session Session, Item Item, RoomInstance Instance, ItemEventType Event, int RequestData, uint Opcode)
{
switch (Event)
{
case ItemEventType.Placed:
case ItemEventType.InstanceLoaded:
Instance.MusicController.Reset();
Instance.MusicController.LinkRoomOutputItem(Item);
List<Item> Disks = new List<Item>();
using (SqlDatabaseClient MySqlClient = SqlDatabaseManager.GetClient())
{
Disks = LoadPlaylist(MySqlClient, Item.Id);
}
foreach (Item Disk in Disks)
{
Instance.MusicController.AddDisk(Disk);
}
if (Item.DisplayFlags == "1")
{
if (Instance.MusicController.PlaylistSize > 0)
{
Instance.MusicController.Start();
}
else
{
Item.DisplayFlags = "0";
Item.BroadcastStateUpdate(Instance);
}
}
break;
case ItemEventType.Removing:
if (Instance.MusicController.IsPlaying)
{
Instance.MusicController.Stop();
Instance.MusicController.BroadcastCurrentSongData(Instance);
}
Instance.MusicController.Reset();
break;
case ItemEventType.Interact:
if (!Instance.CheckUserRights(Session, true))
{
return true;
}
switch (RequestData)
{
case -1: // Open interface
break;
default: // it loves sending random numbers. as you do.
if (Item.DisplayFlags == "1")
{
Item.DisplayFlags = "0";
Instance.MusicController.Stop();
}
else
{
if (Instance.MusicController.PlaylistSize < 1)
{
break;
}
Item.DisplayFlags = "1";
Instance.MusicController.Start();
}
Item.BroadcastStateUpdate(Instance);
RoomManager.MarkWriteback(Item, true);
Instance.MusicController.BroadcastCurrentSongData(Instance);
break;
}
break;
}
return true;
}
示例12: HandleOneWayGate
private static bool HandleOneWayGate(Session Session, Item Item, RoomInstance Instance, ItemEventType Event, int RequestData, uint Opcode)
{
switch (Event)
{
case ItemEventType.InstanceLoaded:
case ItemEventType.Moved:
case ItemEventType.Placed:
if (Item.DisplayFlags != "0")
{
Item.DisplayFlags = "0";
Item.BroadcastStateUpdate(Instance);
}
foreach (uint ActorId in Item.TemporaryInteractionReferenceIds.Values)
{
RoomActor ActorToUnlock = Instance.GetActor(ActorId);
if (ActorToUnlock != null)
{
ActorToUnlock.UnblockWalking();
}
}
Item.TemporaryInteractionReferenceIds.Clear();
break;
case ItemEventType.Interact:
RoomActor Actor = Instance.GetActorByReferenceId(Session.CharacterId);
if (Actor == null)
{
break;
}
if (Actor.Position.X != Item.SquareInFront.X || Actor.Position.Y != Item.SquareInFront.Y)
{
Actor.MoveToItemAndInteract(Item, RequestData, Opcode);
break;
}
if (Item.TemporaryInteractionReferenceIds.Count == 0 && Instance.IsValidStep(Item.RoomPosition.GetVector2(),
Item.SquareBehind, true) && Item.DisplayFlags == "0")
{
Actor.BlockWalking();
Actor.MoveTo(Item.RoomPosition.GetVector2(), true, true, true);
Item.TemporaryInteractionReferenceIds.Add(1, Actor.Id);
Item.RequestUpdate(1);
}
break;
case ItemEventType.UpdateTick:
RoomActor UpdateActor = null;
if (Item.TemporaryInteractionReferenceIds.ContainsKey(1))
{
UpdateActor = Instance.GetActor(Item.TemporaryInteractionReferenceIds[1]);
}
if (UpdateActor == null || !Instance.IsValidStep(Item.RoomPosition.GetVector2(), Item.SquareBehind, true)
|| ((UpdateActor.Position.X != Item.RoomPosition.X || UpdateActor.Position.Y !=
Item.RoomPosition.Y) && (UpdateActor.Position.X != Item.SquareInFront.X ||
UpdateActor.Position.Y != Item.SquareInFront.Y)))
{
if (Item.DisplayFlags != "0")
{
Item.DisplayFlags = "0";
Item.BroadcastStateUpdate(Instance);
}
if (Item.TemporaryInteractionReferenceIds.Count > 0)
{
Item.TemporaryInteractionReferenceIds.Clear();
}
if (UpdateActor != null)
{
UpdateActor.UnblockWalking();
}
break;
}
Item.DisplayFlags = "1";
Item.BroadcastStateUpdate(Instance);
UpdateActor.MoveTo(Item.SquareBehind, true, true, true);
Item.RequestUpdate(2);
break;
}
return true;
}
示例13: HandleDice
private static bool HandleDice(Session Session, Item Item, RoomInstance Instance, ItemEventType Event, int RequestData)
{
switch (Event)
{
case ItemEventType.Placed:
case ItemEventType.Removing:
if (Item.Flags != "0" && Item.Flags != "1")
{
Item.Flags = "0";
Item.DisplayFlags = "0";
RoomManager.MarkWriteback(Item, true);
}
break;
case ItemEventType.Interact:
RoomActor TargetActor = Instance.GetActorByReferenceId(Session.CharacterId);
if (TargetActor == null)
{
break;
}
if (!Distance.TilesTouching(TargetActor.Position.GetVector2(), Item.RoomPosition.GetVector2())
&& !Distance.IsDiagonal(TargetActor.Position.GetVector2(), Item.RoomPosition.GetVector2()))
{
TargetActor.MoveToItemAndInteract(Item, RequestData);
break;
}
if (RequestData >= 0)
{
if (Item.Flags != "-1")
{
Item.Flags = "-1";
Item.DisplayFlags = "-1";
Item.BroadcastStateUpdate(Instance);
Item.RequestUpdate(3);
}
}
else
{
Item.Flags = "0";
Item.DisplayFlags = "0";
}
break;
case ItemEventType.UpdateTick:
Item.Flags = RandomGenerator.GetNext(1, 6).ToString();
Item.DisplayFlags = Item.Flags;
Item.BroadcastStateUpdate(Instance);
RoomManager.MarkWriteback(Item, true);
break;
}
return true;
}
示例14: HandleLoveShuffler
private static bool HandleLoveShuffler(Session Session, Item Item, RoomInstance Instance, ItemEventType Event, int RequestData)
{
switch (Event)
{
case ItemEventType.Placed:
case ItemEventType.Removing:
Item.Flags = "-1";
Item.DisplayFlags = "-1";
break;
case ItemEventType.Interact:
if (!Instance.CheckUserRights(Session))
{
break;
}
if (Item.Flags != "0")
{
Item.Flags = "0";
Item.DisplayFlags = "0";
Item.RequestUpdate(10);
Item.BroadcastStateUpdate(Instance);
}
break;
case ItemEventType.UpdateTick:
if (Item.Flags == "0")
{
Item.Flags = RandomGenerator.GetNext(1, 4).ToString();
Item.DisplayFlags = Item.Flags;
Item.BroadcastStateUpdate(Instance);
}
RoomManager.MarkWriteback(Item, true);
break;
}
return true;
}
示例15: HandleWired
private static bool HandleWired(Session Session, Item Item, RoomInstance Instance, ItemEventType Event, int RequestData, uint Opcode)
{
switch (Event) {
case ItemEventType.Interact:
switch (Item.Definition.Behavior) {
case ItemBehavior.WiredTrigger:
Session.SendData (WiredFurniTriggerComposer.Compose (Item, Instance));
break;
case ItemBehavior.WiredEffect:
Session.SendData (WiredFurniActionComposer.Compose (Item, Instance));
break;
}
break;
case ItemEventType.Placed:
Item.WiredData = Instance.WiredManager.LoadWired (Item.Id, Item.Definition.BehaviorData);
break;
case ItemEventType.Removing:
using (SqlDatabaseClient MySqlClient = SqlDatabaseManager.GetClient()) {
Instance.WiredManager.RemoveWired (Item.Id, MySqlClient);
}
Instance.WiredManager.DeRegisterWalkItem(Item.Id);
break;
case ItemEventType.UpdateTick:
if (Item.Definition.Behavior == ItemBehavior.WiredTrigger) {
switch (WiredTypesUtil.TriggerFromInt (Item.Definition.BehaviorData)) {
case WiredTriggerTypes.periodically:
Instance.WiredManager.ExecuteActions (Item, null);
Item.RequestUpdate (Item.WiredData.Data2);
break;
case WiredTriggerTypes.at_given_time:
Instance.WiredManager.ExecuteActions (Item, null);
break;
}
return true;
}
Item.BroadcastStateUpdate (Instance);
break;
}
return true;
}