
The purpose of this small project is to show my programming skills.
Some code snip
public class InitManager : MonoBehaviour
{
[SerializeField] private DataManager _dataManager;
[SerializeField] private UiMainWindow _mainWindow;
private IGameManager _gameManager;
private void Start()
{
LoadGame();
}
private void LoadGame(){
CreateManagers();
EndLoad();
}
private void CreateManagers()
{
var bulletsPool = new BulletsPool(_dataManager.BaseGameData.BaseBulletPrefab);
var playerManager = new PlayerManager(_dataManager, bulletsPool);
var rocksManager = new RocksManager(_dataManager);
var scoreManager = new ScoreManager(rocksManager);
_gameManager = new GameManager(_dataManager, playerManager, rocksManager, scoreManager);
_mainWindow.Init(scoreManager, _gameManager);
}
private void EndLoad()
{
_gameManager.Idle();
}
}
Some other snip
public abstract class APoolObject<T> : IPoolManager<T> where T : class, IPoolObject
{
private IObjectPool<T> _pool;
private IObjectPool<T> Pool
{
get
{
if (_pool == null)
{
_pool = new LinkedPool<T>(CreateObject);
}
return _pool;
}
}
protected abstract T CreateObject();
public T GetObject()
{
var poolObject = Pool.Get();
poolObject.AfterGet();
return poolObject;
}
public void ReleaseObject(T poolObject)
{
poolObject.BeforeRelease();
Pool.Release(poolObject);
}
}