public void ConfigureShipTexture(SpaceshipKind spaceshipKind) { switch (spaceshipKind) { case SpaceshipKind.CargoPeriodic: case SpaceshipKind.CargoRequested: case SpaceshipKind.Damaged: this.spaceshipTexture = defaultSpaceshipTexture; this.baseSpaceshipScale = defaultSpaceshipScale; break; case SpaceshipKind.DispatcherDrop: case SpaceshipKind.DispatcherPick: this.spaceshipTexture = dispatcherTexture; this.baseSpaceshipScale = defaultSpaceshipScale; break; case SpaceshipKind.Medical: this.spaceshipTexture = medicalSpaceshipTexture; this.baseSpaceshipScale = medicalSpaceshipScale; break; default: Log.ErrorOnce("MiningCo. Spaceship: unhandled SpaceshipKind (" + this.spaceshipKind.ToString() + ") in FlyingSpaceshipTakingOff.ConfigureShipTexture.", 123456785); break; } }
// ===================== Other functions ===================== public TraderKindDef GetCargoKind(SpaceshipKind spaceshipKind) { TraderKindDef cargokind = Util_TraderKindDefOf.spaceshipCargoPeriodicSupply; switch (spaceshipKind) { case SpaceshipKind.CargoPeriodic: cargokind = Util_TraderKindDefOf.spaceshipCargoPeriodicSupply; break; case SpaceshipKind.CargoRequested: cargokind = Util_TraderKindDefOf.spaceshipCargoRequestedSupply; break; case SpaceshipKind.Damaged: cargokind = Util_TraderKindDefOf.spaceshipCargoDamaged; break; case SpaceshipKind.DispatcherDrop: case SpaceshipKind.DispatcherPick: cargokind = Util_TraderKindDefOf.spaceshipCargoDispatcher; break; case SpaceshipKind.Medical: cargokind = Util_TraderKindDefOf.spaceshipCargoMedical; break; default: Log.ErrorOnce("MiningCo. Spaceship: unhandled SpaceshipKind (" + this.spaceshipKind.ToString() + ") in Building_Spaceship.GetCargoKind.", 123456781); break; } return(cargokind); }
public void InitializeData(Faction faction, int hitPoints, int landingDuration, SpaceshipKind spaceshipKind) { this.SetFaction(faction); this.HitPoints = hitPoints; this.takeOffTick = Find.TickManager.TicksGame + landingDuration; this.spaceshipKind = spaceshipKind; this.cargoKind = GetCargoKind(this.spaceshipKind); }
public void InitializeTakingOffParameters(IntVec3 position, Rot4 rotation, SpaceshipKind spaceshipKind) { this.landingPadPosition = position; this.landingPadRotation = rotation; this.spaceshipExactRotation = this.landingPadRotation.AsAngle; this.spaceshipKind = spaceshipKind; ConfigureShipTexture(this.spaceshipKind); base.Tick(); // To update exact position for drawing purpose. }
public void ConfigureShipTexture(SpaceshipKind spaceshipKind) { switch (spaceshipKind) { case SpaceshipKind.CargoPeriodic: case SpaceshipKind.CargoRequested: case SpaceshipKind.Damaged: this.spaceshipTexture = supplySpaceshipTexture; this.spaceshipShadowTexture = supplySpaceshipShadowTexture; this.baseSpaceshipScale = supplySpaceshipScale; break; case SpaceshipKind.DispatcherDrop: case SpaceshipKind.DispatcherPick: this.spaceshipTexture = dispatcherTexture; this.spaceshipShadowTexture = supplySpaceshipShadowTexture; this.baseSpaceshipScale = supplySpaceshipScale; break; case SpaceshipKind.Medical: this.spaceshipTexture = medicalSpaceshipTexture; this.spaceshipShadowTexture = medicalSpaceshipShadowTexture; this.baseSpaceshipScale = medicalSpaceshipScale; break; case SpaceshipKind.Airstrike: this.spaceshipTexture = strikeshipTexture; this.spaceshipShadowTexture = supplySpaceshipShadowTexture; this.baseSpaceshipScale = supplySpaceshipScale; break; default: Log.ErrorOnce("MiningCo. Spaceship: unhandled SpaceshipKind (" + this.spaceshipKind.ToString() + ").", 123456784); break; } }
// ===================== Setup work ===================== public void InitializeData_DispatcherPick(Faction faction, int hitPoints, int landingDuration, SpaceshipKind spaceshipKind) { base.InitializeData(faction, hitPoints, landingDuration, spaceshipKind); }
public void InitializeData_Damaged(Faction faction, int hitPoints, int landingDuration, SpaceshipKind spaceshipKind, int initialHitPoints) { base.InitializeData(faction, hitPoints, landingDuration, spaceshipKind); this.initialHitPoints = initialHitPoints; }
public static FlyingSpaceshipLanding SpawnSpaceship(Building_LandingPad landingPad, SpaceshipKind spaceshipKind) { Building_OrbitalRelay orbitalRelay = Util_OrbitalRelay.GetOrbitalRelay(landingPad.Map); int landingDuration = 0; switch (spaceshipKind) { case SpaceshipKind.CargoPeriodic: landingDuration = cargoPeriodicSupplyLandingDuration; if (orbitalRelay != null) { orbitalRelay.Notify_CargoSpaceshipPeriodicLanding(); } Util_Misc.Partnership.nextPeriodicSupplyTick[landingPad.Map] = Find.TickManager.TicksGame + WorldComponent_Partnership.cargoSpaceshipPeriodicSupplyPeriodInTicks; Messages.Message("A MiningCo. cargo spaceship is landing.", new TargetInfo(landingPad.Position, landingPad.Map), MessageTypeDefOf.NeutralEvent); break; case SpaceshipKind.CargoRequested: landingDuration = cargoRequestedSupplyLandingDuration; if (orbitalRelay != null) { orbitalRelay.Notify_CargoSpaceshipRequestedLanding(); } Util_Misc.Partnership.nextRequestedSupplyMinTick[landingPad.Map] = Find.TickManager.TicksGame + WorldComponent_Partnership.cargoSpaceshipRequestedSupplyPeriodInTicks; Messages.Message("A MiningCo. cargo spaceship is landing.", new TargetInfo(landingPad.Position, landingPad.Map), MessageTypeDefOf.NeutralEvent); break; case SpaceshipKind.Damaged: landingDuration = damagedSpaceshipLandingDuration.RandomInRange; // Letter is sent by incident worker. break; case SpaceshipKind.DispatcherDrop: landingDuration = dispatcherDropDurationInTicks; Messages.Message("A MiningCo. dispatcher is dropping an expedition team.", new TargetInfo(landingPad.Position, landingPad.Map), MessageTypeDefOf.NeutralEvent); break; case SpaceshipKind.DispatcherPick: landingDuration = dispatcherPickDurationInTicks; Messages.Message("A MiningCo. dispatcher is picking an expedition team.", new TargetInfo(landingPad.Position, landingPad.Map), MessageTypeDefOf.NeutralEvent); break; case SpaceshipKind.Medical: landingDuration = medicalSupplyLandingDuration; if (orbitalRelay != null) { orbitalRelay.Notify_MedicalSpaceshipLanding(); } Util_Misc.Partnership.nextMedicalSupplyMinTick[landingPad.Map] = Find.TickManager.TicksGame + WorldComponent_Partnership.medicalSpaceshipRequestedSupplyPeriodInTicks; Messages.Message("A MiningCo. medical spaceship is landing.", new TargetInfo(landingPad.Position, landingPad.Map), MessageTypeDefOf.NeutralEvent); break; } FlyingSpaceshipLanding flyingSpaceship = ThingMaker.MakeThing(Util_Spaceship.SpaceshipLanding) as FlyingSpaceshipLanding; GenSpawn.Spawn(flyingSpaceship, landingPad.Position, landingPad.Map, landingPad.Rotation); flyingSpaceship.InitializeLandingParameters(landingPad, landingDuration, spaceshipKind); return(flyingSpaceship); }
public void InitializeData_DispatcherDrop(Faction faction, int hitPoints, int landingDuration, SpaceshipKind spaceshipKind) { base.InitializeData(faction, hitPoints, landingDuration, spaceshipKind); this.teamDropTick = Find.TickManager.TicksGame + 5 * GenTicks.TicksPerRealSecond; }
// ===================== Setup work ===================== /// <summary> /// Must be called just after spawning the ship to set the correct texture. /// </summary> public void InitializeLandingParameters(Building_LandingPad landingPad, int landingDuration, SpaceshipKind spaceshipKind) { landingPad.Notify_ShipLanding(); this.landingPadPosition = landingPad.Position; this.landingPadRotation = landingPad.Rotation; this.spaceshipExactRotation = this.landingPadRotation.AsAngle; this.landingDuration = landingDuration; this.spaceshipKind = spaceshipKind; ConfigureShipTexture(this.spaceshipKind); this.Tick(); // To update exact position for drawing purpose. }
// ===================== Setup work ===================== public void InitializeData_Medical(Faction faction, int hitPoints, int landingDuration, SpaceshipKind spaceshipKind) { base.InitializeData_Cargo(faction, hitPoints, landingDuration, spaceshipKind); }