public void Add(Item item) { // Dupe-check list bool stacked = item.StackCount > 1 || _cache.StackableRecords.Contains(item.BaseRecord) || _cache.SpecialRecords.Contains(item.BaseRecord); // Special "single seed" items. if (stacked) { Stacked.Add(item); All.Add(item); return; } // TODO: Detect slith rings etc // We don't have this record at all, unknown to IA. Probably need to parse DB. bool unknownItem = !_cache.AllRecords.Contains(item.BaseRecord); if (unknownItem) { if (item.BaseRecord.StartsWith("records/storyelements/rewards/")) { Quest.Add(item); } else { Unknown.Add(item); } All.Add(item); return; } // We already have this item.. if (All.Any(m => m.Equals(item))) { Duplicates.Add(item); All.Add(item); return; } // We already have this item.. if (_playerItemDao.Exists(TransferStashService.Map(item, null, false))) { Duplicates.Add(item); All.Add(item); return; } Remaining.Add(item); All.Add(item); }
internal virtual string GetValue(string name) { switch (name) { case "Inverted": return(Inverted.ToString()); case "Stacked": return(Stacked.ToString()); } return(""); }
// generic interaction public void Interact(GameObject interactor) { // if we have player or player tower (i.e. some stacked Cubes) Stacked sc = interactor.GetComponent <Stacked>(); if (sc != null) { GameObject top = sc.GetFirst(); Player player = top.GetComponent <Player>(); if (player != null) { // promote to next level player.Promote(); } } }
// When the Cube is interacted by other object (Player or other cube), generic (withou direction) public void Interact(GameObject interactor) { // if the interactor is a Stacked object (Player or Player's "Cube tower") Stacked stacked = interactor.GetComponent <Stacked>(); if (stacked != null) { Player player = stacked.GetFirst().GetComponent <Player>(); //if (top.GetComponent<Player>() != null) // if is interacted not by Player or Player's "Cube tower" if (player == null) // if is interacted not by Player or Player's "Cube tower" { return; } // else - stack stacked.Stack(gameObject); } }
// receiving damage of defined type public void Damage(float amount, DamageType type) { // if cube is blocked by a block - VIRTUAL damage received if (type == DamageType.VIRTUAL) { // unstack / slice GameObject upper = gameObject.GetComponent <Stacked>().GetUpper(); if (upper != null) { Stacked sc = upper.GetComponent <Stacked>(); if (sc != null) { sc.Unstack(gameObject); } } } // decrement durability by calling generic damage receiver Damage(amount); }
void MovePlayer() { // only if "alive" if (!alive) { return; } // Calculate movement float deltaX = Time.deltaTime * speedX; float deltaZ = -Time.deltaTime * speedZ * Input.GetAxis("Horizontal"); transform.Translate(deltaX, 0, deltaZ); Vector3 pos = transform.position; // Ensure player does not leave the game road if (pos.z > 2.0f) { pos.z = 2.0f; transform.position = pos; } else if (pos.z < -2.0f) { pos.z = -2.0f; transform.position = pos; } // ensure the "tower" to move all cubes at once // get the lowest stack cube Stacked sc = gameObject.GetComponent <Stacked>(); GameObject o = sc.GetLast(); pos.y = o.transform.position.y; // for all stacked objects while (o) { o.transform.position = pos; pos.y += 1.0f; o = o.GetComponent <Stacked>().GetUpper(); } }