예제 #1
0
		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);
		}