Пример #1
0
    public void SpawnUnit(UnitIdentifier unitIdentifier)
    {
        var character = Instantiate(baseCharacterMaster, unitRoot);

        var initialPosition = unitIdentifier.TeamId == 0
            ? spawnpointFetcher.GetNextPlayerStartPosition()
            : spawnpointFetcher.GetNextEnemyStartPosition();

        var unitDataSO = UnitListSO.GetUnitDataSO(unitIdentifier.UnitClass);
        var unit       = UnitFactory.GetUnit(unitIdentifier, unitDataSO, initialPosition);

        character.Initialize(unit, unitDataSO.unitClassMaster);

        character.transform.position = initialPosition;


        if (unitIdentifier.TeamId == 1)
        {
            character.transform.rotation = Quaternion.Euler(0f, 180f, 0f);
        }

        if (!ActiveCharacters.ContainsKey(unitIdentifier))
        {
            ActiveCharacters.Add(unitIdentifier, character);
        }
        else
        {
            Debug.LogError($"[UnitManager] Unit {unitIdentifier.ToString()} was already spawned!");
        }
    }
 public CommonCommandData(UnitIdentifier actor, List <UnitIdentifier> targetsIdentifiers, UnitAbility unitAbility, Action onCommandCompletedCallback)
 {
     this.actor = actor;
     this.targetsIdentifiers         = targetsIdentifiers;
     this.unitAbility                = unitAbility;
     this.onCommandCompletedCallback = onCommandCompletedCallback;
 }
Пример #3
0
 public BaseCharacterMaster GetActiveCharacter(UnitIdentifier unitIdentifier)
 {
     if (!ActiveCharacters.TryGetValue(unitIdentifier, out var bcm))
     {
         Debug.Log($"[UnitManager] Attempted to fetch unitId: {unitIdentifier.UniqueId} which does not exists/was removed");
         return(null);
     }
     return(bcm);
 }
Пример #4
0
 public UnitIdentifier GetNextInQueue()
 {
     if (active != null) // TODO Can probably be avoided
     {
         queue.Enqueue(active);
     }
     active = queue.Dequeue();
     return(active);
 }
Пример #5
0
 public WorldModel(List <Unit> modelActiveCharacters, Queue <UnitIdentifier> queue, UnitIdentifier activeUnit)
 {
     ModelActiveCharacters = new List <Unit>(modelActiveCharacters);
     foreach (var modelActiveCharacter in ModelActiveCharacters)
     {
         modelActiveCharacter.SimulateActivateActionEffects();
     }
     Queue = queue;
     CurrentlyActiveUnit = activeUnit;
 }
 public static Unit GetUnit(UnitIdentifier unitIdentifier, UnitDataSO unitDataSO, Vector3 initialPosition)
 {
     return
         (new Unit(unitIdentifier,
                   new UnitData(unitDataSO,
                                UnitAbilityFactory.GetUnitAbilities(unitDataSO),
                                unitDataSO.goalOrientedBehaviourPresetSO.goals,
                                unitIdentifier.TeamId == 0
                     ? Color.green
                     : Color.red,
                                initialPosition)
                   ));
 }
Пример #7
0
        public override string ToString()
        {
            var builder = new StringBuilder();

            builder.Append(Designator);

            if (UnitIdentifier != null)
            {
                builder.Append(" ");
                builder.Append(UnitIdentifier.ToString());
            }

            return(builder.ToString());
        }
Пример #8
0
    public bool TryGetUnit(UnitIdentifier unitIdentifier, out Unit result)
    {
        result = null;
        foreach (var unit in ModelActiveCharacters)
        {
            if (unit.UnitIdentifier.Equals(unitIdentifier))
            {
                result = unit;
                return(true);
            }
        }

        return(false);
    }
    public void Setup(int slotID, UnitRelativeOwner owner, UnityAction <UnitRelativeOwner, int> onCharacterRemoved)
    {
        this.SlotID             = slotID;
        this.onCharacterRemoved = onCharacterRemoved;
        this.UnitOwner          = owner;
        this.UnitClass          = default;

        this.UnitIdentifier = new UnitIdentifier(owner == UnitRelativeOwner.Self ? 0 : 1, slotID, default);

        UpdateDescription();

        if (owner == UnitRelativeOwner.Opponent)
        {
            characterSlotPresenter.OverrideColorScheme();
        }
    }
Пример #10
0
    public void UpdateStatus(List <UnitIdentifier> unitsToRemove)
    {
        var newQueue = new Queue <UnitIdentifier>();

        foreach (var unit in queue)
        {
            if (!unitsToRemove.Contains(unit))
            {
                newQueue.Enqueue(unit);
            }
        }
        if (unitsToRemove.Contains(active))
        {
            active = null;
        }
        queue = newQueue;
    }
 private Unit(UnitIdentifier unitIdentifier, UnitData unitData, UnitState unitState)
 {
     UnitIdentifier = unitIdentifier;
     UnitData       = unitData;
     UnitState      = unitState;
 }
 public Unit(UnitIdentifier unitIdentifier, UnitData unitData)
 {
     UnitIdentifier = unitIdentifier;
     UnitData       = unitData;
     UnitState      = new UnitState(unitData.MaxHp);
 }
Пример #13
0
 /// <summary>
 /// Constructs a Delphi identifier string for a Delphi unit identifier.
 /// </summary>
 /// <param name="name">The unit identifier, either a generic name or fully qualified name of the unit</param>
 /// <returns>The Delphi identifier string</returns>
 public static string ToSourceCode(this UnitIdentifier identifier) => string.Join(".", identifier.Namespace.Append(identifier.Unit));
 public void Initialize(List <Unit> unitCopies, Queue <UnitIdentifier> queue, UnitIdentifier activeUnit)
 {
     WorldModelStack = new Stack <WorldModel>();
     WorldModelStack.Push(new WorldModel(unitCopies, queue, activeUnit));
 }
Пример #15
0
 public void AddToQueue(UnitIdentifier unitIdentifier)
 {
     queue.Enqueue(unitIdentifier);
 }