Exemple #1
0
        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);
        }
Exemple #2
0
        internal virtual string GetValue(string name)
        {
            switch (name)
            {
            case "Inverted":
                return(Inverted.ToString());

            case "Stacked":
                return(Stacked.ToString());
            }
            return("");
        }
Exemple #3
0
    // 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();
            }
        }
    }
Exemple #4
0
    // 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);
        }
    }
Exemple #5
0
 // 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);
 }
Exemple #6
0
    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();
        }
    }