Esempio n. 1
0
    // =================================================================================== //
    public void ExecuteEndTurnForTemporaryEffectItem()
    {
        if (_temporaryEffectItems == null)
        {
            return;
        }
        if (_temporaryEffectItems.Count <= 0)
        {
            return;
        }

        // reduce 1 turn for each
        foreach (var item in _temporaryEffectItems.Keys.ToList())
        {
            _temporaryEffectItems[item]--;
        }

        // if turns finished - remove from list and remove effect
        var itemsToRemove = _temporaryEffectItems.Where(f => f.Value <= 0).ToArray();

        foreach (var element in itemsToRemove)
        {
            // remove stats
            this.Stats -= element.Key.Stats;

            _temporaryEffectItems.Remove(element.Key);

            // destroy
            Destroy(element.Key.gameObject);
        }
    }
Esempio n. 2
0
    // =================================================================================== //
    public void ConsumeItemFromPocket(Item item)
    {
        // get stats
        this.Stats += item.Stats;

        // remove from map
        GridElement pocket = item.transform.parent.GetComponent <GridElement>();

        _itemsInPockets.Remove(pocket.Index);

        // if temp - insert to temp effect list
        if (item.NumberOfTurnsToExpire > 0)
        {
            // if temporary effect item - move to special list where it will delete and lose effect after certain turns
            // TODO: improve formula for number of turns for temp effect item
            int turns = item.NumberOfTurnsToExpire - this.Stats[Stat.ENDURANCE]; // TODO: expiration of potions due to Endurance - re-think!
            _temporaryEffectItems[item] = turns;
            item.GetComponent <SpriteRenderer>().enabled = false;
            item.GetComponent <Collider2D>().enabled     = false;
        }
        // if permanent - destroy
        else
        {
            // destroy
            Destroy(item.gameObject);
        }
    }
 private void InitializeStats(StatsDictionary stats)
 {
     foreach (var statSet in stats)
     {
         var  statType = statSet.Key;
         var  statDef  = statSet.Value;
         Stat stat;
         stat = statDef.Regenerative ? new RegenerativeStat(statDef.Amount, statDef.RegenerativeForce) : new Stat(statDef.Amount);
         StatHolder.AddStat(statType, stat);
     }
 }
Esempio n. 4
0
    // =================================================================================== //
    public void RemoveItem(Item item)
    {
        // remove from map
        _equippedItems.Remove(item.SocketType);

        // put in inventory
        Inventory.Instance.AddItem(item);

        // remove stats
        this.Stats -= item.Stats;
    }
Esempio n. 5
0
        public void Load(DataResponse response)
        {
            StatsItem item = null;

            if (!StatsDictionary.TryGetValue(response.ResponseType, out item))
            {
                item = new StatsItem()
                {
                    ResponseType = response.ResponseType
                };
                StatsDictionary.Add(response.ResponseType, item);
            }
            item.Add((UInt64)response.Reader.BaseStream.Length);
        }
Esempio n. 6
0
    // =================================================================================== //
    public void EquipItem(Item item)
    {
        // not equip if socket type is pocket or none
        if (item.SocketType == SocketType.POCKET || item.SocketType == SocketType.NONE)
        {
            return;
        }

        // remove if item type exists
        if (_equippedItems.ContainsKey(item.SocketType))
        {
            RemoveItem(_equippedItems[item.SocketType]);
        }

        // change item state to equipped
        item.State = ItemState.EQUIPPED;

        // add it
        _equippedItems[item.SocketType] = item;

        // add stats
        this.Stats += item.Stats;
    }
 public override void Initialize(Transform modelTransform, IPlayerLoopProcessor playerLoopProcessor, StatsDictionary stats, float jumpPower)
 {
     base.Initialize(modelTransform, playerLoopProcessor, stats, jumpPower);
     if (modelTransform.TryGetComponent <Rigidbody>(out var cachedRigidBody))
     {
         ModelRigidbody = cachedRigidBody;
     }
     else
     {
         Debug.LogWarning($"{modelTransform.name} does not contain Rigidbody, which is required by {GetType().Name}." +
                          " Default Rigidbody component will be added now and cleaned up during Shutdown process.");
         ModelRigidbody         = modelTransform.gameObject.AddComponent <Rigidbody>();
         needToCleanUpRigidbody = true;
     }
 }
 public virtual void Initialize(Transform gameTransform, IPlayerLoopProcessor playerLoopProcessor, StatsDictionary stats, float jumpPower)
 {
     GameTransform = gameTransform;
     RegisterAsTransformOwner();
     MaxMoveSpeed = 50f;
     JumpPower    = jumpPower;
     InitializeStats(stats);
     SubscribeForSpeedChange();
     SubscribeJumpPowerChange();
     PlayerLoopSubscriptionController.Initialize(this, playerLoopProcessor);
     PlayerLoopSubscriptionController.SubscribeToLoop();
     if (effectController == null)
     {
         effectController = new EffectController(this);
     }
 }