// =================================================================================== // 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); } }
// =================================================================================== // 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); } }
// =================================================================================== // 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; }
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); }
// =================================================================================== // 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); } }