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.ATCompState; //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); }
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); }
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; }
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); }
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; } CompSurrogateOwner csc = null; CompSkyMind csm = __instance.TryGetComp <CompSkyMind>(); csc = crt.controller.ATCompSurrogateOwner; 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); } }