private void AddOrUpdateRefferance(int coordinate, IWiredCondition item) { if (itemToOldCoordinate.ContainsKey(item.GetOriginalWiredItem().Id)) { int oldLocation =(int) itemToOldCoordinate[item.GetOriginalWiredItem().Id]; List<IWiredCondition> list = (List<IWiredCondition>)roomMatrix[oldLocation]; IWiredCondition toRemove = null; foreach (IWiredCondition condition in list) { if (condition.GetOriginalWiredItem().Id == item.GetOriginalWiredItem().Id) { toRemove = condition; break; } } list.Remove(toRemove); itemToOldCoordinate.Remove(item.GetOriginalWiredItem().Id); } if (roomMatrix.ContainsKey(coordinate)) { List<IWiredCondition> items = (List<IWiredCondition>)roomMatrix[coordinate]; if (!items.Contains(item)) items.Add(item); } else { List<IWiredCondition> items = new List<IWiredCondition>(1); items.Add(item); roomMatrix.Add(coordinate, items); } itemToOldCoordinate.Add(item.GetOriginalWiredItem().Id, coordinate); }
private static void HandleConditionLoad(IWiredCondition handler, RoomItem item) { if (item.wiredCondition != null) { item.wiredCondition.Dispose(); } item.wiredCondition = handler; }
private static void HandleConditionLoad(IWiredCondition handler, RoomItem item, Room room) { if (item.wiredCondition != null) { item.wiredCondition.Dispose(); } // room.GetWiredHandler().conditionHandler.AddConditionToTile(item.Coordinate, item.wiredCondition); item.wiredCondition = handler; }
private void AddOrUpdateRefferance(Point coordinate, IWiredCondition item) { if (roomMatrix.ContainsKey(coordinate)) { List<IWiredCondition> items = (List<IWiredCondition>)roomMatrix[coordinate]; if (!items.Contains(item)) items.Add(item); } else { List<IWiredCondition> items = new List<IWiredCondition>(1); items.Add(item); roomMatrix.Add(coordinate, items); } }
public void RemoveConditionToTile(Point coord, IWiredCondition cond) { if (roomMatrix.ContainsKey(coord)) { List <IWiredCondition> iwc = roomMatrix[coord]; if (iwc.Contains(cond)) { iwc.Remove(cond); } if (iwc.Count == 0) { roomMatrix.Remove(coord); } } }
private void AddOrUpdateRefferance(Point coordinate, IWiredCondition item) { if (roomMatrix.ContainsKey(coordinate)) { List <IWiredCondition> items = (List <IWiredCondition>)roomMatrix[coordinate]; if (!items.Contains(item)) { items.Add(item); } } else { List <IWiredCondition> items = new List <IWiredCondition>(1); items.Add(item); roomMatrix.Add(coordinate, items); } }
public void AddConditionToTile(Point coord, IWiredCondition cond) { if (!roomMatrix.ContainsKey(coord)) { List <IWiredCondition> iwc = new List <IWiredCondition>(1) { cond }; roomMatrix.Add(coord, iwc); } else { List <IWiredCondition> iwc = roomMatrix[coord]; if (!iwc.Contains(cond)) { iwc.Add(cond); } } }
private void AddOrUpdateRefferance(Point coordinate, IWiredCondition item) { AddOrUpdateRefferance(TextHandling.CombineXYCoord(coordinate.X, coordinate.Y), item); }
private static void HandleConditionLoad(IWiredCondition handler, RoomItem item) { if (item.wiredCondition != null) item.wiredCondition.Dispose(); item.wiredCondition = handler; item.Room.GetWiredHandler().conditionHandler.AddOrIgnoreRefferance(item); }
internal static void HandleConditionSave(GameClient Session, uint itemID, Room room, ClientMessage clientMessage) { if (room == null || room.GetRoomItemHandler() == null) { return; } var item = room.GetRoomItemHandler().GetItem(itemID); if (item == null) { return; } if (item.wiredCondition != null) { room.GetWiredHandler().conditionHandler.RemoveConditionToTile(item.Coordinate, item.wiredCondition); item.wiredCondition.Dispose(); item.wiredCondition = null; } var type = item.GetBaseItem().InteractionType; if (!WiredUtillity.TypeIsWiredCondition(type)) { return; } IWiredCondition handler = null; switch (type) { case InteractionType.conditionfurnishaveusers: { var junk = clientMessage.PopWiredInt32(); var message = clientMessage.PopFixedString(); int furniCount; var items = GetItems(clientMessage, room, out furniCount); var delay = clientMessage.PopWiredInt32(); handler = new FurniHasUsers(item, items); break; } case InteractionType.conditionhasfurnion: { var junk = clientMessage.PopWiredInt32(); var onlyOneItem = clientMessage.PopWiredInt32(); var message = clientMessage.PopFixedString(); int furniCount; var items = GetItems(clientMessage, room, out furniCount); var delay = clientMessage.PopWiredInt32(); handler = new FurniHasFurni(item, items, onlyOneItem); break; } case InteractionType.conditiontriggeronfurni: { var junk = clientMessage.PopWiredInt32(); var message = clientMessage.PopFixedString(); int furniCount; var items = GetItems(clientMessage, room, out furniCount); var delay = clientMessage.PopWiredInt32(); handler = new TriggerUserIsOnFurni(item, items); break; } case InteractionType.conditionstatepos: { var junk = clientMessage.PopWiredInt32(); var item1 = clientMessage.PopWiredInt32(); var item2 = clientMessage.PopWiredInt32(); var item3 = clientMessage.PopWiredInt32(); var message = clientMessage.PopFixedString(); int furniCount; var items = GetItems(clientMessage, room, out furniCount); var delay = clientMessage.PopWiredInt32(); var itemsState = item1 + "," + item2 + "," + item3; var originalItemLocation = new Dictionary <uint, OriginalItemLocation>(); foreach (RoomItem nItem in items) { originalItemLocation.Add(nItem.Id, new OriginalItemLocation(nItem.Id, nItem.GetX, nItem.GetY, nItem.TotalHeight, nItem.Rot, nItem.ExtraData)); } handler = new FurniStatePosMatch(item, items, itemsState, originalItemLocation); break; } case InteractionType.conditiontimelessthan: { var junk = clientMessage.PopWiredInt32(); var time = clientMessage.PopWiredInt32(); handler = new LessThanTimer(time, room, item); break; } case InteractionType.conditiontimemorethan: { var junk = clientMessage.PopWiredInt32(); var time = clientMessage.PopWiredInt32(); handler = new MoreThanTimer(time, room, item); break; } case InteractionType.conditionactoringroup: { handler = new ActorInGroup(room.RoomData.GroupId, item); break; } case InteractionType.conditionactorinteam: { var junk = clientMessage.PopWiredInt32(); var team = (Team)clientMessage.PopWiredInt32(); handler = new ActorInTeam(team, item); break; } case InteractionType.conditionusercountin: { var junk = clientMessage.PopWiredInt32(); var minUsers = clientMessage.PopWiredUInt(); var maxUsers = clientMessage.PopWiredUInt(); handler = new UserCountIn(minUsers, maxUsers, item); break; } case InteractionType.conditionstuffis: { var junk = clientMessage.PopWiredInt32(); var message = clientMessage.PopFixedString(); int furniCount; var items = GetItems(clientMessage, room, out furniCount); var delay = clientMessage.PopWiredInt32(); handler = new StuffIs(item, items); break; } case InteractionType.conditionhandleitemid: { var junk = clientMessage.PopWiredInt32(); var handleItem = clientMessage.PopWiredInt32(); handler = new HandleItemUser(handleItem, item); break; } case InteractionType.conditionnotfurnishaveusers: { var junk = clientMessage.PopWiredInt32(); var message = clientMessage.PopFixedString(); int furniCount; var items = GetItems(clientMessage, room, out furniCount); var delay = clientMessage.PopWiredInt32(); handler = new NotFurniHasUsers(item, items); break; } case InteractionType.conditionnotfurnion: { var junk = clientMessage.PopWiredInt32(); var onlyOneItem = clientMessage.PopWiredInt32(); var message = clientMessage.PopFixedString(); int furniCount; var items = GetItems(clientMessage, room, out furniCount); var delay = clientMessage.PopWiredInt32(); handler = new NotFurniHasFurni(item, items, onlyOneItem); break; } case InteractionType.conditionnottriggeronfurni: { var junk = clientMessage.PopWiredInt32(); var message = clientMessage.PopFixedString(); int furniCount; var items = GetItems(clientMessage, room, out furniCount); var delay = clientMessage.PopWiredInt32(); handler = new NotTriggerUserIsOnFurni(item, items); break; } case InteractionType.conditionnotstatepos: { var junk = clientMessage.PopWiredInt32(); var item1 = clientMessage.PopWiredInt32(); var item2 = clientMessage.PopWiredInt32(); var item3 = clientMessage.PopWiredInt32(); var message = clientMessage.PopFixedString(); int furniCount; var items = GetItems(clientMessage, room, out furniCount); var delay = clientMessage.PopWiredInt32(); var itemsState = item1 + "," + item2 + "," + item3; var originalItemLocation = new Dictionary <uint, OriginalItemLocation>(); foreach (RoomItem nItem in items) { originalItemLocation.Add(nItem.Id, new OriginalItemLocation(nItem.Id, nItem.GetX, nItem.GetY, nItem.TotalHeight, nItem.Rot, nItem.ExtraData)); } handler = new NotFurniStatePosMatch(item, items, itemsState, originalItemLocation); break; } case InteractionType.conditionnotingroup: { handler = new NotActorInGroup(room.RoomData.GroupId, item); break; } case InteractionType.conditionnotinteam: { var junk = clientMessage.PopWiredInt32(); var team = (Team)clientMessage.PopWiredInt32(); handler = new NotActorInTeam(team, item); break; } case InteractionType.conditionnotusercount: { var junk = clientMessage.PopWiredInt32(); var minUsers = clientMessage.PopWiredUInt(); var maxUsers = clientMessage.PopWiredUInt(); handler = new NotUserCountIn(minUsers, maxUsers, item); break; } case InteractionType.conditionnotstuffis: { var junk = clientMessage.PopWiredInt32(); var message = clientMessage.PopFixedString(); int furniCount; var items = GetItems(clientMessage, room, out furniCount); var delay = clientMessage.PopWiredInt32(); handler = new NotStuffIs(item, items); break; } case InteractionType.conditionwearingeffect: { var junk = clientMessage.PopWiredInt32(); var effect = clientMessage.PopWiredUInt(); handler = new UserWearingEffect(effect, item); break; } case InteractionType.conditionnotwearingeffect: { var junk = clientMessage.PopWiredInt32(); var effect = clientMessage.PopWiredUInt(); handler = new UserNotWearingEffect(effect, item); break; } case InteractionType.conditionwearingbadge: { var junk = clientMessage.PopWiredInt32(); var badgeID = clientMessage.PopFixedString(); handler = new UserWearingBadge(badgeID, item); break; } case InteractionType.conditionnotwearingbadge: { var junk = clientMessage.PopWiredInt32(); var badgeID = clientMessage.PopFixedString(); handler = new UserNotWearingBadge(badgeID, item); break; } case InteractionType.conditiondaterange: { var junk = clientMessage.PopWiredInt32(); var startdate = clientMessage.PopWiredInt32(); var enddate = clientMessage.PopWiredInt32(); handler = new DateRangeActive(startdate, enddate, item); break; } default: return; } item.wiredCondition = handler; room.GetWiredHandler().conditionHandler.AddConditionToTile(item.Coordinate, item.wiredCondition); room.GetRoomItemHandler().UpdateWiredItem(item); Session.SendMessage(new ServerMessage(Outgoing.SaveWired)); }
private static void HandleConditionLoad(IWiredCondition handler, RoomItem item) { if (item.wiredCondition != null) item.wiredCondition.Dispose(); item.wiredCondition = handler; }
internal static void HandleConditionSave(uint itemID, Room room, ClientMessage clientMessage) { RoomItem item = room.GetRoomItemHandler().GetItem(itemID); if (item == null) { return; } if (item.wiredHandler != null) { item.wiredHandler.Dispose(); item.wiredHandler = null; } InteractionType type = item.GetBaseItem().InteractionType; if (type != InteractionType.conditionfurnishaveusers && type != InteractionType.conditionstatepos && type != InteractionType.conditiontimelessthan && type != InteractionType.conditiontimemorethan && type != InteractionType.conditiontriggeronfurni) { return; } clientMessage.AdvancePointer(1); bool a = clientMessage.ReadBoolean(); bool b = clientMessage.ReadBoolean(); bool c = clientMessage.ReadBoolean(); clientMessage.AdvancePointer(2); int furniCount; List <RoomItem> items = GetItems(clientMessage, room, out furniCount); IWiredCondition handler = null; switch (type) { case InteractionType.conditionfurnishaveusers: { handler = new FurniHasUser(item, items); break; } case InteractionType.conditionstatepos: { handler = new FurniStatePosMatch(item, items); break; } case InteractionType.conditiontimelessthan: { handler = new LessThanTimer(500, room, item); break; } case InteractionType.conditiontimemorethan: { handler = new MoreThanTimer(500, room, item); break; } case InteractionType.conditiontriggeronfurni: { handler = new TriggerUserIsOnFurni(item, items); break; } default: return; } item.wiredCondition = handler; room.GetWiredHandler().conditionHandler.AddOrIgnoreRefferance(item); using (IQueryAdapter dbClient = FirewindEnvironment.GetDatabaseManager().getQueryreactor()) { handler.SaveToDatabase(dbClient); } }
internal static void HandleConditionSave(GameClient Session, uint itemID, Room room, ClientMessage clientMessage) { // // id, resolveIntParams, resolveStringParam, getStuffIds, resolveStuffSelectionType RoomItem item = room.GetRoomItemHandler().GetItem(itemID); if (item == null) { return; } if (item.wiredCondition != null) { item.wiredCondition.Dispose(); item.wiredCondition = null; } InteractionType type = item.GetBaseItem().InteractionType; if (type != InteractionType.conditionfurnishaveusers && type != InteractionType.conditionstatepos && type != InteractionType.conditiontimelessthan && type != InteractionType.conditiontimemorethan && type != InteractionType.conditiontriggeronfurni) { return; } // Parse data int[] intParams = new int[clientMessage.ReadInt32()]; for (int i = 0; i < intParams.Length; i++) { intParams[i] = clientMessage.ReadInt32(); } string stringParam = clientMessage.ReadString(); int furniCount; List <RoomItem> items = GetItems(clientMessage, room, out furniCount); int stuffSelectionType = clientMessage.ReadInt32(); IWiredCondition handler = null; switch (type) { case InteractionType.conditionfurnishaveusers: { handler = new FurniHasUser(item, items); break; } case InteractionType.conditionstatepos: { handler = new FurniStatePosMatch(item, items); break; } case InteractionType.conditiontimelessthan: { handler = new LessThanTimer(500, room, item); break; } case InteractionType.conditiontimemorethan: { handler = new MoreThanTimer(500, room, item); break; } case InteractionType.conditiontriggeronfurni: { handler = new TriggerUserIsOnFurni(item, items); break; } default: return; } item.wiredCondition = handler; room.GetWiredHandler().conditionHandler.AddOrIgnoreRefferance(item); using (IQueryAdapter dbClient = FirewindEnvironment.GetDatabaseManager().getQueryreactor()) { handler.SaveToDatabase(dbClient); } Session.SendMessage(new ServerMessage(Outgoing.SaveWired)); }