コード例 #1
0
        public override AcceptanceReport CanDesignateThing(Thing t)
        {
            base.CanDesignateThing(t);

            if (t is Pawn)
            {
                Pawn             cp  = (Pawn)t;
                CompSkyMind      csm = cp.TryGetComp <CompSkyMind>();
                CompAndroidState cas = cp.TryGetComp <CompAndroidState>();

                //Si pas clone ou clone deja utilisé on degage
                if (cas == null || !cas.isSurrogate || cas.surrogateController != null || csm.Infected != -1)
                {
                    return(false);
                }

                if (!Utils.GCATPP.isConnectedToSkyMind(cp))
                {
                    //Tentative connection au skymind
                    if (!Utils.GCATPP.connectUser(cp))
                    {
                        return(false);
                    }
                }

                target       = cp;
                kindOfTarget = 1;
                return(true);
            }
            else if (fromSkyCloud && (t.def.thingClass == typeof(Building_Turret) || t.def.thingClass.IsSubclassOf(typeof(Building_Turret))))
            {
                Building build = (Building)t;
                CompRemotelyControlledTurret crt = t.TryGetComp <CompRemotelyControlledTurret>();

                if (crt != null && crt.controller == null && !t.IsBrokenDown() && t.TryGetComp <CompPowerTrader>().PowerOn)
                {
                    if (!Utils.GCATPP.isConnectedToSkyMind(t))
                    {
                        //Tentative connection au skymind
                        if (!Utils.GCATPP.connectUser(t))
                        {
                            return(false);
                        }
                    }

                    target       = t;
                    kindOfTarget = 2;
                    return(true);
                }
            }

            return(false);
        }
コード例 #2
0
        public void stopRemotelyControlledTurret(Pawn mind)
        {
            if (!controlledTurrets.ContainsKey(mind))
            {
                return;
            }

            CompRemotelyControlledTurret crt = controlledTurrets[mind].TryGetComp <CompRemotelyControlledTurret>();

            crt.controller = null;

            controlledTurrets.Remove(mind);
            Utils.soundDefTurretConnectionStopped.PlayOneShot(null);
        }
コード例 #3
0
        public void stopRemotelyControlledTurret(Pawn mind)
        {
            if (!controlledTurrets.TryGetValue(mind, out var value))
            {
                return;
            }

            CompRemotelyControlledTurret crt = value.TryGetComp <CompRemotelyControlledTurret>();

            crt.controller = null;

            controlledTurrets.Remove(mind);
            Utils.soundDefTurretConnectionStopped.PlayOneShot(null);
        }
コード例 #4
0
        public static void Listener(Building_TurretGun __instance, ref bool __result)
        {
            CompRemotelyControlledTurret crt = __instance.TryGetComp <CompRemotelyControlledTurret>();

            //Si pas de controlleur alors on ne peut pas controller la tourelle
            if (crt == null || crt.controller == null)
            {
                return;
            }

            CompMannable mannable = (CompMannable)mannableComp.GetValue(__instance);

            // bool controlled = (bool)PlayerControlled.GetValue(__instance);
            __result = __result || mannable == null;
        }
コード例 #5
0
        public void setRemotelyControlledTurret(Pawn mind, Building turret)
        {
            if (!storedMinds.Contains(mind) || controlledTurrets.ContainsKey(mind))
            {
                return;
            }

            CompRemotelyControlledTurret crt = turret.TryGetComp <CompRemotelyControlledTurret>();

            crt.controller          = mind;
            controlledTurrets[mind] = turret;

            Utils.soundDefTurretConnection.PlayOneShot(null);
            MoteMaker.ThrowDustPuffThick(turret.Position.ToVector3Shifted(), turret.Map, 4.0f, Color.blue);

            Messages.Message("ATPP_SurrogateConnectionOK".Translate(mind.LabelShortCap, turret.LabelShortCap), turret, MessageTypeDefOf.PositiveEvent);
        }
コード例 #6
0
        public static void Listener(Building_TurretGun __instance)
        {
            CompRemotelyControlledTurret crt = __instance.TryGetComp <CompRemotelyControlledTurret>();

            //Si pas de controlleur alors on ne peut pas controller la tourelle
            if (crt == null || crt.controller == null)
            {
                return;
            }
            CompSkyMind csm = __instance.TryGetComp <CompSkyMind>();

            CompSurrogateOwner csc = crt.controller.TryGetComp <CompSurrogateOwner>();

            if (csm != null && csm.connected && crt.controller != null && csc != null && csc.skyCloudHost != null && csc.skyCloudHost.Map == __instance.Map)
            {
                GenDraw.DrawLineBetween(__instance.TrueCenter(), csc.skyCloudHost.TrueCenter(), SimpleColor.Red);
            }
        }