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"
        }
    }
Example #2
0
 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);
    }
Example #4
0
 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);
    }
Example #9
0
    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);
    }
Example #13
0
 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);
    }