public void NewSubroutine() { if (CyberspaceEnvironment.Instance.CurrentRAMUsed < CyberspaceEnvironment.Instance.MaximumRAM) { SubroutineInfo newSI = new SubroutineInfo() { FunctionName = "Delete", MovementName = "Station", CoreCost = 1, FunctionUpgrades = new List<string>(), MovementUpgrades = new List<string>() }; CyberspaceEnvironment.Instance.SetNewID(newSI); CyberspaceEnvironment.Instance.Subroutines.Add(newSI); CurrentlyModifyingSubroutine = newSI; OrderSubroutineList(); UpdateFreeRAM(); } else { //say "insufficient RAM" } }
void SetSubroutineParameters(SubroutineInfo subroutine) { for (int i = 0; i < _parameters.Length && i < CallHandler.ParameterValues.Length; i++) { _parameters[i].SetSubroutine(ActionSet, subroutine.ParameterStores[i], CallHandler.ParameterValues[i]); } }
public void Assign(SubroutineInfo mySI) { SetFunction(mySI.FunctionName); SetMovement(mySI.MovementName); AdjustSynergy(); BoundSubroutine.Info.Name = String.Format("{0} {1}", mySI.FunctionName, mySI.MovementName); }
public SubroutineInfo GetSubroutineInfo() { if (_subroutineInfo == null) { var builder = new SubroutineBuilder(DeltinScript, this); builder.SetupSubroutine(); _subroutineInfo = builder.SubroutineInfo; } return(_subroutineInfo); }
private bool ValidateTarget(SubroutineInfo si) { if (si.MovementName == "Station") { if (CurrentLock is Hardpoint) { if ((CurrentLock as Hardpoint).Occupied) return CanAutopickHardpoint(); else return true; } else if (CurrentLock == null) { return CanAutopickHardpoint(); } else return false; } else { if (CurrentLock == null) return true; else return (CurrentLock is IMalware); } }
private void PossiblyCreateSubroutine(SubroutineInfo si) { if (si == null) { print("no subroutine info to create from"); return; } if (this.CurrentMachine.IsInfected && !this.CurrentMachine.HasActiveAV) { ToastLog.Toast("No active Antivirus!"); } else if (ValidateTarget(si)) { if (CyberspaceBattlefield.Current.ProvisionCores((int)si.CoreCost)) { FireSubroutine(InstantiateHarness(si), si); } else { ToastLog.Toast("Insufficent\nCPU Cores"); } } else ToastLog.Toast("Invalid target"); }
private Transform InstantiateHarness(SubroutineInfo si) { //print("creating harness"); if (si.MovementName == "Tracer") { if (this.CurrentMachine.AVBattleshipTracerHangar != null) return (Transform)Instantiate(SubroutineHarnessPrefab, this.CurrentMachine.AVBattleshipTracerHangar.position, this.CurrentMachine.AVBattleshipTracerHangar.rotation); else return (Transform)Instantiate(SubroutineHarnessPrefab, this.CurrentMachine.AVCastleTracerHanger.position, this.CurrentMachine.AVCastleTracerHanger.rotation); } else { return (Transform)Instantiate(SubroutineHarnessPrefab, this.transform.position, this.transform.rotation); } }
private void FireSubroutine(Transform t, SubroutineInfo si) { t.GetComponent<SubroutineHarness>().Assign(si); Subroutine s = t.GetComponent<Subroutine>(); //only parent if infected, not if being put on castle if (CurrentMachine.IsInfected && (si.MovementName == "Station")) { t.SetParent(this.CurrentMachine.AVBattleship.GetChild(0)); } if (CurrentLock is Hardpoint) { s.AssignHardpoint(CurrentLock as Hardpoint); if (this.CurrentMachine.AVBattleship != null) { s.LockedTarget = CurrentLock.transform.GetChild(0); if ((CurrentLock as Hardpoint).IsOnBattleshipFarSide) { this.CurrentMachine.TiltBattleship(); } } } else if (CurrentLock != null) s.LockedTarget = CurrentLock.transform; s.Activate(si, CurrentMachine); }
public void Activate(SubroutineInfo si, Machine m) { if (m != null) { this.DeployedMachine = m; this.DeployedMachine.OnMachineClean += OnMachineClean; this.DeployedMachine.OnMachineReInfectionSuccess += OnMachineClean; this.DeployedMachine.OnMachineReInfectionFailure += OnMachineClean; } if (!this.IsActive) { this.Movement = this.GetComponent<SubroutineMovement>(); this.Movement.Parent = this; this.Function = this.GetComponent<SubroutineFunction>(); this.Function.Parent = this; this.StartingPosition = this.transform.parent; SInfo = si; this.Movement.Fire(); StartCoroutine(DelayActivation()); } }
//TODO: probably redundant calls to this private void UpdateSubroutineSummary(SubroutineInfo si) { SummaryText.text = string.Format("{0}\n", si.CompositeName); CoreText.text = UpgradeCoreText.text = string.Format(" {0} ¢", si.CoreCost); RAMText.text = UpgradeRAMText.text = string.Format(" {0} RAM", si.RAMCost); //HPText.text = string.Format("{0} HP", si.); //DMGText.text = string.Format("{0} DMG", si.d); }
// Use this for initialization void Start() { Radio.Instance.SetSoundtrack(Radio.Soundtrack.DigitalEnvironment); CurrentlyModifyingSubroutine = CyberspaceEnvironment.Instance.Subroutines[0]; foreach (Transform t in GameObject.Find("FunctionRoot").transform) { functions.Add(t.name, t); if (t.name != CurrentlyModifyingSubroutine.FunctionName) { t.gameObject.SetActive(false); } } foreach (Transform t in GameObject.Find("MovementRoot").transform) { movementVisualizations.Add(t.name, t); if (t.name != CurrentlyModifyingSubroutine.MovementName) { t.gameObject.SetActive(false); } } OrderSubroutineList(true); UpdateFreeRAM(); FunctionBaseButton = GameObject.Find("FunctionBase"); FunctionLeftButton = GameObject.Find("FunctionLeft"); FunctionRightButton = GameObject.Find("FunctionRight"); UpgradeRoot.SetActive(false); UpgradeLines.SetActive(false); DisableUnavailableFunctionButtons(); }
private void SetSubroutine(SubroutineInfo si, Button button) { CurrentlyModifyingSubroutine = si; SetMovementVisualization(si.MovementName); SetFunctionVisualization(si.FunctionName); UpdateSubroutineSummary(si); CurrentSubroutineButton = SetEquipButtonColor(CurrentSubroutineButton, button); UpdateSubroutineButtonText(CurrentSubroutineButton, si.CompositeName); }
void ISubroutineContext.SetSubroutineInfo(SubroutineInfo subroutineInfo) => _subroutineInfo = subroutineInfo;
internal void SetNewID(SubroutineInfo newSI) { if (this.Subroutines.Count <= 8) { newSI.ID = "a" + (this.Subroutines.Count + 1); newSI.Hotkey = this.Subroutines.Count + 1; } else { //TODO: do c-z newSI.ID = "b" + (this.Subroutines.Count % 9 + 1); newSI.Hotkey = this.Subroutines.Count & 9 + 1; } UnityEngine.Debug.Log("assigning new id " +newSI.ID); }