WIP PowerSystem
This commit is contained in:
parent
b1f2446fa6
commit
4027bf3c97
|
@ -0,0 +1,15 @@
|
|||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!114 &11400000
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 0}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 3c46c7dedba14f3da958a2e6a3d3feaa, type: 3}
|
||||
m_Name: ActivePowerStructures
|
||||
m_EditorClassIdentifier:
|
||||
_list: []
|
|
@ -0,0 +1,8 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 127d26f1f3536e94da36af662f63fa0b
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 11400000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
|
@ -0,0 +1,10 @@
|
|||
using AsteroidGame.ScriptableObjects;
|
||||
using UnityEngine;
|
||||
|
||||
namespace AsteroidGame.Entities
|
||||
{
|
||||
[CreateAssetMenu(fileName = "newPowerBaseRuntimeSet", menuName = "RuntimeSet/PowerBase")]
|
||||
public class SPowerBaseRuntimeSet : SRuntimeSet<PowerBase>
|
||||
{
|
||||
}
|
||||
}
|
|
@ -0,0 +1,3 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 3c46c7dedba14f3da958a2e6a3d3feaa
|
||||
timeCreated: 1665006553
|
|
@ -0,0 +1,14 @@
|
|||
using AsteroidGame.Interfaces;
|
||||
using UnityEngine;
|
||||
|
||||
namespace AsteroidGame.Entities
|
||||
{
|
||||
[CreateAssetMenu(fileName = "newPowerConfiguration", menuName = "Configuration/Power")]
|
||||
public class SPowerConfig : ScriptableObject
|
||||
{
|
||||
public SPowerBaseRuntimeSet _activePowerStructures;
|
||||
public bool isGenerator;
|
||||
public bool isConsumer;
|
||||
public int maxPower;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,11 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 87159085b5778b14482ec38673729d95
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
|
@ -0,0 +1,3 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 087e96d3ceec42f9aba85753a4b8d15f
|
||||
timeCreated: 1665005789
|
|
@ -0,0 +1,42 @@
|
|||
using System;
|
||||
using AsteroidGame.Interfaces;
|
||||
using UnityEngine;
|
||||
|
||||
namespace AsteroidGame.Entities
|
||||
{
|
||||
public class PowerBase : MonoBehaviour, IPowerSystem
|
||||
{
|
||||
[Header("State")]
|
||||
[SerializeField] protected bool _isGenerator = true;
|
||||
[SerializeField] protected bool _isConsumer = true;
|
||||
[SerializeField] protected int _maxPower;
|
||||
[SerializeField] protected int _currentPower;
|
||||
|
||||
public void SetConfig(SPowerConfig config)
|
||||
{
|
||||
_isGenerator = config.isGenerator;
|
||||
_isConsumer = config.isConsumer;
|
||||
_maxPower = config.maxPower;
|
||||
}
|
||||
|
||||
#region Setters
|
||||
|
||||
public void SetMaxPower(int newValue) => _maxPower = newValue;
|
||||
|
||||
#endregion
|
||||
|
||||
#region Getters
|
||||
|
||||
public bool IsGenerator => _isGenerator;
|
||||
|
||||
public bool IsConsumer => _isConsumer;
|
||||
|
||||
public int GetMaxPower() => _maxPower;
|
||||
|
||||
public int GetCurrentPower() => _currentPower;
|
||||
|
||||
public float GetPowerFactor() => (float)_currentPower / _maxPower;
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
|
@ -0,0 +1,3 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 5aca1826fdd547e1afd4a67d55a0f25c
|
||||
timeCreated: 1665006027
|
|
@ -56,11 +56,10 @@ MonoBehaviour:
|
|||
_cost: 100
|
||||
_buildPlacementBlocked: 0
|
||||
_buildTimer: 0
|
||||
_isGenerator: 1
|
||||
_isConsumer: 0
|
||||
_maxPower: 100
|
||||
_currentPower: 0
|
||||
_structureBaseSet: {fileID: 11400000, guid: 1925957d2bc2f0c4a9210131f2d2c4e5, type: 2}
|
||||
_powerBaseSet: {fileID: 11400000, guid: 127d26f1f3536e94da36af662f63fa0b, type: 2}
|
||||
_powerConfig: {fileID: 11400000, guid: 742a00ce6f6a8e04cae160bc40f09e24, type: 2}
|
||||
_power: {fileID: 0}
|
||||
--- !u!1 &1863277996181035512
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
|
|
|
@ -0,0 +1,18 @@
|
|||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!114 &11400000
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 0}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 87159085b5778b14482ec38673729d95, type: 3}
|
||||
m_Name: PowerplantPowerConfiguration
|
||||
m_EditorClassIdentifier:
|
||||
_activePowerStructures: {fileID: 11400000, guid: 127d26f1f3536e94da36af662f63fa0b, type: 2}
|
||||
isGenerator: 1
|
||||
isConsumer: 0
|
||||
maxPower: 100
|
|
@ -0,0 +1,8 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 742a00ce6f6a8e04cae160bc40f09e24
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 11400000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
|
@ -1,33 +1,27 @@
|
|||
|
||||
using System;
|
||||
using AsteroidGame.Interfaces;
|
||||
using UnityEngine;
|
||||
|
||||
namespace AsteroidGame.Entities
|
||||
{
|
||||
public class StructureBase : EntityBase, IBuildable, IPowerSystem
|
||||
public class StructureBase : EntityBase, IBuildable
|
||||
{
|
||||
[Header("BuildParameters")]
|
||||
[SerializeField] protected int _cost;
|
||||
[SerializeField] private bool _buildPlacementBlocked;
|
||||
[SerializeField] protected float _buildTimer;
|
||||
|
||||
[Header("Power")]
|
||||
[SerializeField] protected bool _isGenerator;
|
||||
[SerializeField] protected bool _isConsumer;
|
||||
[SerializeField] protected int _maxPower;
|
||||
[SerializeField] protected int _currentPower;
|
||||
|
||||
[Header("Configuration")]
|
||||
[SerializeField] private SEntityBaseRuntimeSet _structureBaseSet;
|
||||
|
||||
#region Private
|
||||
[SerializeField] private SPowerBaseRuntimeSet _powerBaseSet;
|
||||
|
||||
#endregion
|
||||
[Header("Power")]
|
||||
[SerializeField] private SPowerConfig _powerConfig;
|
||||
[SerializeField] private PowerBase _power;
|
||||
|
||||
#region Publics
|
||||
|
||||
public bool IsGenerator => _isGenerator;
|
||||
public bool IsConsumer => _isConsumer;
|
||||
public PowerBase Power => _power;
|
||||
public bool BuildPlacementBlocked => _buildPlacementBlocked;
|
||||
|
||||
#endregion
|
||||
|
@ -35,17 +29,23 @@ namespace AsteroidGame.Entities
|
|||
protected override void OnEnable()
|
||||
{
|
||||
base.OnEnable();
|
||||
if (!_isConsumer && !_isGenerator)
|
||||
{
|
||||
Debug.LogWarning("Power consumer/generator not set!");
|
||||
}
|
||||
_structureBaseSet.Add(this);
|
||||
InitializePower();
|
||||
}
|
||||
|
||||
private void InitializePower()
|
||||
{
|
||||
_power = gameObject.AddComponent<PowerBase>();
|
||||
_power.SetConfig(_powerConfig);
|
||||
_powerBaseSet.Add(_power);
|
||||
|
||||
}
|
||||
|
||||
protected override void OnDisable()
|
||||
{
|
||||
base.OnDisable();
|
||||
_structureBaseSet.Remove(this);
|
||||
_powerBaseSet.Remove(_power);
|
||||
}
|
||||
|
||||
private void OnTriggerStay(Collider other)
|
||||
|
@ -66,19 +66,12 @@ namespace AsteroidGame.Entities
|
|||
|
||||
#region Setters
|
||||
|
||||
public void SetMaxPower(int newValue) => _maxPower = newValue;
|
||||
public int SetCost(int newCost) => _cost = newCost;
|
||||
|
||||
#endregion
|
||||
|
||||
#region Getters
|
||||
|
||||
public int GetMaxPower() => _maxPower;
|
||||
|
||||
public int GetCurrentPower() => _currentPower;
|
||||
|
||||
public float GetPowerFactor() => (float)_currentPower / _maxPower;
|
||||
|
||||
public int GetCost() => _cost;
|
||||
|
||||
#endregion
|
||||
|
|
|
@ -752,12 +752,10 @@ MonoBehaviour:
|
|||
_cost: 10
|
||||
_buildPlacementBlocked: 0
|
||||
_buildTimer: 0
|
||||
_isGenerator: 0
|
||||
_isConsumer: 1
|
||||
_maxPower: 10
|
||||
_currentPower: 0
|
||||
_structureBaseSet: {fileID: 11400000, guid: 1925957d2bc2f0c4a9210131f2d2c4e5, type: 2}
|
||||
_weaponRange: 10
|
||||
_powerBaseSet: {fileID: 11400000, guid: 127d26f1f3536e94da36af662f63fa0b, type: 2}
|
||||
_powerConfig: {fileID: 11400000, guid: 9dc2a0f5f29a11a4d9cabe19e18bdd42, type: 2}
|
||||
_power: {fileID: 0}
|
||||
_damage: 1
|
||||
_fireRate: 1
|
||||
_projectileSpeed: 5
|
||||
|
@ -767,4 +765,4 @@ MonoBehaviour:
|
|||
_barrel: {fileID: 5103935545559248087}
|
||||
_targeterConfig: {fileID: 11400000, guid: 9df40bc219ab8f04cb4e86558bc0df86, type: 2}
|
||||
_targeter: {fileID: 0}
|
||||
_targetEnemy: {fileID: 0}
|
||||
_target: {fileID: 0}
|
||||
|
|
|
@ -0,0 +1,18 @@
|
|||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!114 &11400000
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 0}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 87159085b5778b14482ec38673729d95, type: 3}
|
||||
m_Name: TurretPowerConfiguration
|
||||
m_EditorClassIdentifier:
|
||||
_activePowerStructures: {fileID: 11400000, guid: 127d26f1f3536e94da36af662f63fa0b, type: 2}
|
||||
isGenerator: 0
|
||||
isConsumer: 1
|
||||
maxPower: 10
|
|
@ -0,0 +1,8 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 9dc2a0f5f29a11a4d9cabe19e18bdd42
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 11400000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
|
@ -13,14 +13,14 @@ namespace AsteroidGame.Handlers
|
|||
[SerializeField] private float _powerFactor;
|
||||
|
||||
[Header("Connections")]
|
||||
[SerializeField] private SStructureBaseRuntimeSet _activeStructures;
|
||||
[SerializeField] private SPowerBaseRuntimeSet _activePowerStructures;
|
||||
|
||||
private void Update()
|
||||
{
|
||||
_powerConsumption = 0;
|
||||
_powerConsumptionPeak = 0;
|
||||
_powerCapacity = 0;
|
||||
foreach (var structure in _activeStructures._list)
|
||||
foreach (var structure in _activePowerStructures._list)
|
||||
{
|
||||
if (structure.IsConsumer)
|
||||
{
|
||||
|
|
|
@ -45,6 +45,7 @@ MonoBehaviour:
|
|||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
_powerConsumption: 0
|
||||
_powerConsumptionPeak: 0
|
||||
_powerCapacity: 0
|
||||
_powerFactor: 0
|
||||
_activeStructures: {fileID: 11400000, guid: bccdf438a1004a444bc24492728d6fbd, type: 2}
|
||||
_activePowerStructures: {fileID: 11400000, guid: 127d26f1f3536e94da36af662f63fa0b, type: 2}
|
||||
|
|
Loading…
Reference in New Issue