private static string DetermineGemToDrop(Slot slot)
    {
        //Get slot index
        var index = slot.index;
        //Get resource pouch gemType
        ItemInstance inst;

        if (Inventory.Instance.GetItem(index, out inst))
        {
            Item.GemType bagType = inst.pouchType;
            Debug.Log("Current Town is " + Inventory.Instance.GetCurrentTown());
            switch (bagType)
            {
            case Item.GemType.Ruby:
                return("ruby");

            case Item.GemType.Sapphire:
                return("sapphire");

            case Item.GemType.Emerald:
                return("emerald");

            case Item.GemType.Amethyst:
                return("amethyst");

            default:
                return("ruby");
            }
        }
        return("ruby");
    }
    private Travel.Towns TownOfGem(Item.GemType gem)
    {
        switch (gem)
        {
        case Item.GemType.Ruby:
            return(Travel.Towns.FlamingPeak);

        case Item.GemType.Emerald:
            return(Travel.Towns.WickedGrove);

        case Item.GemType.Sapphire:
            return(Travel.Towns.GiantsPass);

        case Item.GemType.Amethyst:
            return(Travel.Towns.SkyCity);

        default:
            return(Travel.Towns.FlamingPeak);
        }
    }
    /*
     * private void Update() {
     *      Debug.Log("Zap pos: " + Zap.GetComponent<RectTransform>().position);
     *      if (winner != null) {
     *              Debug.Log("Winner pos: " + winner.Avatar.transform.position);
     *      }
     * }
     */

    private Sprite FindSpriteRepresentation(string gameSceneName, Item.GemType playerGemType)
    {
        switch (gameSceneName)
        {
        case "Smelting":
            // Player /played/ smelting, so /got/ brick.
            return(ItemDB.GetActual("brick").spriteRepresentation);

        case "Tracing":
            return(ItemDB.GetActual("shell").spriteRepresentation);

        case "Cutting":
            return(ItemDB.GetActual("cut " + playerGemType).spriteRepresentation);

        case "Polishing":
            return(ItemDB.GetActual("charged " + playerGemType).spriteRepresentation);

        default:
            return(ItemDB.GetActual("ore").spriteRepresentation);
        }
    }
Ejemplo n.º 4
0
    public void UpdateCurrentColor(Item.GemType type)
    {
        Debug.Log("Changing colour now");
        switch (type)
        {
        case Item.GemType.Ruby:
            CurrentSack.GetComponent <Renderer>().material.color = Ruby;
            break;

        case Item.GemType.Amethyst:
            CurrentSack.GetComponent <Renderer>().material.color = Amethyst;
            break;

        case Item.GemType.Emerald:
            CurrentSack.GetComponent <Renderer>().material.color = Emerald;
            break;

        case Item.GemType.Sapphire:
            CurrentSack.GetComponent <Renderer>().material.color = Sapphire;
            break;
        }
        Debug.Log("Color is changed");
    }
    public int GetMaxRetries(Item.GemType gem)
    {
        Travel.Towns townOfGem = TownOfGem(gem);
        int          index     = unlockedTowns.IndexOf(townOfGem);

        switch (index)
        {
        case 0:
            return(3);

        case 1:
            return(3);

        case 2:
            return(2);

        case 3:
            return(1);

        default:
            return(3);
        }
    }
    private void GolemGrab()
    {
        //Debug.Log("Casting Ray");
        Ray        ray = Camera.main.ScreenPointToRay(Input.mousePosition);
        RaycastHit hit;

        //Do an accuracy check before hand to ensure one isn't picked up and floating away
        holding = CheckAccuracy();
        if (!holding)
        {
            ResetGolem();
        }

        if (Physics.Raycast(ray, out hit, 20))
        {
            //If a golem
            if (hit.transform.gameObject.tag == "Golem")
            {
                //Check we don't currently have another golem held, if so reset it
                if (pickedupGolem != null && pickedupGolem != hit.transform.gameObject)
                {
                    Debug.Log("Reseting golem");
                    ResetGolem();
                }
                else
                {
                    //If not holding a pouch
                    if (!hit.transform.gameObject.GetComponent <ShonkyWander>().IsHoldingPouch())
                    {
                        GameManager.pickedUpGolem = true;
                        pickedupGolem             = hit.transform.gameObject;
                        HoldGolem(hit);
                    }
                    else
                    {
                        //If room in the inventory, add the pouch
                        int pouchSlot = Inventory.Instance.InsertItem(pouch);
                        pickedupGolem = hit.transform.gameObject;
                        int golemIndex = GetGolemSlot();
                        if (pouchSlot > -1)
                        {
                            //Reset golem and set pouch to inventory
                            //SFX.Play("sound");
                            hit.transform.gameObject.GetComponent <ShonkyWander>().RemovePouch();
                            Slot insertedSlot = inv.GetSlotAtIndex(pouchSlot);
                            insertedSlot.SetItem(pouch);

                            //Get gemtype from golem and apply to pouch
                            ItemInstance instance;
                            if (ShonkyInventory.Instance.GetItem(golemIndex, out instance))
                            {
                                Item.GemType bagType = instance.pouchType;
                                ItemInstance inst;
                                if (Inventory.Instance.GetItem(pouchSlot, out inst))
                                {
                                    inst.pouchType = bagType;
                                }
                            }

                            //Change pouch colour according to Gem
                            GameObject obj;
                            if (insertedSlot.GetPrefabInstance(out obj))
                            {
                                obj.GetComponent <SackHueChange>().UpdateCurrentColor(instance.pouchType);
                            }

                            ResetGolem();
                        }
                        else
                        {
                            //SFX.Play("sound");
                        }
                    }
                }
            }
            else if (Mine.Instance.ReadyToCollect() && hit.transform.gameObject.CompareTag("PortalEntry") &&
                     pickedupGolem == null)
            {
                golems = null;
                golems = Mine.Instance.ReturnReadyGolems();
                foreach (int golem in golems)
                {
                    ReturnGolem(golem);
                }
            }
            else
            {
                ResetGolem();
            }
        }
    }
    private void GolemGrab()
    {
        //Debug.Log("Casting Ray");
        Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);

        Debug.DrawLine(ray.origin, ray.direction, Color.green);
        RaycastHit hit;

        if (Physics.Raycast(ray, out hit, 40))
        {
            //If a golem
            if (hit.transform.gameObject.CompareTag("Golem") && pickedupGolem == null)
            {
                //If not holding a pouch
                if (!hit.transform.gameObject.GetComponent <ShonkyWander>().IsHoldingPouch())
                {
                    GameManager.pickedUpGolem = true;
                    pickedupGolem             = hit.transform.gameObject;
                    HoldGolem(hit);
                }
                else
                {
                    //If room in the inventory, add the pouch
                    int pouchSlot = Inventory.Instance.InsertItem(pouch);
                    pickedupGolem = hit.transform.gameObject;
                    int golemIndex = GetGolemSlot();
                    if (pouchSlot > -1)
                    {
                        //Reset golem and set pouch to inventory
                        SFX.Play("Golem Exclaim Voices", 1f, 1f, 0f, false, 0f);
                        hit.transform.gameObject.GetComponent <ShonkyWander>().RemovePouch();
                        Slot insertedSlot;
                        if (!GameManager.Instance.InTutorial)
                        {
                            insertedSlot = inv.GetSlotAtIndex(pouchSlot);
                        }
                        else
                        {
                            insertedSlot = tutInv.GetSlotAtIndex(pouchSlot);
                        }

                        insertedSlot.SetItem(pouch);

                        //Get gemtype from golem and apply to pouch
                        ItemInstance instance;
                        if (ShonkyInventory.Instance.GetItem(golemIndex, out instance))
                        {
                            Item.GemType bagType = instance.pouchType;
                            ItemInstance inst;
                            if (Inventory.Instance.GetItem(pouchSlot, out inst))
                            {
                                inst.pouchType = bagType;
                            }
                        }

                        //Change pouch colour according to Gem
                        GameObject obj;
                        if (insertedSlot.GetPrefabInstance(out obj))
                        {
                            obj.GetComponent <SackHueChange>().UpdateCurrentColor(instance.pouchType);
                        }

                        if (GameManager.Instance.InTutorial && !GameManager.Instance.MineGoleminteractGolem)
                        {
                            if (GameManager.Instance.ReturnPouch)
                            {
                                tutManager.NextInstruction();
                                tutShonkyInv.RemoveSpecificRune(pickedupGolem);
                                GameManager.Instance.ReturnPouch            = false;
                                GameManager.Instance.MineGoleminteractGolem = true;
                                RemovePortalRune();
                                Camera.main.GetComponent <CameraTap>().HighlightButton();
                            }
                        }

                        //Move pouch to slot from golem position
                        GameObject newPouch = insertedSlot.prefabInstance;
                        newPouch.transform.position = pickedupGolem.transform.position;

                        Vector3 midwayPos = (Camera.main.transform.position + newPouch.transform.position) / 2;
                        newPouch.transform.DOMove(midwayPos, 1f, false).SetEase(Ease.OutBack).OnComplete(() =>
                                                                                                         newPouch.transform.DOMove(insertedSlot.transform.position, 2f, false)
                                                                                                         .SetEase(Ease.OutBack));
                        pickedupGolem = null;
                    }
                    else
                    {
                        HoldGolem(hit);
                    }
                }
            }
            else if (pickedupGolem != null)
            {
                //Debug.Log("Calling hold golem");
                HoldGolem();
            }
            else if (Mine.Instance.ReadyToCollect() && hit.transform.gameObject.CompareTag("PortalEntry") &&
                     pickedupGolem == null)
            {
                //Stop Sound
                SFX.StopSpecific("Mine_portal_fini");

                golems = null;
                golems = Mine.Instance.ReturnReadyGolems();
                foreach (int golem in golems)
                {
                    ReturnGolem(golem);
                }
            }
        }
        else if (pickedupGolem != null)
        {
            HoldGolem();
        }
    }