Example #1
0
        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);
 }
Example #4
0
 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.
 }
Example #5
0
        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;
            }
        }
Example #6
0
 // ===================== Setup work =====================
 public void InitializeData_DispatcherPick(Faction faction, int hitPoints, int landingDuration, SpaceshipKind spaceshipKind)
 {
     base.InitializeData(faction, hitPoints, landingDuration, spaceshipKind);
 }
Example #7
0
 public void InitializeData_Damaged(Faction faction, int hitPoints, int landingDuration, SpaceshipKind spaceshipKind, int initialHitPoints)
 {
     base.InitializeData(faction, hitPoints, landingDuration, spaceshipKind);
     this.initialHitPoints = initialHitPoints;
 }
Example #8
0
        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);
        }
Example #9
0
 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.
 }
Example #11
0
 // ===================== Setup work =====================
 public void InitializeData_Medical(Faction faction, int hitPoints, int landingDuration, SpaceshipKind spaceshipKind)
 {
     base.InitializeData_Cargo(faction, hitPoints, landingDuration, spaceshipKind);
 }