internal void Update() { // Check if the Machine has been removed from this tile if (!Location.Location.Objects.TryGetValue(new Vector2(Position.X, Position.Y), out Object CurrentMachine) || CurrentMachine != Machine) { Location.OnMachineRemoved(this); return; } try { if (!Context.IsMultiplayer || Context.IsMainPlayer) { if (PreviousMachineState != null) { if (PreviousMachineState.PreviousMinutesUntilReady <= 0 && PreviousMachineState.CurrentMinutesUntilReady > 0) { foreach (KeyValuePair <AugmentorType, int> KVP in PlacedAugmentorsManager.GetOrderedEnumerable(Quantities)) { AugmentorType Type = KVP.Key; int AttachedQuantity = KVP.Value; if (AttachedQuantity > 0) { if (Type == AugmentorType.Output) { OutputAugmentor.OnMinutesUntilReadySet(PreviousMachineState, AttachedQuantity); } else if (Type == AugmentorType.Speed) { SpeedAugmentor.OnMinutesUntilReadySet(PreviousMachineState, AttachedQuantity); } else if (Type == AugmentorType.Efficiency) { EfficiencyAugmentor.OnMinutesUntilReadySet(PreviousMachineState, AttachedQuantity); } else if (Type == AugmentorType.Quality) { QualityAugmentor.OnMinutesUntilReadySet(PreviousMachineState, AttachedQuantity); } else if (Type == AugmentorType.Production) { ProductionAugmentor.OnMinutesUntilReadySet(PreviousMachineState, AttachedQuantity); } else if (Type == AugmentorType.Duplication) { DuplicationAugmentor.OnMinutesUntilReadySet(PreviousMachineState, AttachedQuantity); } else { throw new NotImplementedException(string.Format("Unrecognized AugmentorType: {0}", Type.ToString())); } } } } } } } finally { PreviousMachineState = new MachineState(this.Machine); } }
public SerializablePlacedAugmentors(PlacedAugmentorsManager CopyFrom) { InitializeDefaults(); if (CopyFrom != null) { this.Locations = CopyFrom.Locations.Select(x => new SerializableAugmentedLocation(x.Value)).ToArray(); } }
public AugmentedLocation(PlacedAugmentorsManager Manager, string UniqueLocationName) { this.Manager = Manager; this.UniqueLocationName = UniqueLocationName; this.Tiles = new Dictionary <string, AugmentedTile>(); }