Beispiel #1
0
    Run InteractionWithTile()
    {
        int  tileKey = GetCurrentTileKey();
        Tile tile    = TileManager.GetExistTile(tileKey);

        Tile.TileType tileType = tile.tileType;

        var            returnRun      = Run.WaitSeconds(0);
        MultiAudioClip multiAudioClip = characterInstance.GetComponent <MultiAudioClip>();

        if (moveState == MoveState.CheckingSaveTile)
        {
            if (tileType == Tile.TileType.Save)
            {
                characterInstance.CheckSaveTile(characterMover.GetCurrentTileKey());
                multiAudioClip.audioSources[3].Play();
            }
        }
        else
        {
            if (tileType == Tile.TileType.Buff)
            {
                NetworkManager.Buff(NetworkManager.Get().Id, tile.transform.position);
            }
            else if (tileType == Tile.TileType.Item)
            {
                if (characterInstance.GetNumberOfItems() < Character.MaxInventorySize)
                {
                    multiAudioClip.audioSources[1].Play();
                    Character.Item newItem = SelectRandomItem();
                    returnRun = returnRun.Then(() => {
                        return(EffectManager.Get().ShowItemAcquisitionEffect(tile.transform.position, newItem));
                    })
                                .ExecuteWhenDone(() => {
                        characterInstance.AddItem(newItem);
                        Debug.Log("Get Item!");
                    });
                }
                else
                {
                    Debug.Log("Inventory is full...");
                }
            }
            else if (tileType == Tile.TileType.Jail)
            {
                returnRun = returnRun.Then(() => {
                    return(EffectManager.Get().ShowJailEffect(tile.transform.position));
                })
                            .ExecuteWhenDone(() => {
                    characterInstance.InJail();
                });
                multiAudioClip.audioSources[2].Play();
            }
            else if (tileType == Tile.TileType.Warp)
            {
                //FIXME : Add warp code!
                //warp tiles are NOT used.
                Debug.Log("This Tile is Portal!");
            }
            else
            {
//                Debug.Log("Default Tile.");
            }
        }

        return(returnRun);
    }