Example #1
0
    public void Execute()
    {
        if (!PooledObjectManager.Instance.UsePooledObject(_playerConfig.UnitData.UnitPrefabId, out PooledObject pooledObject))
        {
            Debug.LogError($"[{nameof(SpawnPlayerAction)}]: Could not retrieve player prefab with id {_playerConfig.UnitData.UnitPrefabId}!");
            OnComplete?.Invoke();
            return;
        }
        PlayerUnit player = pooledObject as PlayerUnit;

        if (player == null)
        {
            Debug.LogError($"[{nameof(SpawnPlayerAction)}]: Pooled Object retrieved with id {_playerConfig.UnitData.UnitPrefabId} was not of type {nameof(PlayerUnit)}!");
            OnComplete?.Invoke();
            return;
        }
        PlayerInitializationData initData = new PlayerInitializationData()
        {
            OverrideUniqueId = _playerConfig.UnitData.UnitPrefabId,
            UnitData         = _playerConfig.UnitData
        };

        player.Initialize(initData);
        player.Spawn();
        OnComplete?.Invoke();
    }
Example #2
0
    public override void Initialize(PooledObjectInitializationData initializationData)
    {
        base.Initialize(initializationData);
        PlayerInitializationData initData = initializationData as PlayerInitializationData;

        if (initData == null)
        {
            Debug.LogError($"[{nameof(PlayerUnit)}]: Did not receive player initialization data!");
            return;
        }
        Instance = this;
        _playerOutfitController.Initialize();
        UnitsManager.Instance.RegisterUnit(this);
        _playerOutfitController.OnOutfitChangeComplete += OnOutfitChanged;
        OnOutfitChanged();
        Debug.Log($"[{nameof(PlayerUnit)}]: Initialized player character!");
    }