private void PlayerExtractRequest() { Player player = WorldScript.mLocalPlayer; int lensCount = 0; if (player == null) { return; } if (mStoredLenses != null) { lensCount = mStoredLenses.GetAmount(); } if (lensCount > 0) { Debug.Log("[Auto Lens Swapper] Removing " + lensCount + " lenses from machine, placing into " + player.mUserName); if (!player.mInventory.AddItem(mStoredLenses)) { ItemManager.instance.DropItem(mStoredLenses, player.mnWorldX, player.mnWorldY, player.mnWorldZ, Vector3.zero); Debug.Log("[Auto Lens Swapper] Player's inventory did not accept lenses. Dropping at player's feet."); } } mStoredLenses = null; mTargetLens = null; if (mStatus == eStatuses.Running) { mbHaltedEarly = true; mStatus = eStatuses.Done; } else if (mStatus == eStatuses.Done) { mnTrackLPTs = 0; mnTrackSwaps = 0; mnSegmentEIndex1 = 0; mnSegmentEIndex2 = 0; mnSegmentID = 0; mbHaltedEarly = false; mStatus = eStatuses.Stopped; } MarkDirtyDelayed(); RequestImmediateNetworkUpdate(); player.mInventory.VerifySuitUpgrades(); //Shouldn't be needed, but lets be safe. SurvivalHotBarManager.MarkAsDirty(); SurvivalHotBarManager.MarkContentDirty(); UIManager.ForceNGUIUpdate = 0.1f; RequestImmediateNetworkUpdate(); AudioHUDManager.instance.OrePickup(); }
public override void ReadNetworkUpdate(BinaryReader reader) { mrCurrentPower = NetworkServerIO.ByteToFloat(reader.ReadByte()); mTargetLens = ItemFile.DeserialiseItem(reader); mStoredLenses = ItemFile.DeserialiseItem(reader); mIssue = (eIssues)reader.ReadByte(); mStatus = (eStatuses)reader.ReadByte(); mbHaltedEarly = reader.ReadBoolean(); mbOnlySwap = reader.ReadBoolean(); mbTrashOld = reader.ReadBoolean(); mnTrackLPTs = reader.ReadInt16(); mnTrackSwaps = reader.ReadInt16(); }
//Run, the main swapping function. //This function loops through all of the game segments, using small sprints. //Sprints will either end from passing through too many segments, or making too many changes, or encountering an issue. private void run() { if (mIssue != eIssues.Ready) { return; } if (mStatus != eStatuses.Running) { return; } int sprintSegment = 0; int swapsAtSprintStart = mnTrackSwaps; int segmentCount = WorldScript.instance.mSegmentUpdater.updateList.Count; //Limited sprint, to prevent eating CPU time. for (sprintSegment = 0; sprintSegment < 256 && mnSegmentID < segmentCount; ++sprintSegment) { runLoopSegEntities(mnSegmentID); if (mIssue != eIssues.Ready) { break; } ++mnSegmentID; //limit how many changes we can do in a LFUT-tick. //I suspect this will be more limiting than 256 if (mnTrackSwaps - swapsAtSprintStart > 4) { break; } } if (mnSegmentID >= segmentCount) { Debug.LogWarning("[Auto Lens Swapper][info] Completed a pass!"); mStatus = eStatuses.Done; mbHaltedEarly = false; RequestImmediateNetworkUpdate(); return; } //MarkDirtyDelayed(); return; }
public ALS_MachineEntity(ModCreateSegmentEntityParameters parameters) : base(parameters) { mbNeedsLowFrequencyUpdate = true; mbNeedsUnityUpdate = true; mUpdates = 0; mStatus = eStatuses.Stopped; mIssue = eIssues.Power; mbHaltedEarly = false; mbOnlySwap = false; mbTrashOld = false; mnSegmentID = 0; mnSegmentEIndex1 = 0; mnSegmentEIndex2 = 0; mnTrackLPTs = 0; mnTrackSwaps = 0; mrCurrentPower = 0; //maAttachedHoppers = new List<StorageMachineInterface>(); }
public override string GetPopupText() { int segmentCount = WorldScript.instance.mSegmentUpdater.updateList.Count; //Header string retText = "Auto Lens Swapper"; retText += " Power: " + Mathf.Round(mrCurrentPower).ToString() + " / " + Mathf.Round(mrMaxPower).ToString(); retText += "\neStatus: " + mStatus.ToString(); retText += " eIssue: " + mIssue.ToString(); if (mTargetLens != null) { retText += "\nNew lens: " + mTargetLens.GetDisplayString(); retText += " Stored: " + (mnStorageMax - getStorageAvailable()).ToString() + " / " + mnStorageMax.ToString(); } else { retText += "\nNew lens: null - Press T to insert & set!"; } retText += "\n------"; //Body switch (mStatus) { case eStatuses.Stopped: if (mIssue != eIssues.Ready) { retText += GetIssueText(mIssue); } else { /* * if (mbOnlySwap) retText += "\nMode: swap only (Shift + T)"; * else retText += "\nMode: swap & insert (Shift + T)"; * if (mbTrashOld) retText += "\nOld lenses: destroy (Shift + Q)"; * else retText += "\nOld lenses: output to adjacent machine (Shift + Q)"; */ retText += "\n\nPress E to start running!"; retText += "\nPress Q to remove lenses and reset machine at any time."; // ^^^ replace with dynamic text for "E" /* * if (Input.GetButtonDown("Store") && Input.GetKeyDown(KeyCode.LeftShift))// && UIManager.AllowInteracting) * mbOnlySwap = !mbOnlySwap; * else if (Input.GetButtonDown("Extract") && Input.GetKeyDown(KeyCode.LeftShift))// && UIManager.AllowInteracting) * mbTrashOld = !mbTrashOld; */ if (Input.GetButtonDown("Interact") && !Input.GetKeyDown(KeyCode.LeftShift)) // && UIManager.AllowInteracting) { mStatus = eStatuses.Running; } } break; case eStatuses.Running: //power, stored lenses, percent_progress, ID, and max if (mIssue != eIssues.Ready) { retText += GetIssueText(mIssue); } else { retText += "\nSegment: " + mnSegmentID.ToString() + " / " + segmentCount.ToString() + " (" + (Mathf.Round((float)mnSegmentID / (float)segmentCount * 100f)).ToString() + "%)"; retText += "\nLPTs checked: " + mnTrackLPTs.ToString(); retText += "\nLens swaps: " + mnTrackSwaps.ToString(); } retText += "\nPress Q to remove lenses and reset machine."; break; case eStatuses.Done: //finished running over ID segments, swapping index? lenses if (mbHaltedEarly) { retText += "\nHalted early!"; } else { retText += "\nComplete!"; } retText += " Segments checked: " + mnSegmentID.ToString(); retText += " LPTs checked: " + mnTrackLPTs.ToString(); retText += " Lens swaps: " + mnTrackSwaps.ToString(); retText += "\nPress Q to start over!"; // ^^^ replace with dynamic text for "Q" break; default: break; } if (Input.GetButtonDown("Extract") && !Input.GetKey(KeyCode.LeftShift) && UIManager.AllowInteracting) { PlayerExtractRequest(); } if (Input.GetButtonDown("Store") && !Input.GetKey(KeyCode.LeftShift) && UIManager.AllowInteracting) { PlayerStoreRequest(); } return(retText); }
public PageStatusChangeArgs(eStatuses status) { Status = status; }