Beispiel #1
0
    private void RemoveThruster(EquippedItem item)
    {
        _thrusterItems.Remove(item);
        var thruster = item.GetBehavior <Thruster>();

        if (_forwardThrusters.Contains(thruster))
        {
            _forwardThrusters.Remove(thruster);
        }
        if (_reverseThrusters.Contains(thruster))
        {
            _reverseThrusters.Remove(thruster);
        }
        if (_rightThrusters.Contains(thruster))
        {
            _rightThrusters.Remove(thruster);
        }
        if (_leftThrusters.Contains(thruster))
        {
            _leftThrusters.Remove(thruster);
        }
        if (_clockwiseThrusters.Contains(thruster))
        {
            _clockwiseThrusters.Remove(thruster);
        }
        if (_counterClockwiseThrusters.Contains(thruster))
        {
            _counterClockwiseThrusters.Remove(thruster);
        }
    }
    public void Inspect(EquippedItem item)
    {
        Clear();
        if (item?.EquippableItem == null)
        {
            return;
        }

        Title.text = GetTitle(item.EquippableItem);

        AddItemProperties(item.EquippableItem);
        AddSpacer();

        if (item.GetBehavior <Weapon>() != null)
        {
            var weaponGroups = Instantiate(WeaponGroupAssignment, Content ?? transform);
            weaponGroups.Inspect(item);
            var       dragOffset = Vector2.zero;
            Transform dragObject = null;
            weaponGroups.OnBeginDragAsObservable().Subscribe(x =>
            {
                //Debug.Log($"Began dragging weapon group {x.group}");
                GameManager.BeginDrag(new WeaponGroupDragObject(x.group));
                dragObject = Instantiate(weaponGroups.Groups[x.group], DragParent, true).transform;
                dragOffset = (Vector2)dragObject.position - x.pointerEventData.position;
            });
            weaponGroups.OnDragAsObservable().Subscribe(x =>
            {
                dragObject.position = x.pointerEventData.position + dragOffset;
            });
            weaponGroups.OnEndDragAsObservable().Subscribe(x =>
            {
                //Debug.Log($"Ended dragging weapon group {x.group}");
                GameManager.EndDrag();
                Destroy(dragObject.gameObject);
            });
            Properties.Add(weaponGroups.gameObject);
            OnPropertyAdded?.Invoke(weaponGroups.gameObject);
        }

        var gearData    = GameManager.ItemManager.GetData(item.EquippableItem);
        var statusSheet = AddStatSheet();

        if (item.EquippableItem.Durability < .01f)
        {
            statusSheet.AddStat("Durability", () => "Item Destroyed!");
        }
        else
        {
            statusSheet.AddStat("Durability", () => $"{(int)(item.EquippableItem.Durability / gearData.Durability * 100)}%");
        }
        statusSheet.AddStat("Temperature", () => ActionGameManager.PlayerSettings.FormatTemperature(item.Temperature));

        var heatCurve = AddCurveField();

        heatCurve.Show(
            "Thermal Performance",
            gearData.HeatPerformanceCurve,
            t => ActionGameManager.PlayerSettings.FormatTemperature(lerp(gearData.MinimumTemperature, gearData.MaximumTemperature, t)),
            true);
        RefreshPropertyValues += () => heatCurve.SetCurrent(unlerp(gearData.MinimumTemperature, gearData.MaximumTemperature, item.Temperature));
        AddEquippableItemProperties(item.EquippableItem, item.Evaluate);
        AddSpacer();

        AddField("Override Shutdown", () => item.EquippableItem.OverrideShutdown, b => item.EquippableItem.OverrideShutdown = b);

        foreach (var behavior in item.Behaviors)
        {
            switch (behavior)
            {
            case Thermotoggle thermotoggle when thermotoggle.ThermotoggleData.Adjustable:
                AddField("Target Temperature",
                         () => thermotoggle.TargetTemperature,
                         temp => thermotoggle.TargetTemperature = temp);
                break;
            }
        }

        RefreshValues();
    }
Beispiel #3
0
 private void RemoveAetherDrive(EquippedItem item)
 {
     _aetherDriveItems.Remove(item);
     _aetherDrives.Remove(item.GetBehavior <AetherDrive>());
 }