Initial Commit

This commit is contained in:
Simeon Radivoev 2022-02-12 12:53:50 +02:00
commit ee5c2f922d
Signed by: simeonradivoev
GPG key ID: 7611A451D2A5D37A
2255 changed files with 547750 additions and 0 deletions

View file

@ -0,0 +1,32 @@
using AI;
using AI.FSM;
using UnityEngine;
using Util;
using Zenject;
namespace DefaultNamespace.Installers
{
public class GoapInstaller : MonoInstaller
{
[SerializeField] private AttackPlayerGoapSystem.Settings attackPlayerSettings;
[SerializeField] private MoveStateSystem.Settings moveStateSystemSettings;
[SerializeField] private SearchTargetGoapActionSystem.Settings findTargetSettings;
[SerializeField] private ReloadGoapActionSystem.Settings reloadSettings;
public override void InstallBindings()
{
// Settings
Container.Bind<MoveStateSystem.Settings>().FromInstance(moveStateSystemSettings);
Container.Bind<AttackPlayerGoapSystem.Settings>().FromInstance(attackPlayerSettings);
Container.Bind<SearchTargetGoapActionSystem.Settings>().FromInstance(findTargetSettings);
Container.Bind<ReloadGoapActionSystem.Settings>().FromInstance(reloadSettings);
// Systems
Container.Bind<MoveStateSystem>().FromEcs();
Container.Bind<AttackPlayerGoapSystem>().FromEcs();
Container.Bind<RangeAttackPlayerGoapActionSystem>().FromEcs();
Container.Bind<SearchTargetGoapActionSystem>().FromEcs();
Container.Bind<ReloadGoapActionSystem>().FromEcs();
}
}
}

View file

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: 5766c5538509482d948c3adeb066b421
timeCreated: 1533385798

View file

@ -0,0 +1,24 @@
using DefaultNamespace.Navigation;
using UnityEngine;
using UnityEngine.Tilemaps;
using Util;
using Zenject;
namespace DefaultNamespace.Installers
{
public class NavigationInstaller : MonoInstaller
{
[SerializeField] private NavigationAgentDriverSystem.Settings navigationAgentDriverSettings;
[SerializeField] private Tilemap navigationTilemap;
public override void InstallBindings()
{
// Settings
Container.Bind<NavigationAgentDriverSystem.Settings>().FromInstance(navigationAgentDriverSettings);
// Systems
Container.BindInterfacesAndSelfTo<NavigationBuilder>().AsSingle().WithArguments(navigationTilemap);
Container.Bind<NavigationAgentDriverSystem>().FromEcs();
}
}
}

View file

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 14dead9d46ab9e849ab5cbfa75a3a910
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View file

@ -0,0 +1,165 @@
using Cinemachine;
using Items;
using System;
using Trive.Mono.Utils;
using Tween;
using Unity.Entities;
using UnityEngine;
using UnityEngine.AddressableAssets;
using UnityEngine.EventSystems;
using UnityEngine.InputSystem;
using Util;
using Zenject;
using Hash128 = Unity.Entities.Hash128;
using Random = UnityEngine.Random;
namespace DefaultNamespace.Installers
{
public class PlayerInstaller : MonoInstaller
{
[SerializeField] private PlayerMoveSystem.Settings playerMoveManagerSettings;
[SerializeField] private PlayerLookSystem.Settings playerLookManagerSettings;
[SerializeField] private TilemapManager.Settings tilemapManagerSettings;
[SerializeField] private PlayerWeaponSystem.Settings playerWeaponManagerSettings;
[SerializeField] private ProjectileCastSystem.Settings projectileSystemSettings;
[SerializeField] private PlayerVitalsSystem.Settings vitalsSystemSettings;
[SerializeField] private ItemPickupSystem.Settings pickupSystemSettings;
[SerializeField] private DebugSpawnSystem.Settings debugSpawnSystemSettings;
[SerializeField] private PlayerDeathSystem.Settings playerDeathSystemSettings;
[SerializeField] private PlayerCoverSystem.Settings playerCoverSystemSettings;
[SerializeField] private PlayerEmotionSystem.Settings playerEmotionSystemSettings;
[SerializeField] private AudioListener audioListener;
[SerializeField] private new Camera camera;
[SerializeField] private EventSystem eventSystem;
[SerializeField] private AssetReferenceGrenadeItem GrenadeItem;
[SerializeField] private HealthItemRef HealthItem;
[SerializeField] private InputActionAsset inputMap;
[SerializeField] private int maxPlayerInventory;
[SerializeField] private GameObject playerPrefab;
[SerializeField] private AssetReferenceItemPrefab[] StartingItems;
[SerializeField] private AssetReferenceRangedWeapon StartingWeapon;
[SerializeField] private CinemachineVirtualCamera virtualCamera;
public override void InstallBindings()
{
// Settings
Container.Bind<PlayerEmotionSystem.Settings>().FromInstance(playerEmotionSystemSettings);
Container.Bind<PlayerCoverSystem.Settings>().FromInstance(playerCoverSystemSettings);
Container.Bind<PlayerDeathSystem.Settings>().FromInstance(playerDeathSystemSettings);
Container.Bind<DebugSpawnSystem.Settings>().FromInstance(debugSpawnSystemSettings);
Container.Bind<ItemPickupSystem.Settings>().FromInstance(pickupSystemSettings);
Container.Bind<PlayerVitalsSystem.Settings>().FromInstance(vitalsSystemSettings);
Container.Bind<ProjectileCastSystem.Settings>().FromInstance(projectileSystemSettings);
Container.Bind<PlayerWeaponSystem.Settings>().FromInstance(playerWeaponManagerSettings);
Container.Bind<PlayerMoveSystem.Settings>().FromInstance(playerMoveManagerSettings);
Container.Bind<PlayerLookSystem.Settings>().FromInstance(playerLookManagerSettings);
Container.Bind<TilemapManager.Settings>().FromInstance(tilemapManagerSettings);
// Systems
Container.Bind<EventSystem>().FromInstance(eventSystem);
Container.Bind<InputActionAsset>().FromInstance(inputMap);
Container.Bind<InputActions>().AsSingle();
Container.Bind<AudioListener>().FromInstance(audioListener);
Container.Bind<Camera>().FromInstance(camera);
Container.Bind<PlayerFacade>()
.FromMethod(
c =>
{
var spawnPoints = GameObject.FindGameObjectsWithTag("SpawnPoint");
var player = c.Container.InstantiatePrefab(
playerPrefab,
spawnPoints[Random.Range(0, spawnPoints.Length)].transform.position,
Quaternion.identity,
c.Container.DefaultParent);
var facade = player.GetComponent<PlayerFacade>();
return facade;
})
.AsSingle();
Container.Bind<Entity>()
.WithId("player")
.FromMethod(c => BootstrapPlayer(c.Container.Resolve<PlayerFacade>(), c.Container.Resolve<EntityManager>()))
.AsSingle()
.NonLazy();
Container.Bind<CinemachineVirtualCamera>()
.FromResolveGetter<PlayerFacade>(
f =>
{
virtualCamera.Follow = f.transform;
return virtualCamera;
})
.AsSingle()
.NonLazy();
Container.Bind<TweenSystem>().FromEcs();
Container.Bind<PlayerMoveSystem>().FromEcs();
Container.BindInterfacesTo<PlayerMoveSystem>().FromResolve();
Container.Bind<PlayerLookSystem>().FromEcs();
Container.Bind<IInitializable>().To<PlayerLookSystem>().FromResolve();
Container.BindInterfacesAndSelfTo<TilemapManager>().AsSingle();
Container.Bind<PlayerWeaponSystem>().FromEcs();
Container.Bind<ProjectileCastSystem>().FromEcs();
Container.Bind<PlayerVitalsSystem>().FromEcs();
Container.Bind<ItemPickupSystem>().FromEcs();
Container.Bind<AmmoPickupSystem>().FromEcs();
Container.Bind<EnemySpawnSystem>().FromEcs();
Container.Bind<InventoryPickupSystem>().FromEcs();
Container.Bind<PlayerAnimationSystem>().FromEcs();
Container.Bind<DebugSpawnSystem>().FromEcs();
Container.Bind<PlayerActionMapSystem>().FromEcs();
Container.Bind<PlayerDeathSystem>().FromEcs();
Container.Bind<PlayerCoverSystem>().FromEcs();
Container.Bind<PlayerCoverSystemRaycast>().FromEcs();
Container.Bind<PlayerCoverSystemWeaponAdjust>().FromEcs();
Container.Bind<PlayerEmotionSystem>().FromEcs();
}
private Entity BootstrapPlayer(PlayerFacade playerFacade, EntityManager entityManager)
{
var playerEntity = playerFacade.gameObject.ConvertToEntity(entityManager.World);
playerFacade.GetComponent<ActorFacade>().Entity = playerEntity;
playerFacade.GetComponent<ActorFacade>().World = entityManager.World;
entityManager.AddComponent<ActorMeleeData>(playerEntity);
entityManager.AddComponent<ActorBoundsData>(playerEntity);
entityManager.AddComponent<RigidBody2DData>(playerEntity);
entityManager.AddComponent<ActorWeaponAccuracyData>(playerEntity);
entityManager.AddComponent<LocalPlayerData>(playerEntity);
entityManager.AddComponent<PlayerData>(playerEntity);
entityManager.AddComponentData(playerEntity, new ActorData { Health = playerFacade.MaxHealth });
entityManager.AddComponent<PlayerInput>(playerEntity);
entityManager.AddComponent<AnimatorStateData>(playerEntity);
entityManager.AddComponent<Rotation2D>(playerEntity);
entityManager.AddBuffer<Slot>(playerEntity);
var fixedArray = entityManager.GetBuffer<Slot>(playerEntity);
for (var i = 0; i < maxPlayerInventory - (int)SlotType.Health; i++)
{
if (i < StartingItems.Length)
{
fixedArray.Add(new Slot { Item = new ItemData(new Hash128(StartingItems[i].AssetGUID), 1) });
}
else
{
fixedArray.Add(new Slot { Item = ItemData.Empty });
}
}
fixedArray.Add(new Slot { Type = SlotType.Health, Item = new ItemData(new Hash128(HealthItem.AssetGUID), 4) });
fixedArray.Add(new Slot { Type = SlotType.Grenade, Item = new ItemData(new Hash128(GrenadeItem.AssetGUID), 16) });
fixedArray.Add(new Slot { Type = SlotType.MeleeWeapon });
fixedArray.Add(new Slot { Type = SlotType.RangedWeapon, Item = new ItemData(new Hash128(StartingWeapon.AssetGUID), 1) });
return playerEntity;
}
[Serializable]
public class HealthItemRef : AssetReferenceT<HealthKitItem>
{
public HealthItemRef(string guid)
: base(guid)
{
}
}
}
}

View file

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: 7bee0215648c492fa7c4e30a74f65158
timeCreated: 1530879208

View file

@ -0,0 +1,53 @@
using Events;
using UI;
using Unity.Entities;
using UnityEngine;
using Util;
using Zenject;
namespace DefaultNamespace.Installers
{
public class UserInterfaceInstaller : MonoInstaller
{
[SerializeField] private CursorManager.Settings cursorManagerSettings;
[SerializeField] private HudManager.Settings hudManagerSettings;
[SerializeField] private ArHudManager.Settings arHudManagerSettings;
[SerializeField] private InventoryUiSystem.Settings inventoryUiSystemSettings;
[SerializeField] private ItemDraggingSystem.Settings itemDraggingSystemSettings;
[SerializeField] private GameObject InventoryScreen;
public override void InstallBindings()
{
// Settings
Container.Bind<CursorManager.Settings>().FromInstance(cursorManagerSettings);
Container.Bind<HudManager.Settings>().FromInstance(hudManagerSettings);
Container.Bind<ArHudManager.Settings>().FromInstance(arHudManagerSettings);
Container.Bind<InventoryUiSystem.Settings>().FromInstance(inventoryUiSystemSettings);
Container.Bind<ItemDraggingSystem.Settings>().FromInstance(itemDraggingSystemSettings);
// Systems
Container.Bind<CursorManager>().FromEcs();
Container.Bind<IInitializable>().To<CursorManager>().FromResolve();
Container.Bind<HudManager>().FromEcs();
Container.Bind<ArHudManager>().FromEcs();
Container.Bind<IInitializable>().To<ArHudManager>().FromResolve();
Container.Bind<InventoryUiSystem>().FromEcs();
Container.Bind<GameObject>()
.FromResolveGetter<EntityManager>(
manager =>
{
var inventoryWindowEntity = GameObjectEntity.AddToEntityManager(manager, InventoryScreen);
manager.AddComponent(inventoryWindowEntity, ComponentType.ReadWrite<WindowComponentData>());
manager.AddSharedComponentData(inventoryWindowEntity, new WindowButtonPropertiesData { Button = "Inventory" });
manager.AddSharedComponentData(
inventoryWindowEntity,
new InventoryWindowData { Inventory = Container.ResolveId<Entity>("player") });
return InventoryScreen;
})
.AsSingle()
.NonLazy();
Container.Bind<ItemDraggingSystem>().FromEcs();
Container.BindInterfacesTo<ItemDraggingSystem>().FromResolve();
}
}
}

View file

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: 1054e96b50cd4613b436304b4055ebe6
timeCreated: 1530994985

View file

@ -0,0 +1,34 @@
using UnityEngine;
using Util;
using Zenject;
namespace DefaultNamespace.Installers
{
public class WeaponsInstaller : MonoInstaller
{
[SerializeField] private ActorGrenadeSystem.Settings grenadeSystemSettings;
[SerializeField] private FragGrenadeSystem.Settings fragGrenadeSystemSettings;
[SerializeField] private WeaponFiringSystem.Settings weaponFiringSystemSettings;
[SerializeField] private ActorWeaponSystem.Settings actorWeaponSystemSettings;
[SerializeField] private ActorWeaponInitializationSystem.Settings weaponInitializationSystemSettings;
public override void InstallBindings()
{
// Settings
Container.Bind<ActorGrenadeSystem.Settings>().FromInstance(grenadeSystemSettings);
Container.Bind<FragGrenadeSystem.Settings>().FromInstance(fragGrenadeSystemSettings);
Container.Bind<WeaponFiringSystem.Settings>().FromInstance(weaponFiringSystemSettings);
Container.Bind<ActorWeaponSystem.Settings>().FromInstance(actorWeaponSystemSettings);
Container.Bind<ActorWeaponInitializationSystem.Settings>().FromInstance(weaponInitializationSystemSettings);
// Systems
Container.Bind<ActorGrenadeSystem>().FromEcs();
Container.Bind<FragGrenadeSystem>().FromEcs();
Container.Bind<WeaponReloadSystem>().FromEcs();
Container.Bind<WeaponAnimationSystem>().FromEcs();
Container.Bind<WeaponFiringSystem>().FromEcs();
Container.Bind<ActorWeaponSystem>().FromEcs();
Container.Bind<ActorWeaponInitializationSystem>().FromEcs();
}
}
}

View file

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: 8be4986248214de39da2cff4be3baee8
timeCreated: 1533643786

View file

@ -0,0 +1,81 @@
using DefaultNamespace.Util;
using System;
using System.Reflection;
using System.Runtime.Serialization;
using Unity.Entities;
using UnityEngine;
using UnityEngine.AddressableAssets;
using Util;
using Zenject;
namespace DefaultNamespace.Installers
{
public class WorldInstaller : MonoInstaller
{
[SerializeField] private SoundManager.Settings soundManagerSettings;
[SerializeField] private EnemyDriverSystem.Settings enemyDriverSystemSettings;
[SerializeField] private ActorGroundCheckSystem.Settings groundCheckSystemSettings;
[SerializeField] private ActorAimingAnimationSystem.Settings actorAimingAnimationSystemSettings;
[SerializeField] private ActorAnimationSystem.Settings actorAnimationSystemSettings;
[SerializeField] private EnemyDeathSystem.Settings enemyDeathSystemSettings;
[SerializeField] private ItemContainerFactory.Settings itemContainerFactorySettings;
[SerializeField] private ActorMeleeSystem.Settings actorMeleeSystemSettings;
[SerializeField] private ActorDeathSystem.Settings actorDeathSystemSettings;
[SerializeField] private AssetReferenceItemPrefab healthKit;
public override void InstallBindings()
{
// Settings
Container.Bind<ActorAnimationSystem.Settings>().FromInstance(actorAnimationSystemSettings);
Container.Bind<ActorAimingAnimationSystem.Settings>().FromInstance(actorAimingAnimationSystemSettings);
Container.Bind<ActorGroundCheckSystem.Settings>().FromInstance(groundCheckSystemSettings);
Container.Bind<EnemyDriverSystem.Settings>().FromInstance(enemyDriverSystemSettings);
Container.Bind<EnemyDeathSystem.Settings>().FromInstance(enemyDeathSystemSettings);
Container.Bind<ItemContainerFactory.Settings>().FromInstance(itemContainerFactorySettings);
Container.Bind<ActorMeleeSystem.Settings>().FromInstance(actorMeleeSystemSettings);
Container.Bind<ActorDeathSystem.Settings>().FromInstance(actorDeathSystemSettings);
Container.Bind<SoundManager.Settings>().FromInstance(soundManagerSettings);
// Systems
Container.Bind<EntityManager>().FromResolveGetter<Unity.Entities.World>(w => w.EntityManager);
Container.Bind<Unity.Entities.World>().FromInstance(Unity.Entities.World.DefaultGameObjectInjectionWorld);
Container.Bind<ActorAnimationSystem>().FromEcs();
Container.Bind<SoundManager>().AsSingle();
Container.Bind<ActorAimingAnimationSystem>().FromEcs();
Container.Bind<ActorGroundCheckSystem>().FromEcs();
Container.Bind<EnemyDriverSystem>().FromEcs();
Container.Bind<EnemyDeathSystem>().FromEcs();
Container.Bind<ItemContainerFactory>().AsSingle();
Container.Bind<ItemDropSystem>().FromEcs();
Container.Bind<ActorMeleeSystem>().FromEcs();
Container.Bind(binder => binder.AllTypes().DerivingFrom<IHashes>())
.FromMethodUntyped(
c =>
{
var hashes = FormatterServices.GetUninitializedObject(c.MemberType);
var fields = hashes.GetType().GetFields(BindingFlags.Instance | BindingFlags.Public);
foreach (var field in fields)
{
if (field.FieldType == typeof(int))
{
field.SetValue(hashes, Animator.StringToHash(field.Name));
}
else
{
throw new Exception($"Only int types allowed in {c.MemberType} for field {field.Name}");
}
}
return hashes;
})
.AsTransient();
Container.Bind<CollisionSoundSystem>().FromEcs();
Container.Bind<ParticleSystemFactory>().AsSingle();
Container.Bind<ActorDeathSystem>().FromEcs();
Container.Bind<ParticleCollisionSystem>().FromEcs();
Container.Bind<ItemUseSystem>().FromEcs();
Container.Bind<IItemUseSystem>().To<HealthPackUseSystem>().AsSingle();
Container.Bind<IItemUseSystem>().To<GrenadeUseSystem>().AsSingle();
Container.Bind<AssetReferenceT<ItemPrefab>>().WithId(AssetManifest.HealthKit).FromInstance(healthKit);
}
}
}

View file

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: 3e15ef1ad21741a68784c7a4ddfd9718
timeCreated: 1531150718