Exemplo n.º 1
0
        public void Drop()
        {
            if (itemSelected == null)
            {
                return;
            }

            GameObject     player         = GameObject.Find("Player");
            PixelInventory pixelInventory = player.GetComponentInChildren <PixelInventory>();

            Debug.Assert(pixelInventory != null);

            // Stop Combining
            Transform button    = transform.Find("Inventory GUI").Find("Inventory Buttons").Find("Combine");
            Image     buttonImg = button.GetComponent <Image>();

            isCombining     = false;
            buttonImg.color = new Color(255, 255, 255);

            pixelInventory.Drop(itemSelected);

            itemSelected    = null;
            itemSelectedNum = 0;
            RefreshItems();
        }
Exemplo n.º 2
0
    public static List <GameTask> CreateGameTasks(string actionString)
    {
        List <GameTask> gameTasks     = new List <GameTask>();
        List <string>   actionStrings = BreakUpString(actionString);

        Character taskCharacter;
        TaskType  type = IdentifyTaskType(actionStrings, out taskCharacter);

        if (type == TaskType.NAVIGATE)
        {
            GameTask gameTask = new GameTask();
            gameTask.taskType = TaskType.NAVIGATE;
            Debug.Assert(taskCharacter != null);

            if (actionStrings.Count == 3)
            {
                PixelCollider pc       = taskCharacter.GetComponentInChildren <PixelCollider>();
                string        roomName = pc.GetPixelRoom().name;
                actionStrings.Insert(2, roomName);
            }

            string    locationString = actionStrings[2];
            PixelRoom room           = GetObjectOfType <PixelRoom>(locationString);
            gameTask.arguments.Add(room);

            string        objectString  = actionStrings[3];
            PixelCollider pixelCollider = GetObjectOfType <PixelCollider>(objectString, room.transform);
            gameTask.arguments.Add(pixelCollider);
            gameTask.character = taskCharacter;

            Direction direction = Direction.All;
            if (actionStrings.Count > 4)
            {
                string directionString = actionStrings[4];
                if (directionString == "NE")
                {
                    direction = Direction.NE;
                }
                if (directionString == "SE")
                {
                    direction = Direction.SE;
                }
                if (directionString == "SW")
                {
                    direction = Direction.SW;
                }
                if (directionString == "NW")
                {
                    direction = Direction.NW;
                }
            }

            GameTask faceTask = new GameTask();
            faceTask.taskType = TaskType.FACEDIRECTION;
            faceTask.duration = 0.1f;
            faceTask.arguments.Add(direction);
            faceTask.character = taskCharacter;

            gameTasks.Add(gameTask);
            gameTasks.Add(faceTask);
        }
        else if (type == TaskType.CREATE)
        {
            GameTask createItemTask = new GameTask();
            createItemTask.taskType = TaskType.CREATE;
            createItemTask.duration = 0.0f;

            GameObject itemObj = null;

            int  number    = 1;
            bool hasNumber = int.TryParse(actionStrings[2], out number);
            if (!hasNumber)
            {
                number = 1;
                actionStrings.Insert(2, number.ToString());
            }

            Debug.Assert(number >= 1 && number <= 4);
            itemObj = Resources.Load("Items/" + actionStrings[3]) as GameObject;
            if (itemObj == null)
            {
                Debug.LogWarning(actionStrings[3] + " is not an item");
            }

            Debug.Assert(itemObj != null);
            createItemTask.arguments.Add(number);
            createItemTask.arguments.Add(itemObj);
            createItemTask.character = taskCharacter;

            gameTasks.Add(createItemTask);
        }
        else if (type == TaskType.PUTS || type == TaskType.TAKES)
        {
            // Navigate first
            int  number    = 1;
            bool hasNumber = int.TryParse(actionStrings[2], out number);

            if (!hasNumber)
            {
                number = 1;
                actionStrings.Insert(2, "1");
            }

            if (actionStrings.Count == 5)
            {
                PixelCollider pc       = taskCharacter.GetComponentInChildren <PixelCollider>();
                string        roomName = pc.GetPixelRoom().name;
                actionStrings.Insert(4, roomName);
            }

            PixelInventory inv = taskCharacter.GetComponentInChildren <PixelInventory>();
            Debug.Assert(inv != null);

            string    locationString = actionStrings[4];
            PixelRoom room           = GetObjectOfType <PixelRoom>(locationString);

            string        objectString  = actionStrings[5];
            PixelCollider pixelCollider = GetObjectOfType <PixelCollider>(objectString, room.transform);

            PixelStorage storage = pixelCollider.transform.parent.GetComponent <PixelStorage>();
            if (storage == null)
            {
                Debug.LogWarning("Cannot Place Item in " + actionStrings[5]);
                return(gameTasks);
            }

            // Navigate First
            GameTask navigateTask = new GameTask();
            navigateTask.taskType  = TaskType.NAVIGATE;
            navigateTask.character = taskCharacter;
            navigateTask.arguments.Add(room);
            navigateTask.arguments.Add(pixelCollider);
            gameTasks.Add(navigateTask);

            // Then Put
            GameTask putsItemTask = new GameTask();
            putsItemTask.taskType = type;
            putsItemTask.arguments.Add(number);
            putsItemTask.arguments.Add(actionStrings[3]);
            putsItemTask.arguments.Add(storage);
            putsItemTask.character = taskCharacter;
            gameTasks.Add(putsItemTask);
        }
        else if (type == TaskType.GIVES || type == TaskType.STEALS)         // player gives hamen key
        {
            string    characterName = actionStrings[2];
            Character toCharacter   = GetCharacter(characterName);
            if (toCharacter == null)
            {
                Debug.LogWarning("Character: " + toCharacter.name + " does not exist");
            }

            PixelInventory fromInventory = taskCharacter.GetComponentInChildren <PixelInventory>();
            PixelInventory toInventory   = toCharacter.GetComponentInChildren <PixelInventory>();
            Debug.Assert(fromInventory != null && toInventory != null);

            PixelCollider toCharacterCollider = toCharacter.GetComponentInChildren <PixelCollider>();
            PixelRoom     room = toCharacterCollider.GetPixelRoom();
            Debug.Assert(toCharacterCollider != null && room != null);

            int  count     = 1;
            bool hasNumber = int.TryParse(actionStrings[3], out count);
            if (!hasNumber)
            {
                count = 1;
                actionStrings.Insert(3, "1");
            }

            string itemName = actionStrings[4];

            // Navigate to the player
            GameTask navigateTask = new GameTask();
            navigateTask.taskType  = TaskType.NAVIGATE;
            navigateTask.character = taskCharacter;
            navigateTask.arguments.Add(room);
            navigateTask.arguments.Add(toCharacterCollider);
            gameTasks.Add(navigateTask);

            // Then Gives
            GameTask givesItemTask = new GameTask();
            givesItemTask.taskType = type;
            givesItemTask.arguments.Add(count);
            givesItemTask.arguments.Add(itemName);
            givesItemTask.arguments.Add(toCharacter);
            givesItemTask.character = taskCharacter;
            gameTasks.Add(givesItemTask);
        }
        else if (type == TaskType.MOUNT)         // player gives hamen key
        {
            // TODO 1. create a gametask for mounting an object. Must pass in the correct arguments in the gametask that
            // gets passed into the character task
        }
        return(gameTasks);
    }
Exemplo n.º 3
0
        void RefreshItems()
        {
            GameObject     player         = GameObject.Find("Player");
            PixelInventory pixelInventory = player.GetComponentInChildren <PixelInventory>();

            Debug.Assert(pixelInventory != null);
            Transform inventoryGUI = transform.Find("Inventory GUI");

            // Small Items
            for (int i = 0; i < 6; ++i)
            {
                PixelInventory.SmallItemSlot smallItemSlot = pixelInventory.smallItems[i];
                if (smallItemSlot == null)
                {
                    return;
                }
                Transform smallItemParent = inventoryGUI.Find("Small Items");
                Transform slotUI          = smallItemParent.Find("Stack " + (i + 1));
                Image     img             = slotUI.GetComponent <Image>();
                img.color = new Color(255, 255, 255, 0.3f);

                for (int j = 0; j < 4; ++j)
                {
                    Transform slotObject = slotUI.Find("Background").Find("Object " + (j + 1));
                    Image     slotImage  = slotObject.GetComponent <Image>();

                    slotImage.color = Color.clear;
                    if (smallItemSlot.items[j] != null)
                    {
                        SpriteRenderer objectUI = smallItemSlot.items[j].GetComponent <SpriteRenderer>();
                        slotImage.sprite = objectUI.sprite;
                        slotImage.color  = Color.white;
                    }
                }

                Text t = slotUI.Find("Count").GetComponent <Text>();
                if (pixelInventory.smallItems[i].count >= 2)
                {
                    t.text = "x" + pixelInventory.smallItems[i].count;
                }
                else
                {
                    t.text = "";
                }
            }

            // Large Items
            for (int i = 0; i < 2; ++i)
            {
                PixelInventory.BigItemSlot bigItemSlot = pixelInventory.bigItems[i];
                Transform bigItemParent = inventoryGUI.Find("Big Items");
                Transform slotUI        = bigItemParent.Find("Stack " + (i + 1));

                Image slotImage = slotUI.GetComponent <Image>();
                if (pixelInventory.bigItems[i].item == null)
                {
                    slotImage.color = new Color(255, 255, 255, 0.0f);
                }
                else
                {
                    slotImage.color = new Color(255, 255, 255, 1.0f);
                }

                if (bigItemSlot.item != null)
                {
                    SpriteRenderer objectUI = bigItemSlot.item.GetComponent <SpriteRenderer>();
                    slotImage.sprite = objectUI.sprite;
                    slotImage.color  = Color.white;
                }
            }

            // Property Info
            Text itemname        = transform.Find("Item Description Panel").Find("Name").GetComponent <Text>();
            Text itemdescription = transform.Find("Item Description Panel").Find("Description").GetComponent <Text>();
            Text itemproperties  = transform.Find("Item Description Panel").Find("Properties").GetComponent <Text>();

            Debug.Assert(itemname != null);
            Debug.Assert(itemdescription != null);
            Debug.Assert(itemproperties != null);
            itemname.text        = "";
            itemdescription.text = "";
            itemproperties.text  = "";
        }
Exemplo n.º 4
0
        public void SelectLargeItem(int itemnum)
        {
            Debug.Assert(itemnum <= 2 && itemnum > 0);

            GameObject     player         = GameObject.Find("Player");
            PixelInventory pixelInventory = player.GetComponentInChildren <PixelInventory>();

            Debug.Assert(pixelInventory != null);

            Transform inventoryGUI    = transform.Find("Inventory GUI");
            Transform largeItemParent = inventoryGUI.Find("Big Items");

            RefreshItems();

            if (isCombining)
            {
                itemSelectedNum = 0;
                itemSelected    = null;

                Transform button    = transform.Find("Inventory GUI").Find("Inventory Buttons").Find("Combine");
                Image     buttonImg = button.GetComponent <Image>();
                buttonImg.color = new Color(255, 255, 255);
                isCombining     = false;

                RefreshItems();
            }

            itemSelectedNum = 0;
            itemSelected    = pixelInventory.bigItems[itemnum - 1];
            if (itemSelected.empty)
            {
                return;
            }
            itemSelectedNum = itemnum;

            // Display Item Info
            Text itemname        = transform.Find("Item Description Panel").Find("Name").GetComponent <Text>();
            Text itemdescription = transform.Find("Item Description Panel").Find("Description").GetComponent <Text>();
            Text itemproperties  = transform.Find("Item Description Panel").Find("Properties").GetComponent <Text>();

            Debug.Assert(itemname != null);
            Debug.Assert(itemdescription != null);
            Debug.Assert(itemproperties != null);

            PixelItem itemToDescribe = pixelInventory.bigItems[itemnum - 1].item;

            itemname.text        = itemToDescribe.name;
            itemdescription.text = itemToDescribe.description;
            if (itemToDescribe.properties == null)
            {
                itemproperties.text = "";
            }
            else
            {
                string propertyString = "Properties: \n";
                for (int i = 0; i < itemToDescribe.properties.Length; ++i)
                {
                    propertyString = propertyString + itemToDescribe.properties[i] + " ";
                }
                itemproperties.text = propertyString;
            }

            Transform slotUIselected = largeItemParent.Find("Stack " + itemnum);
            Image     imgSelected    = slotUIselected.GetComponent <Image>();

            imgSelected.color = new Color(255, 255, 0, 1.0f);
        }