/** * Expects the tech type for your custom spawnable. This gives us a unique number that we can use. */ public static PingType RegisterNewPingType(TechType type, string pingName, Sprite sprite) { PingType pingType = GetPingType(type); if (cachedSprites.ContainsKey(pingType) == false) { if (nameToType.ContainsKey(pingName)) { Log.Error($"CustomBeaconManager::RegisterNewPingType Attempted to register a new ping with name {pingName} but that is already taken."); return(pingType); } cachedSprites.Add(pingType, new Atlas.Sprite(sprite)); nameToType.Add(pingName, pingType); if (PingManager.sCachedPingTypeStrings.valueToString.ContainsKey(pingType) == false) { PingManager.sCachedPingTypeStrings.valueToString.Add(pingType, pingName); } if (PingManager.sCachedPingTypeTranslationStrings.valueToString.ContainsKey(pingType) == false) { PingManager.sCachedPingTypeTranslationStrings.valueToString.Add(pingType, pingName); } } Log.Print($"CustomBeaconManager::RegisterNewPingType ({type}, {pingName}) -> {pingType}", false); return(pingType); }
public Struct(float x = 0f, float y = 0f, int targetNetworkId = 0, PingType type = PingType.Normal) { X = x; Y = y; TargetNetworkId = targetNetworkId; Type = type; }
public void Initialize(HabitatControlPanel target, PingType initialType) { base.Initialize(); this.target = target; var names = Enum.GetNames(typeof(PingType)); var values = (PingType[])Enum.GetValues(typeof(PingType)); var color = PingManager.colorOptions[target.BeaconColorIndex]; int initialPage = 0; for (int i = 0; i < buttons.Count; ++i) { var button = buttons[i]; var name = names[i + 1]; var value = values[i + 1]; var sprite = SpriteManager.Get(SpriteManager.Group.Pings, name); button.Initialize((int)value, color, value == initialType, sprite); if (value == initialType) { initialPage = i / ButtonsPerPage; } } onSelect = OnSelect; ShowPage(initialPage); }
public void CallCmdSendMinimapPing( int teamIndex, Vector3 worldPosition, PingType pingType) { if (!EvoSGameConfig.NetworkIsClient) { Log.Print(LogType.Error, "Command function CmdSendMinimapPing called on server."); } else if (EvoSGameConfig.NetworkIsServer) { this.CmdSendMinimapPing(teamIndex, worldPosition, pingType); } else { NetworkWriter writer = new NetworkWriter(); writer.Write((short)0); writer.Write((short)5); writer.WritePackedUInt32((uint)kCmdCmdSendMinimapPing); writer.Write(GetComponent <NetworkIdentity>().netId); writer.WritePackedUInt32((uint)teamIndex); writer.Write(worldPosition); writer.Write((int)pingType); // this.SendCommandInternal(writer, 0, "CmdSendMinimapPing"); throw new NotImplementedException(); } }
public void SendCustomPingsWithSnakeCase() { PingType <NoReasonCodes> customPing = new PingType <NoReasonCodes>( name: "custom_ping", includeClientId: true, sendIfEmpty: false, reasonCodes: null ); BooleanMetricType sampleMetric = new BooleanMetricType( disabled: false, category: "test", lifetime: Lifetime.Ping, name: "boolean_metric", sendInPings: new string[] { "custom_ping" } ); sampleMetric.Set(true); Assert.True(sampleMetric.TestHasValue()); customPing.Submit(); MockUploader.UploadRequest request = mockUploader.GetPendingUpload(); Assert.Equal("custom_ping", request.docType); // Check that we have a non-null client id. JsonDocument jsonPayload = JsonDocument.Parse(request.payload); JsonElement root = jsonPayload.RootElement; Assert.NotNull(root.GetProperty("client_info").GetProperty("client_id").GetString()); // TODO: Check the ping schema. // checkPingSchema(pingJson) }
private static bool Prefix(uGUI_PingEntry __instance, int id, bool visible, PingType type, string name, ref int colorIndex) { CustomPings.Initialize(); __instance.gameObject.SetActive(true); uGUI_PingEntry_id.SetValue(__instance, id); __instance.visibility.isOn = visible; __instance.visibilityIcon.sprite = ((!visible) ? __instance.spriteHidden : __instance.spriteVisible); __instance.UpdateLabel(type, name); for (int i = 0; i < 5; ++i) { Toggle toggle = __instance.colorSelectors[i]; toggle.onValueChanged.RemoveAllListeners(); toggle.isOn = false; toggle.gameObject.SetActive(false); } __instance.colorSelectionIndicator.gameObject.SetActive(false); var controller = __instance.gameObject.GetComponent <PingEntryController>(); if (controller == null) { controller = __instance.gameObject.AddComponent <PingEntryController>(); } controller.OnInitialize(id, type, colorIndex); __instance.icon.sprite = SpriteManager.Get(SpriteManager.Group.Pings, PingManager.sCachedPingTypeStrings.Get(type)); __instance.icon.color = CustomPings.GetColor(colorIndex); return(false); }
/// <summary> /// 向服务端发送请求包接口 /// </summary> /// <param name="domin">Minecraft域名或ip</param> /// <param name="port">Minecraft服务端端口</param> /// <param name="type">域名样式</param> /// <returns>返回 MCPEData 类型对象</returns> public static MCPEData Ping(string domin, int port, PingType type) { IPAddress ipaddr; try { switch (type) { case PingType._domin_tov4: IPHostEntry host1 = Dns.GetHostEntry(domin); ipaddr = host1.AddressList[0]; return(GetData(ipaddr, port)); case PingType._domin_tov6: IPHostEntry host2 = Dns.GetHostEntry(domin); ipaddr = host2.AddressList[0]; return(GetData(ipaddr, port, true)); case PingType._ipv4: return(GetData(IPAddress.Parse(domin), port)); case PingType._ipv6: return(GetData(IPAddress.Parse(domin), port, true)); default: return(null); } } catch (Exception Ex) { throw new Error("Tools.Minecraft.MCPE", Ex.ToString()); } }
/** * Expects the tech type for your custom spawnable. This gives us a unique number that we can use. */ public static PingType GetPingType(TechType type) { int number = (int)type; PingType result = (PingType)number; Log.Print($"CustomBeaconManager::GetPingType turned {type} -> ({number}, {result})", false); return(result); }
public void setPingState(PingType pingType, int colorIndex, bool enabled, bool save = true) { pingEnabled[hash(pingType, colorIndex)] = enabled; if (save) { SaveLoad.save(saveName, this); } }
internal void SetValue(PingType type, int colorIndex) { var color = PingManager.colorOptions[colorIndex]; var spriteName = Enum.GetName(typeof(PingType), type); var sprite = SpriteManager.Get(SpriteManager.Group.Pings, spriteName); activeButton.Initialize(sprite, color); }
public FormPing(PingType type) { InitializeComponent(); btnExit.Enabled = false; currentType = type; tokenSource = new CancellationTokenSource(); token = tokenSource.Token; pingTimeout = int.Parse(Settings.GetSetting("PING_TIMEOUT")); Text = "Ping Test"; }
public StatusType Ping(ref SIFHeaderType SIFHeader, PingType Ping1) { PingRequest inValue = new PingRequest(); inValue.SIFHeader = SIFHeader; inValue.Ping = Ping1; PongResponse retVal = ((IptFlowControl)(this)).Ping(inValue); SIFHeader = retVal.SIFHeader; return(retVal.Status); }
private static bool Prefix(uGUI_PingEntry __instance, PingType type, string name) { string text = Language.main.Get(PingManager.sCachedPingTypeTranslationStrings.Get(type)); if (!string.IsNullOrEmpty(name)) { text = string.Format("{1} ({0})", text, name); } __instance.label.text = text; return(false); }
public static Ping FromNet(BinaryReader reader) { string uuid = reader.ReadString(); PingType pingType = (PingType)reader.ReadByte(); BitsByte flags = reader.ReadByte(); bool notify = flags[0]; bool notSpawned = flags[1]; Ping ping = new Ping(uuid, pingType, notify); ping.DecayDuration = reader.ReadInt32(); ping.RefreshDuration(); if (notSpawned) { ping.DecayTimer = reader.ReadInt32(); } if (ping.HasLocation) { ping.TileLocation = new Point16(reader.ReadInt16(), reader.ReadInt16()); } if (ping.HasSize) { ping.TileSize = new Point16(reader.ReadInt16(), reader.ReadInt16()); } if (ping.HasTileCount) { ping.TileCount = reader.ReadInt16(); } if (ping.HasWhoAmI) { ping.WhoAmI = reader.ReadInt16(); } if (ping.HasType) { ping.Type = reader.ReadInt32(); } if (ping.HasText) { ping.Text = reader.ReadString(); } return(ping); }
public static long Ping(PingType pingType, string host) { if (pingType == PingType.ICMP) { return(PingOverICMP(host)); } else if (pingType == PingType.HTTPS) { return(PingOverWeb("https://" + host + "/ping")); } return(-1); // Unkown PingType }
public static void setPingEnabled(PingType pingType, int colorIndex, bool enabled) { if (!pingTogglesEnabled) { return; } if (PingToggleToolbar.instance) { PingToggleToolbar.instance.pingStates.setPingState(pingType, colorIndex, enabled); PingToggleToolbar.instance.updateButtons(); } }
/// <summary> /// Safely looks for a modded ping type in the SMLHelper PingTypeCache and outputs its <see cref="PingType"/> value when found. /// </summary> /// <param name="pingTypeString">The string used to define the modded PingType</param> /// <param name="moddedPingType">The PingType enum value. Defaults to <see cref="PingType.None"/> when the PingType was not found.</param> /// <returns><c>True</c> if the PingType was found; Otherwise <c>false</c></returns> bool IPingHandler.TryGetModdedPingType(string pingTypeString, out PingType moddedPingType) { var cache = PingTypePatcher.cacheManager.RequestCacheForTypeName(pingTypeString, false); if (cache != null) { moddedPingType = (PingType)cache.Index; return(true); } moddedPingType = PingType.None; return(false); }
public Ping(Player player, PingType pingType, bool notify) { PlayerUUID = PingsPlayer.GetUUIDFromPlayer(player); PingType = pingType; DecayTimer = DecayDuration = 60 * ServerConfig.Instance.PingDuration; //TODO config Notify = notify; TileSize = new Point16(1, 1); Text = string.Empty; }
public int GetPageForType(PingType type) { var values = (PingType[])Enum.GetValues(typeof(PingType)); for (int i = 0; i < buttons.Count; ++i) { var value = values[i + 1]; if (value == target.pingType) { return(i / ButtonsPerPage); } } return(0); }
/// <summary> /// Ping要求を取得する /// </summary> /// <param name="pingType"></param> /// <param name="index"></param> /// <returns></returns> private Request::Ping GetPingContent(PingType pingType, int index) { string content = pingType switch { PingType.StartRequest => $"rs:{index}", PingType.EndRequest => $"rf:{index}", PingType.StartCommand => $"ps:{index}", _ => $"pf:{index}", }; return(new Request::Ping() { Content = content }); }
public bool?getPingState(PingType pingType, int colorIndex) { if (!pingTogglesEnabled) { return(true); } bool typeExist = pingEnabled.TryGetValue(hash(pingType, -1), out bool typeEnabled); bool colorExist = pingEnabled.TryGetValue(hash(pingType, colorIndex), out bool colorEnabled); if (!typeExist && !colorExist) { return(null); } return((typeEnabled || !typeExist) && (colorEnabled || !colorExist)); }
public override int GetHashCode() { int hash = 1; if (PingType != global::AcFunDanmu.PingRequest.Types.PingType.KInvalid) { hash ^= PingType.GetHashCode(); } if (PingRound != 0) { hash ^= PingRound.GetHashCode(); } if (_unknownFields != null) { hash ^= _unknownFields.GetHashCode(); } return(hash); }
public override bool Equals(object obj) { if (!(obj is Ping ping)) { return(false); } PingType pingType = ping.PingType; if (PingType != ping.PingType) { return(false); } switch (pingType) { case PingType.SingleTile: case PingType.MultiTile: case PingType.ClusterTile: bool check = ping.Type == Type; if (pingType != PingType.ClusterTile) { check &= ping.TileLocation == TileLocation && ping.TileSize == TileSize; } else { //Since clusters can be expanded after pinging, tile size and location varies, all that matters here is overlap Rectangle thisSize = TileDimensions; Rectangle otherSize = ping.TileDimensions; check &= thisSize.Intersects(otherSize); } return(check); case PingType.SelfPlayer: return(ping.WhoAmI == WhoAmI); case PingType.NPC: case PingType.Item: return(ping.WhoAmI == WhoAmI && ping.Type == Type); default: return(false); } }
internal RespondablesMenuBindings() { RespondNoPingType = new PingType("RADIALPINGS_CONTEXT_RESPOND_NO", (PingData pingData, List <string> tokens) => { return(RespondTryApply(pingData, tokens, ResponseType.No)); }, (ref PingData pingData, int catalogIndex, List <string> formatInserts) => { return(RespondModify(ref pingData, catalogIndex, formatInserts, ResponseType.No)); }); RespondNoPingType.pingSkins.Add(new PingSkin(new Color(1f, 0.5f, 0.5f), Resources.Load <Sprite>("@RadialPings:Assets/RadialPings/RadialPingsXIcon.png"), 8f, "RADIALPINGS_MESSAGE_RESPOND_NO", PingIndicator.PingType.Default)); RespondYesPingType = new PingType("RADIALPINGS_CONTEXT_RESPOND_YES", (PingData pingData, List <string> tokens) => { return(RespondTryApply(pingData, tokens, ResponseType.Yes)); }, (ref PingData pingData, int catalogIndex, List <string> formatInserts) => { return(RespondModify(ref pingData, catalogIndex, formatInserts, ResponseType.Yes)); }); RespondYesPingType.pingSkins.Add(new PingSkin(new Color(0.5f, 1f, 0.5f), Resources.Load <Sprite>("@RadialPings:Assets/RadialPings/RadialPingsOIcon.png"), 8f, "RADIALPINGS_MESSAGE_RESPOND_YES", PingIndicator.PingType.Default)); PingCatalog.getAdditionalEntries += (list) => { list.Add(RespondNoPingType); list.Add(RespondYesPingType); }; responseMap[ResponseType.No] = RespondNoPingType; responseMap[ResponseType.Yes] = RespondYesPingType; }
// Start is called before the first frame update void Start() { // Redirect third party library logs to Unity panel. SystemConsoleRedirector.Redirect(); Console.WriteLine("Begin Glean test."); GleanInstance.Initialize( applicationId: "org.mycompany.glean.tests", applicationVersion: "0.1", uploadEnabled: true, configuration: new Configuration(channel: "debug", maxEvents: 500), dataDir: "data" ); // Create a custom ping. var ping = new PingType <NoReasonCodes>( name: "custom", includeClientId: true, sendIfEmpty: false, reasonCodes: null ); // Init launch ping. var metric = new StringMetricType( category: "hello_world", disabled: false, lifetime: Lifetime.Application, name: "test", sendInPings: new string[] { "custom" } ); metric.Set("my_data"); ping.Submit(); Console.WriteLine("End of Glean test."); }
public static PingInstance AddNewBeacon(GameObject gameObject, PingType pingType, string beaconName, int minDist, int maxDist) { Initialize(); if (cachedSprites.ContainsKey(pingType) == false) { Log.Error($"CustomBeaconManager::AddNewBeacon attempted to add a beacon with a PingType ({pingType}) that was not registered with CustomBeaconManager::RegisterNewPingType", false); return(null); } PingInstance pingInstance = gameObject.GetOrAddComponent <PingInstance>(); pingInstance.pingType = pingType; pingInstance.minDist = minDist; pingInstance.maxDist = maxDist; pingInstance.origin = gameObject.transform; pingInstance.SetLabel(beaconName); if (pingUI != null) { pingUI.pings[pingInstance.GetInstanceID()].SetIcon(cachedSprites[pingType]); } return(pingInstance); }
static int hash(PingType pingType, int colorIndex) => ((int)pingType << 8) | (colorIndex & 0xFF);
/// <summary> /// Initializes a new instance of the <see cref="Struct"/> struct. /// </summary> /// <param name="x">The x.</param> /// <param name="y">The y.</param> /// <param name="targetNetworkId">The target network identifier.</param> /// <param name="sourceNetworkId">The source network identifier.</param> /// <param name="type">The type.</param> /// <param name="silent">if set to <c>true</c> [silent].</param> public Struct(float x = 0f, float y = 0f, int targetNetworkId = 0, int sourceNetworkId = 0, PingType type = PingType.Normal, bool silent = false) { X = x; Y = y; TargetNetworkId = targetNetworkId; SourceNetworkId = sourceNetworkId; Type = type; Silent = silent; }
public void ui_setpingenabled(PingType pingType, int colorIndex, bool enabled) => PingToggles.setPingEnabled(pingType, colorIndex, enabled);
public Struct(float x = 0f, float y = 0f, int targetNetworkId = 0, int sourceNetworkId = 0, PingType type = PingType.Normal) { X = x; Y = y; TargetNetworkId = targetNetworkId; SourceNetworkId = sourceNetworkId; Type = type; }
public void OnInitialize(int id, PingType type, int colorIndex) { ping = PingManager.Get(id); Initialize(); }
/** * If the component requires other custom components then do it here. * Read the comment on Components.MantaSeializationFixer if you wish to understand why this horrible system exists. */ public static void SetUpManta(GameObject submarine) { MantaSubmarine mantaSubmarine = submarine.GetComponent <MantaSubmarine>(); Transform applyForceLocation = submarine.FindChild("PointsOfInterest").FindChild("ForceAppliedLocation").transform; MovementController movementController = submarine.GetOrAddComponent <MovementController>(); movementController.ApplyForceLocation = applyForceLocation; GameObject doorLeft = submarine.FindChild("PointsOfInterest").FindChild("PlayerEntranceLeftFlap"); doorLeft.GetComponentInChildren <HingeJoint>().connectedBody = submarine.GetComponent <Rigidbody>(); HingeJointDoor hingeDoorLeft = doorLeft.GetOrAddComponent <HingeJointDoor>(); hingeDoorLeft.OverwriteTargetVelocity = true; hingeDoorLeft.TargetVelocity = 150f; hingeDoorLeft.TriggerToEverything = false; hingeDoorLeft.TriggerToPlayer = true; hingeDoorLeft.TriggerToVehicles = false; hingeDoorLeft.OpenSound = CyclopsDefaultAssets.PLAYER_HATCH_OPEN; hingeDoorLeft.CloseSound = CyclopsDefaultAssets.PLAYER_HATCH_CLOSE; GameObject doorRight = submarine.FindChild("PointsOfInterest").FindChild("PlayerEntranceRightFlap"); doorRight.GetComponentInChildren <HingeJoint>().connectedBody = submarine.GetComponent <Rigidbody>(); HingeJointDoor hingeDoorRight = doorRight.GetOrAddComponent <HingeJointDoor>(); hingeDoorRight.OverwriteTargetVelocity = true; hingeDoorRight.TargetVelocity = 150f; hingeDoorRight.TriggerToEverything = false; hingeDoorRight.TriggerToPlayer = true; hingeDoorRight.TriggerToVehicles = false; hingeDoorRight.OpenSound = CyclopsDefaultAssets.PLAYER_HATCH_OPEN; hingeDoorRight.CloseSound = CyclopsDefaultAssets.PLAYER_HATCH_CLOSE; GameObject vehicleDoorLeft = submarine.FindChild("PointsOfInterest").FindChild("VehicleEntranceLeftFlap"); vehicleDoorLeft.GetComponentInChildren <HingeJoint>().connectedBody = submarine.GetComponent <Rigidbody>(); HingeJointDoor hingeVehicleDoorLeft = vehicleDoorLeft.GetOrAddComponent <HingeJointDoor>(); hingeVehicleDoorLeft.OverwriteTargetVelocity = true; hingeVehicleDoorLeft.TargetVelocity = 150f; hingeVehicleDoorLeft.TriggerToEverything = false; hingeVehicleDoorLeft.TriggerToPlayer = false; hingeVehicleDoorLeft.TriggerToVehicles = true; hingeVehicleDoorLeft.OpenSound = CyclopsDefaultAssets.DOCKING_DOORS_OPEN; hingeVehicleDoorLeft.CloseSound = CyclopsDefaultAssets.DOCKING_DOORS_CLOSE; GameObject vehicleDoorRight = submarine.FindChild("PointsOfInterest").FindChild("VehicleEntranceRightFlap"); vehicleDoorRight.GetComponentInChildren <HingeJoint>().connectedBody = submarine.GetComponent <Rigidbody>(); HingeJointDoor hingeVehicleDoorRight = vehicleDoorRight.GetOrAddComponent <HingeJointDoor>(); hingeVehicleDoorRight.OverwriteTargetVelocity = true; hingeVehicleDoorRight.TargetVelocity = 150f; hingeVehicleDoorRight.TriggerToEverything = false; hingeVehicleDoorRight.TriggerToPlayer = false; hingeVehicleDoorRight.TriggerToVehicles = true; hingeVehicleDoorRight.OpenSound = CyclopsDefaultAssets.DOCKING_DOORS_OPEN; hingeVehicleDoorRight.CloseSound = CyclopsDefaultAssets.DOCKING_DOORS_CLOSE; GameObject entrancePosition = submarine.FindChild("PointsOfInterest").FindChild("EntranceTeleportSpot"); GameObject entranceHatch = submarine.FindChild("PointsOfInterest").FindChild("PlayerEntrance").FindChild("Base"); EntranceHatch entranceHatchTeleport = entranceHatch.GetOrAddComponent <EntranceHatch>(); entranceHatchTeleport.HoverText = "Board Manta"; entranceHatchTeleport.HoverHandReticle = HandReticle.IconType.Hand; entranceHatchTeleport.TeleportTarget = entrancePosition; entranceHatchTeleport.Submarine = mantaSubmarine; entranceHatchTeleport.EnteringSubmarine = true; GameObject leavePosition = submarine.FindChild("PointsOfInterest").FindChild("LeaveTeleportSpot"); GameObject leaveHatch = submarine.FindChild("PointsOfInterest").FindChild("PlayerEntrance").FindChild("Top"); EntranceHatch leaveHatchTeleport = leaveHatch.GetOrAddComponent <EntranceHatch>(); leaveHatchTeleport.HoverText = "Disembark Manta"; leaveHatchTeleport.HoverHandReticle = HandReticle.IconType.Hand; leaveHatchTeleport.TeleportTarget = leavePosition; leaveHatchTeleport.Submarine = mantaSubmarine; leaveHatchTeleport.EnteringSubmarine = false; GameObject steeringConsolePOI = submarine.FindChild("PointsOfInterest").FindChild("SteeringConsole"); GameObject steeringConsoleLeftHandTarget = submarine.FindChild("PointsOfInterest").FindChild("SteeringConsole").FindChild("LeftIKTarget"); GameObject steeringConsoleRightHandTarget = submarine.FindChild("PointsOfInterest").FindChild("SteeringConsole").FindChild("RightIKTarget"); GameObject playerParentWhilePiloting = submarine.FindChild("PointsOfInterest").FindChild("SteeringConsole").FindChild("PlayerLockedWhileSteeringPosition"); SteeringConsole steeringConsole = steeringConsolePOI.GetOrAddComponent <SteeringConsole>(); steeringConsole.MovementController = submarine.GetComponent <MovementController>(); steeringConsole.ParentWhilePilotingGO = playerParentWhilePiloting; steeringConsole.LeftHandIKTarget = steeringConsoleLeftHandTarget; steeringConsole.RightHandIKTarget = steeringConsoleRightHandTarget; steeringConsole.Submarine = mantaSubmarine; CyclopsCollisionSounds collisionSounds = submarine.GetOrAddComponent <CyclopsCollisionSounds>(); MovementData normalSpeedMovementData = new MovementData { ForwardAccelerationSpeed = 5f, BackwardsAccelerationSpeed = 3f, AscendDescendSpeed = 3f, RotationSpeed = 0.3f, StrafeSpeed = 2f }; EngineManager engineManager = submarine.GetOrAddComponent <EngineManager>(); engineManager.SetMovementDataForEngineState(EngineState.SLOW, normalSpeedMovementData); engineManager.SetMovementDataForEngineState(EngineState.NORMAL, normalSpeedMovementData); engineManager.SetMovementDataForEngineState(EngineState.FAST, normalSpeedMovementData); engineManager.SetMovementDataForEngineState(EngineState.SPECIAL, normalSpeedMovementData); CyclopsStartupPowerDownSequence cyclopsStartupPowerDownSequence = submarine.GetOrAddComponent <CyclopsStartupPowerDownSequence>(); CyclopsEngineStateChangedCallouts cyclopsEngineStateChangedCallouts = submarine.GetOrAddComponent <CyclopsEngineStateChangedCallouts>(); movementController.EngineManager = engineManager; CyclopsWelcomeCallout cyclopsWelcomeCallout = submarine.GetOrAddComponent <CyclopsWelcomeCallout>(); CyclopsEngineSound cyclopsEngineSound = submarine.GetOrAddComponent <CyclopsEngineSound>(); cyclopsEngineSound.RampUpSpeed = 0.2f; cyclopsEngineSound.RampDownSpeed = 0.2f; movementController.EngineSound = cyclopsEngineSound; OxygenReplenishment oxygenReplenishment = submarine.GetOrAddComponent <OxygenReplenishment>(); oxygenReplenishment.OxygenPerSecond = 15f; oxygenReplenishment.OxygenEnergyCost = 0.1f; LiveMixin liveMixin = submarine.GetOrAddComponent <LiveMixin>(); liveMixin.data = CyclopsLiveMixinData.Get(); // TO:DO Create a proper health system for the manta. liveMixin.data.knifeable = true; // TO:DO remove just here for testing purposes. liveMixin.data.maxHealth = 500; GameObject externalLights = submarine.FindChild("Lights").FindChild("Exterior"); GameObject internalLights = submarine.FindChild("Lights").FindChild("Interior"); LightsManager lightsManager = submarine.GetOrAddComponent <LightsManager>(); List <Light> internalLightsList = new List <Light>(); List <Light> externalLightsList = new List <Light>(); foreach (Light light in externalLights.GetComponentsInChildren <Light>()) { externalLightsList.Add(light); } foreach (Light light in internalLights.GetComponentsInChildren <Light>()) { internalLightsList.Add(light); } lightsManager.ExternalLights = externalLightsList; lightsManager.InternalLights = internalLightsList; lightsManager.ExternalLightsOnIntensity = 1.5f; lightsManager.ExternalLightsOffIntensity = 0f; lightsManager.InternalLightsOnIntensity = 1.5f; lightsManager.InternalLightsOffIntensity = 0f; lightsManager.EnableInternalLightsOnStart = true; lightsManager.EnableExternalLightsOnStart = true; CyclopsUnderAttackEmergencyLighting emergencyLighting = submarine.GetOrAddComponent <CyclopsUnderAttackEmergencyLighting>(); emergencyLighting.LightsAffected = internalLightsList; submarine.GetOrAddComponent <CyclopsUnderAttackCallout>(); ExternalDamageManager externalDamageManager = submarine.GetOrAddComponent <ExternalDamageManager>(); externalDamageManager.DamagePoints = submarine.FindChild("PointsOfInterest").FindChild("DamagePoints").transform; externalDamageManager.SubmarineLiveMixin = liveMixin; externalDamageManager.LiveMixinDataForExternalDamagePoints = CyclopsExternalDamagePointLiveMixinData.Get(); externalDamageManager.DamagePointParticleEffects = new List <GameObject>() { CyclopsDefaultAssets.EXTERNAL_DAMAGE_POINT_PARTICLES, }; externalDamageManager.DamagePointGameObjects = new List <GameObject>() { CyclopsDefaultAssets.EXTERNAL_DAMAGE_POINT, }; InternalFireManager internalFireManager = submarine.GetOrAddComponent <InternalFireManager>(); internalFireManager.SubmarineLiveMixin = liveMixin; internalFireManager.FirePoints = submarine.FindChild("PointsOfInterest").FindChild("FirePoints").transform; internalFireManager.FirePrefabs = new List <GameObject>() { CyclopsDefaultAssets.CYCLOPS_FIRE, }; internalFireManager.DamageDonePerFirePerSecond = 5f; internalFireManager.Submarine = mantaSubmarine; internalFireManager.ChancePerDamageTakenToSpawnFire = 5; AutoRegenConditional autoRegen = submarine.GetOrAddComponent <AutoRegenConditional>(); autoRegen.InternalFireManager = internalFireManager; autoRegen.ExternalDamageManager = externalDamageManager; autoRegen.LiveMixin = liveMixin; autoRegen.RegenPerSecond = 2f; InternalLeakManager internalLeakManage = submarine.GetOrAddComponent <InternalLeakManager>(); internalLeakManage.LeakPrefabs = new List <GameObject>() { CyclopsDefaultAssets.WATER_LEAK }; DeathManager deathManager = submarine.GetOrAddComponent <DeathManager>(); deathManager.DeathPreparationTime = 22f; BasicDeath basicDeath = submarine.GetOrAddComponent <BasicDeath>(); basicDeath.TimeTillDeletionOfSub = 60f; basicDeath.FallSpeed = 2f; CyclopsDeathExplosion cyclopsDeathExplosion = submarine.GetOrAddComponent <CyclopsDeathExplosion>(); cyclopsDeathExplosion.TimeToExplosionAfterDeath = 18f; cyclopsDeathExplosion.FMODAsset = CyclopsDefaultAssets.CYCLOPS_EXPLOSION_FMOD; CyclopsAbandonShip cyclopsAbandonShip = submarine.GetOrAddComponent <CyclopsAbandonShip>(); cyclopsAbandonShip.TimeToCalloutAfterDeath = 0f; cyclopsAbandonShip.FMODAsset = CyclopsDefaultAssets.AI_ABANDON; DestabiliseOnSubDeath destabiliseOnSubDeath = submarine.GetOrAddComponent <DestabiliseOnSubDeath>(); KillPlayerInsideOnSubDeath killPlayerInsideOnSubDeath = submarine.GetOrAddComponent <KillPlayerInsideOnSubDeath>(); // Temp screens GameObject helmMantaOSScreen = submarine.FindChild("PointsOfInterest").FindChild("UpgradesAndBatteries").FindChild("HelmScreen").FindChild("Canvas"); GameObject rearMantaOSScreen = submarine.FindChild("PointsOfInterest").FindChild("UpgradesAndBatteries").FindChild("UpgradeScreen").FindChild("Canvas"); GameObject steeringConsoleMantaOSScreen = submarine.FindChild("PointsOfInterest").FindChild("SteeringConsole").FindChild("Canvas"); Object.Instantiate(MantaAssetLoader.MANTA_OS_MAIN_LAYOUT_PAGE).transform.SetParent(helmMantaOSScreen.transform, false); Object.Instantiate(MantaAssetLoader.MANTAOS_OFFLINE_PAGE).transform.SetParent(rearMantaOSScreen.transform, false); Object.Instantiate(MantaAssetLoader.MANTAOS_OFFLINE_PAGE).transform.SetParent(steeringConsoleMantaOSScreen.transform, false); SMLHelper.V2.Handlers.TechTypeHandler.TryGetModdedTechType(UNIQUE_ID, out TechType mantaTechType); PingType mantaPingType = CustomBeaconManager.RegisterNewPingType(mantaTechType, NAME, MantaAssetLoader.MANTA_PING_ICON); PingInstance pingInstance = CustomBeaconManager.AddNewBeacon(submarine, mantaPingType, "HMS Unknown Manta"); }
public PingRequest(SIFHeaderType SIFHeader, PingType Ping) { this.SIFHeader = SIFHeader; this.Ping = Ping; }