public override void renewtoStart() { #if DEBUG Console.WriteLine("renewtoStart for CombatVehcile"); Console.WriteLine(this.strID); Console.WriteLine(StartVehicle.Name); #endif Vehicle ship = StartVehicle.Copy(); ship.IsMemory = true; if (ship.Owner != StartVehicle.Owner && ship.Owner != null) { ship.Owner.Dispose(); // don't need extra empires! } ship.Owner = StartVehicle.Owner; #if DEBUG Console.WriteLine(ship.Name); #endif // copy over the components individually so they can take damage without affecting the starting state ship.Components.Clear(); #if DEBUG Console.WriteLine("copying components"); #endif foreach (var comp in (StartVehicle.Components)) { var ccopy = comp.Copy(); ship.Components.Add(ccopy); ccopy.Container = ship; #if DEBUG Console.WriteLine(ccopy.Name); Console.WriteLine("Container is " + ccopy.Container); #endif } #if DEBUG Console.WriteLine("Done"); #endif WorkingVehicle = ship; RefreshWeapons(); foreach (var w in Weapons) { w.nextReload = 1; } base.renewtoStart(); SpaceVehicle start_v = (SpaceVehicle)this.StartCombatant; if (start_v.Design.Strategy == null) { strategy = new StragegyObject_Default(); } else { strategy = start_v.Design.Strategy.Copy(); } #if DEBUG Console.WriteLine("Done"); #endif }
static void Main(string[] args) { IVehicle newVehicle = Vehicles.GetCar(); StartVehicle start = new StartVehicle(newVehicle); StopVehicle stop = new StopVehicle(newVehicle); BrakeVehicle brake = new BrakeVehicle(newVehicle); SpeedUpVehicle speedUp = new SpeedUpVehicle(newVehicle); CarInvoker carInvoker = new CarInvoker(start); carInvoker.InvokeCarCommand(); carInvoker = new CarInvoker(stop); carInvoker.InvokeCarCommand(); carInvoker = new CarInvoker(brake); carInvoker.InvokeCarCommand(); carInvoker = new CarInvoker(speedUp); carInvoker.InvokeCarCommand(); carInvoker.InvokeCarCommand(); carInvoker.InvokeCarCommand(); carInvoker.InvokeCarCommand(); carInvoker.InvokeCarCommand(); //---Notice MPH newVehicle = Vehicles.GetMotorcycle(); StartVehicle startMotorCycle = new StartVehicle(newVehicle); MotorcycleInvoker motorcycleInvoker = new MotorcycleInvoker(startMotorCycle); motorcycleInvoker.InvokeMotorcycleCommand(); }