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
|
_cost: 100
|
||||||
_buildPlacementBlocked: 0
|
_buildPlacementBlocked: 0
|
||||||
_buildTimer: 0
|
_buildTimer: 0
|
||||||
_isGenerator: 1
|
|
||||||
_isConsumer: 0
|
|
||||||
_maxPower: 100
|
|
||||||
_currentPower: 0
|
|
||||||
_structureBaseSet: {fileID: 11400000, guid: 1925957d2bc2f0c4a9210131f2d2c4e5, type: 2}
|
_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
|
--- !u!1 &1863277996181035512
|
||||||
GameObject:
|
GameObject:
|
||||||
m_ObjectHideFlags: 0
|
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 AsteroidGame.Interfaces;
|
||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
|
|
||||||
namespace AsteroidGame.Entities
|
namespace AsteroidGame.Entities
|
||||||
{
|
{
|
||||||
public class StructureBase : EntityBase, IBuildable, IPowerSystem
|
public class StructureBase : EntityBase, IBuildable
|
||||||
{
|
{
|
||||||
[Header("BuildParameters")]
|
[Header("BuildParameters")]
|
||||||
[SerializeField] protected int _cost;
|
[SerializeField] protected int _cost;
|
||||||
[SerializeField] private bool _buildPlacementBlocked;
|
[SerializeField] private bool _buildPlacementBlocked;
|
||||||
[SerializeField] protected float _buildTimer;
|
[SerializeField] protected float _buildTimer;
|
||||||
|
|
||||||
[Header("Power")]
|
|
||||||
[SerializeField] protected bool _isGenerator;
|
|
||||||
[SerializeField] protected bool _isConsumer;
|
|
||||||
[SerializeField] protected int _maxPower;
|
|
||||||
[SerializeField] protected int _currentPower;
|
|
||||||
|
|
||||||
[Header("Configuration")]
|
[Header("Configuration")]
|
||||||
[SerializeField] private SEntityBaseRuntimeSet _structureBaseSet;
|
[SerializeField] private SEntityBaseRuntimeSet _structureBaseSet;
|
||||||
|
[SerializeField] private SPowerBaseRuntimeSet _powerBaseSet;
|
||||||
|
|
||||||
#region Private
|
[Header("Power")]
|
||||||
|
[SerializeField] private SPowerConfig _powerConfig;
|
||||||
#endregion
|
[SerializeField] private PowerBase _power;
|
||||||
|
|
||||||
#region Publics
|
#region Publics
|
||||||
|
|
||||||
public bool IsGenerator => _isGenerator;
|
public PowerBase Power => _power;
|
||||||
public bool IsConsumer => _isConsumer;
|
|
||||||
public bool BuildPlacementBlocked => _buildPlacementBlocked;
|
public bool BuildPlacementBlocked => _buildPlacementBlocked;
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
@ -35,17 +29,23 @@ namespace AsteroidGame.Entities
|
||||||
protected override void OnEnable()
|
protected override void OnEnable()
|
||||||
{
|
{
|
||||||
base.OnEnable();
|
base.OnEnable();
|
||||||
if (!_isConsumer && !_isGenerator)
|
|
||||||
{
|
|
||||||
Debug.LogWarning("Power consumer/generator not set!");
|
|
||||||
}
|
|
||||||
_structureBaseSet.Add(this);
|
_structureBaseSet.Add(this);
|
||||||
|
InitializePower();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void InitializePower()
|
||||||
|
{
|
||||||
|
_power = gameObject.AddComponent<PowerBase>();
|
||||||
|
_power.SetConfig(_powerConfig);
|
||||||
|
_powerBaseSet.Add(_power);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override void OnDisable()
|
protected override void OnDisable()
|
||||||
{
|
{
|
||||||
base.OnDisable();
|
base.OnDisable();
|
||||||
_structureBaseSet.Remove(this);
|
_structureBaseSet.Remove(this);
|
||||||
|
_powerBaseSet.Remove(_power);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void OnTriggerStay(Collider other)
|
private void OnTriggerStay(Collider other)
|
||||||
|
@ -66,19 +66,12 @@ namespace AsteroidGame.Entities
|
||||||
|
|
||||||
#region Setters
|
#region Setters
|
||||||
|
|
||||||
public void SetMaxPower(int newValue) => _maxPower = newValue;
|
|
||||||
public int SetCost(int newCost) => _cost = newCost;
|
public int SetCost(int newCost) => _cost = newCost;
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region Getters
|
#region Getters
|
||||||
|
|
||||||
public int GetMaxPower() => _maxPower;
|
|
||||||
|
|
||||||
public int GetCurrentPower() => _currentPower;
|
|
||||||
|
|
||||||
public float GetPowerFactor() => (float)_currentPower / _maxPower;
|
|
||||||
|
|
||||||
public int GetCost() => _cost;
|
public int GetCost() => _cost;
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
|
@ -752,12 +752,10 @@ MonoBehaviour:
|
||||||
_cost: 10
|
_cost: 10
|
||||||
_buildPlacementBlocked: 0
|
_buildPlacementBlocked: 0
|
||||||
_buildTimer: 0
|
_buildTimer: 0
|
||||||
_isGenerator: 0
|
|
||||||
_isConsumer: 1
|
|
||||||
_maxPower: 10
|
|
||||||
_currentPower: 0
|
|
||||||
_structureBaseSet: {fileID: 11400000, guid: 1925957d2bc2f0c4a9210131f2d2c4e5, type: 2}
|
_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
|
_damage: 1
|
||||||
_fireRate: 1
|
_fireRate: 1
|
||||||
_projectileSpeed: 5
|
_projectileSpeed: 5
|
||||||
|
@ -767,4 +765,4 @@ MonoBehaviour:
|
||||||
_barrel: {fileID: 5103935545559248087}
|
_barrel: {fileID: 5103935545559248087}
|
||||||
_targeterConfig: {fileID: 11400000, guid: 9df40bc219ab8f04cb4e86558bc0df86, type: 2}
|
_targeterConfig: {fileID: 11400000, guid: 9df40bc219ab8f04cb4e86558bc0df86, type: 2}
|
||||||
_targeter: {fileID: 0}
|
_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;
|
[SerializeField] private float _powerFactor;
|
||||||
|
|
||||||
[Header("Connections")]
|
[Header("Connections")]
|
||||||
[SerializeField] private SStructureBaseRuntimeSet _activeStructures;
|
[SerializeField] private SPowerBaseRuntimeSet _activePowerStructures;
|
||||||
|
|
||||||
private void Update()
|
private void Update()
|
||||||
{
|
{
|
||||||
_powerConsumption = 0;
|
_powerConsumption = 0;
|
||||||
_powerConsumptionPeak = 0;
|
_powerConsumptionPeak = 0;
|
||||||
_powerCapacity = 0;
|
_powerCapacity = 0;
|
||||||
foreach (var structure in _activeStructures._list)
|
foreach (var structure in _activePowerStructures._list)
|
||||||
{
|
{
|
||||||
if (structure.IsConsumer)
|
if (structure.IsConsumer)
|
||||||
{
|
{
|
||||||
|
|
|
@ -45,6 +45,7 @@ MonoBehaviour:
|
||||||
m_Name:
|
m_Name:
|
||||||
m_EditorClassIdentifier:
|
m_EditorClassIdentifier:
|
||||||
_powerConsumption: 0
|
_powerConsumption: 0
|
||||||
|
_powerConsumptionPeak: 0
|
||||||
_powerCapacity: 0
|
_powerCapacity: 0
|
||||||
_powerFactor: 0
|
_powerFactor: 0
|
||||||
_activeStructures: {fileID: 11400000, guid: bccdf438a1004a444bc24492728d6fbd, type: 2}
|
_activePowerStructures: {fileID: 11400000, guid: 127d26f1f3536e94da36af662f63fa0b, type: 2}
|
||||||
|
|
Loading…
Reference in New Issue