示例#1
0
    // Start is called before the first frame update
    void Start()
    {
        if (TileCreator.tileCreator == null)
        {
            TileCreator.tileCreator = this;
        }
        else
        {
            Destroy(this.gameObject);
        }

        tiles         = new Dictionary <Vector2, Tile> [tileMap.Length];
        tilePositions = new Dictionary <Vector2, int> [tileMap.Length];
        for (int i = 0; i < tileMap.Length; i++)
        {
            tiles[i]         = new Dictionary <Vector2, Tile>();
            tilePositions[i] = new Dictionary <Vector2, int>();
        }

        pathTiles = new Dictionary <Vector2, Tile> [pathTileMap.Length];
        for (int i = 0; i < pathTileMap.Length; i++)
        {
            pathTiles[i] = new Dictionary <Vector2, Tile>();
        }

        moveRangeTiles = new Dictionary <Vector2, Tile> [moveRangeTileMap.Length];
        for (int i = 0; i < moveRangeTileMap.Length; i++)
        {
            moveRangeTiles[i] = new Dictionary <Vector2, Tile>();
        }

        selectableTilePositions = new List <Vector2>();
    }
        /// <summary>
        /// 将新的剧情图tile写入ROM,并且刷新对应的Nametable
        /// </summary>
        /// <param name="ROMFileName">ROM文件名</param>
        /// <param name="imgFileName">剧情图文件名</param>
        /// <param name="is1P">1P还是2P?</param>
        private static void Patch(string ROMFileName, string imgFileName, bool is1P)
        {
            Byte[] chrData     = Common.GetCHRData(ROMFileName);
            bool   isSucceeded = GenerateTilesAndNameTableFromImage(imgFileName);

            if (isSucceeded)
            {
                // 刷新NameTable
                for (int i = 0; i < 256 / 8 * 240 / 8; ++i)
                {
                    chrData[ADDRESSES[is1P ? 0 : 1] + i] = s_NewNameTable[i];
                }
                // 创建新tileImg
                Bitmap newTileImg = CreateNewTileImage();
                // 刷新PatternTable
                Byte[] patternTable = TileCreator.Bitmap2Data(newTileImg);
                for (int i = 0; i < patternTable.Length; ++i)
                {
                    chrData[PAT_ADDR[is1P ? 0 : 1] + i] = patternTable[i];
                }
            }
            else
            {
                Console.WriteLine("Fatal ERROR! Too many tiles!");
                return;
            }
            Common.PatchROM(ROMFileName, null, chrData);
        }
示例#3
0
        private void CreateMap(Bitmap input, ShaderProgram prog)
        {
            Color[] data = new Color[input.Height * input.Width];
            map = new bool[input.Width, input.Height];
            for (int w = 0; w < input.Width; w++)
            {
                for (int h = 0; h < input.Height; h++)
                {
                    map[w, h] = input.GetPixel(w, h).R >= 128;
                    data[w * input.Height + h] = input.GetPixel(w, h);
                }
            }

            foreach (GameObject gameObject in objects)
            {
                gameObject.Destroy();
            }

            objects = TileCreator.CreateTileMap(TileCreator.CreateObject_Box, data, input.Width, input.Height, 3, 4,
                                                new Vector2(input.Width * 4, input.Height * 4), prog);
            foreach (GameObject gameObject in objects)
            {
                Add(gameObject);
            }

            groundObj?.Destroy();

            Vector3 scale = new Vector3(input.Width * 4, 2, input.Height * 4 + 50) / 2;
            Size    size  = new Size(input.Width, input.Height);

            groundObj = CreateGround(input, scale, size);
            Add(groundObj);
        }
示例#4
0
    static void DrawGizmoFor(TileCreator target, GizmoType gizmoType)
    {
        //沒有設定tileData就不畫
        if (target.tileData == null)
            return;

        float scaleX = target.transform.localScale.x;
        float scaleY = target.transform.localScale.y;

        //draw grid
        Vector3 origin = target.transform.position;
        Vector3 top = origin + scaleY * target.transform.up * target.getHeight();
        Vector3 right = origin + scaleX * target.transform.right * target.getWidth();

        for (int i = 0; i <= target.getWidth(); i++)
        {
            Vector3 offsetFrom = origin + scaleX * target.transform.right * i;
            Vector3 offsetTo = top + scaleX * target.transform.right * i;
            Gizmos.DrawLine(offsetFrom, offsetTo);
        }

        for (int i = 0; i <= target.getHeight(); i++)
        {
            Vector3 offsetFrom = origin + scaleY * target.transform.up * i;
            Vector3 offsetTo = right + scaleY * target.transform.up * i;
            Gizmos.DrawLine(offsetFrom, offsetTo);
        }
    }
示例#5
0
 void Awake()
 {
     tileCreator      = GetComponentInChildren <TileCreator>();
     burger           = GameObject.Find("BurgerObject");
     witch            = GameObject.Find("Player_Isometric_Witch");
     witchPathfinding = witch.GetComponent <Pathfinding>();
 }
示例#6
0
 public PunchableTile(string name, int textureX, int textureY, int durability, ItemStack drop, int amount, TileCreator replacementTile) : base(name, textureX, textureY)
 {
     this.Durability      = durability;
     this.CurrDurability  = durability;
     this.Drop            = drop;
     this.DropAmount      = amount;
     this.ReplacementTile = replacementTile;
 }
示例#7
0
        private static GameObject CreateGoal(Vector3 position)
        {
            GameObject ret = TileCreator.CreateCube(position, Vector3.One, Quaternion.Identity,
                                                    TextureLoader.ColorToTexture(Color.Red), DefaultFilepaths.DefaultLitShader,
                                                    TextureLoader.ColorToTexture(Color.White));

            ret.AddComponent(new MapEndTrigger());
            return(ret);
        }
示例#8
0
    private void CreateTiles(CubeModel model)
    {
        int widthFace;
        int heightFace;

        for (int faceNumber = 0; faceNumber < 6; faceNumber++)
        {
            GameObject face = new GameObject(faceNumber + "");
            face.transform.SetParent(transform);
            face.transform.localRotation = GetFaceRotation((CubeFace)faceNumber);
            face.transform.localPosition = GetFacePosition((CubeFace)faceNumber);
            switch (faceNumber)
            {
            case (int)CubeFace.X:
            case (int)CubeFace.MX:
                widthFace  = model.Z_SIZE;
                heightFace = model.Y_SIZE;
                break;

            case (int)CubeFace.Y:
            case (int)CubeFace.MY:
                widthFace  = model.X_SIZE;
                heightFace = model.Z_SIZE;
                break;

            case (int)CubeFace.Z:
            case (int)CubeFace.MZ:
                widthFace  = model.X_SIZE;
                heightFace = model.Y_SIZE;
                break;

            default:
                throw new UnhandledSwitchCaseException(faceNumber);
            }
            exterior[faceNumber] = new TileController[widthFace, heightFace];
            for (int x = 0; x < widthFace; x++)
            {
                for (int y = 0; y < heightFace; y++)
                {
                    TileData       tileData = model.faces[faceNumber][x, y];
                    TileController tile     = TileCreator.CreateTile(tileData, GetTilePosition((CubeFace)faceNumber, x, y), SizeRatio);
                    tile.transform.SetParent(face.transform, false);
                    //
                    if (GameObjects.GetGameState().LevelEditor)
                    {
                        EditorTile editorTile = tile.Mesh.AddComponent <EditorTile>();
                        editorTile.Init((CubeFace)faceNumber, x, y);
                        editorTile.GridTileClickEvent += GameObjects.GetLevelCreatorController().OnTileClick;
                    }
                    model.objectivesFilled.TryFillTile(tile);
                    //
                    exterior[faceNumber][x, y] = tile;
                }
            }
        }
    }
示例#9
0
    // Use this for initialization
    void Start()
    {
        tc             = this.GetComponent <TileCreator>();
        tileObjectList = new List <TileClass>();

        createInitTile();
        createInitTile();

        move_cool_time = move_cool_tile_max;
        refreshScore();
    }
示例#10
0
    public void AddTile(string name, int food, int minerals, int gold, bool ground)
    {
        TileCreator newObject = new TileCreator(name, food, minerals, gold, ground, tiles[tiles.Length - 1].id);

        AssetDatabase.MoveAsset("Assets/Resources/Sprites/NewTiles/" + name + ".png", "Assets/Resources/Sprites/TileSprites/" + name + ".png");
        string objjson = JsonUtility.ToJson(newObject);

        AddObjectToJson(json, objjson);
        ObjectsFromJson();
        WriteJson(path, aPath);
    }
示例#11
0
        protected virtual void Initialize(int level, Point?startTile)
        {
            CurrentLevelIndex = level;
            CurrentMap        = Data.Maps[level];
            TileCreator.Reset();
            ItemCreator.Reset();
            InitializeMapTextures();
            TileInitializers = new List <TileInitializer>();

            start         = startTile ?? new Point(Data.StartPosition.Position.X, Data.StartPosition.Position.Y);
            TilePositions = new Dictionary <Point, Tile>();
        }
示例#12
0
 private void Awake()
 {
     if (Instance == null)
     {
         Instance = this;
     }
     else
     {
         Debug.LogError("Too many Instances!");
         Destroy(gameObject);
     }
 }
 protected void CreateTiles(TileGrid grid, TileType[,] tiles)
 {
     for (int x = 0; x < grid.GridSize.x; x++)
     {
         for (int y = 0; y < grid.GridSize.y; y++)
         {
             var tilePrefab =
                 tiles[x, y] == TileType.land1 ? landPrefab1 :
                 tiles[x, y] == TileType.land2 ? landPrefab2 :
                 tiles[x, y] == TileType.water ? waterPrefab :
                 null;
             TileCreator.CreateTile(grid, x, y, () => tilePrefab);
         }
     }
 }
示例#14
0
        private GameObject CreateGround(Bitmap mapLayout, Vector3 scale, Size size)
        {
            Texture tex  = TextureLoader.BitmapToTexture(new Bitmap(mapLayout, 512, 512), "GroundTexture");
            Texture texS = TextureLoader.BitmapToTexture(new Bitmap(mapLayout, 512, 512), "GroundSpecular");


            TextureGenerator.CreateGroundTexture(tex, texS);
            GameObject ret = TileCreator.CreateCube(Vector3.Zero, scale, Quaternion.Identity,
                                                    tex, DefaultFilepaths.DefaultLitShader, new Vector2(size.Height, size.Width), Vector2.Zero, texS);

            ret.Name = "Ground";
            Collider groundColl = ret.GetComponent <Collider>();

            groundColl.PhysicsCollider.Material = new Material(10, 10, 0);
            return(ret);
        }
示例#15
0
        public void CreateBoard(int levelId)
        {
            string           levelPath = levelId == Exporter.EditorLevelNum ? Exporter.EditorLevelPath : $"Text/level{levelId.ToString()}";
            TextAsset        levelJson = Resources.Load <TextAsset>(levelPath);
            LevelData        levelData = JsonUtility.FromJson <LevelData>(levelJson.text);
            List <LevelInfo> levelInfo = levelData.data;

            _boardInfo.GetBoardSpecs(levelInfo, out int tilesCount);
            _boardTiles    = new Tile.Tile[(int)BoardSize.x, (int)BoardSize.y, (int)BoardSize.z];
            _floors        = new GameObject[(int)BoardSize.z];
            _middleTilePos = new Vector2((int)Math.Floor(BoardSize.x / 2), (int)Math.Floor(BoardSize.y / 2));

            _tileCreator            = GetComponent <TileCreator>();
            _tileCreator.BoardSize  = BoardSize;
            _tileCreator.BoardTiles = BoardTiles;
            _tileCreator.Floors     = _floors;

            for (int i = 0; i < levelInfo.Count; i++)
            {
                int f = levelInfo[i].floor;
                List <LevelTiles> levelTiles = levelInfo[i].rows;
                for (int j = 0; j < levelTiles.Count; j++)
                {
                    List <int> tiles = levelTiles[j].tiles;
                    for (int k = 0; k < tiles.Count; k++)
                    {
                        bool isMiddleTile          = IsMiddleTile(k, j, f);
                        TileCreator.TileTypes type = (TileCreator.TileTypes)tiles[k];
                        if (type == TileCreator.TileTypes.Empty)
                        {
                            _boardTiles[k, j, f] = null;
                        }
                        else
                        {
                            _boardTiles[k, j, f] = _tileCreator.CreateTile(new Vector3(k, j, f), isMiddleTile, type);
                        }

                        SelectMiddleTile(isMiddleTile, k, j, f);
                    }
                }
            }

            _boardImages = new BoardImages(tilesCount);
            _boardImages.AddImagesToTiles(_floors, levelData.fillMethod);

            GetComponent <BoardMatcher>().GetAvailableMoves();
        }
示例#16
0
        /// <summary>
        ///  Asynchronously gets histogram data from whole file
        /// </summary>
        /// <param name="tiles">Image tiles</param>
        /// <returns>Histogram data</returns>
        public async Task<long[]> GetHistogramAsync(TileCreator.Tile[] tiles)
        {
            return await Task.Factory.StartNew(() =>
                {
                    Array.Clear(histogram, 0, histogram.Length);
                    foreach (var tile in tiles)
                    {
                        var tileBytes = tile.ReadData();

                        for (int i = 0; i < tileBytes.Length; i++)
                        {
                            histogram[tileBytes[i]]++;
                        }

                    }
                    return histogram;
                });
        }
示例#17
0
    // Start is called before the first frame update
    void Start()
    {
        if (TileCreator.tileCreator == null)
        {
            TileCreator.tileCreator = this;
        }
        else
        {
            Destroy(this.gameObject);
        }

        tiles         = new Dictionary <Vector2, Tile> [tileMap.Length];
        tilePositions = new Dictionary <Vector2, int> [tileMap.Length];
        for (int i = 0; i < tileMap.Length; i++)
        {
            tiles[i]         = new Dictionary <Vector2, Tile>();
            tilePositions[i] = new Dictionary <Vector2, int>();
        }
    }
示例#18
0
    public override void SetData(BoardData data)
    {
        boardData = data;
        board     = new BoardPosition[boardData.X_SIZE, boardData.Y_SIZE];
        for (int x = 0; x < boardData.X_SIZE; x++)
        {
            for (int y = 0; y < boardData.Y_SIZE; y++)
            {
                Vector3 position = GetWorldPosition(x, y);

                TileController tile = TileCreator.CreateTile(boardData.tiles[x, y], position, SizeRatio);
                tile.transform.SetParent(transform, false);

                IBallController ball = BallCreator.GetBall(boardData.balls[x, y], SizeRatio);
                ball.Init(x, y, this);

                board[x, y] = new BoardPosition(tile, ball);
            }
        }
    }
示例#19
0
        private void ProcessMapData()
        {
            var offset = new Point(CurrentMap.OffsetX, CurrentMap.OffsetY);

            for (int y = 0; y < CurrentMap.Height; y++)
            {
                for (int x = 0; x < CurrentMap.Width; x++)
                {
                    var pos  = new Point(x, y) + offset;
                    var tile = TileCreator.GetTile(new TileInfo <TileData>
                    {
                        Position = pos,
                        Tile     = CurrentMap.GetTileData(pos)
                    });

                    if (tile != null)
                    {
                        TilePositions.Add(pos, tile);
                    }
                }
            }
        }
示例#20
0
        /// <summary>
        /// 给ROM打补丁
        /// </summary>
        /// <param name="fileName">ROM文件名</param>
        private static void Patch(string fileName)
        {
            Byte[] prgData = Common.GetPRGData(fileName);
            Byte[] chrData = Common.GetCHRData(fileName);

            foreach (TranslationInfo info in s_TranslationInfos)
            {
                int addrLo = TableOrganizer.GetAbsoluteAddress(info.addrLo);
                int addrHi = TableOrganizer.GetAbsoluteAddress(info.addrHi);
                int addr   = TableOrganizer.GetAbsoluteAddress(info.addr);
                prgData[addrLo] = (Byte)((info.addr >> 0) & 0xFF);
                prgData[addrHi] = (Byte)((info.addr >> 8) & 0xFF);
                int offset = 0;
                foreach (TextBlockInfo ti in info.textBlocks)
                {
                    for (int i = 0; i < ti.data.Count; ++i)
                    {
                        // 因为ASCII占据了最刚开始的若干个tile,所以这里要对汉字的idx进行偏移
                        int offs = 0;
                        if (ti.data[i] >= 0x60 && ti.data[i] <= 0x7F)
                        {
                            offs = (int)Math.Ceiling(s_DicUniqueASCII[ti.bankNo].Length / 4.0);
                        }
                        prgData[addr + offset + i] = (Byte)(ti.data[i] + offs);
                    }
                    offset += ti.data.Count;
                }
            }
            foreach (KeyValuePair <int, string> kv in s_DicUniqueChars)
            {
                int    bankNo      = kv.Key;
                string uniqueChars = kv.Value;
                string uniqueASCII = s_DicUniqueASCII[bankNo];
                TileCreator.GeneratePatternTable(ref chrData, bankNo, uniqueChars, uniqueASCII);
            }

            Common.PatchROM(fileName, prgData, chrData);
        }
示例#21
0
        public static void Start(string ROMFileName)
        {
            Byte[] prgData = Common.GetPRGData(ROMFileName);
            Byte[] chrData = Common.GetCHRData(ROMFileName);

            int absoluteAddr = TableOrganizer.GetAbsoluteAddress(startAddr, hataageBank);

            int curText = 0;
            int offset  = 0;

            while (curText < cnTexts.Length)
            {
                prgData[absoluteAddr + offset] = opCodes[curText];
                offset++;

                char[] chars = cnTexts[curText].ToCharArray();
                for (int i = 0; i < chars.Length; ++i)
                {
                    prgData[absoluteAddr + offset] = findChar(chars[i]);
                    offset++;
                }

                prgData[absoluteAddr + offset] = 0xCC;
                offset++;
                prgData[absoluteAddr + offset] = 0xFF;
                offset++;

                curText++;
            }

            Byte[] data = TileCreator.CreateGiantFont(cnChars);
            for (int i = 0; i < data.Length; ++i)
            {
                chrData[0x10000 + i] = data[i];
            }

            Common.PatchROM(ROMFileName, prgData, chrData);
        }
 private void Awake()
 {
     TC = this;
 }
    void Update()
    {
        // Look at which tile the player is on
        int  i      = 0;
        bool moving = true;

        for (; i < tilePool.Length; i++)
        {
            if (tilePool[i] != null && InRegion(tilePool[i]))
            {
                moving = false;
                break;
            }
        }

        // Check if the tile is the center tile (tilePool index 4)
        if (i != 4)
        {
            // Checks to make sure the player didn't just exit the for-loop because the player was moving
            if (!moving)
            {
                x = tilePool[i].transform.position.x;
                y = tilePool[i].transform.position.z;

                ULVector = new Vector3(x - size, 0, y + size);
                UVector  = new Vector3(x, 0, y + size);
                URVector = new Vector3(x + size, 0, y + size);
                LVector  = new Vector3(x - size, 0, y);
                RVector  = new Vector3(x + size, 0, y);
                DLVector = new Vector3(x - size, 0, y - size);
                DVector  = new Vector3(x, 0, y - size);
                DRVector = new Vector3(x + size, 0, y - size);

                // The player is not in the center region
                // Make new region the center and move tiles around that
                GameObject newCenter = tilePool[i];
                GameObject pastUL    = tilePool[0];
                GameObject pastU     = tilePool[1];
                GameObject pastUR    = tilePool[2];
                GameObject pastL     = tilePool[3];
                GameObject pastC     = tilePool[4];
                GameObject pastR     = tilePool[5];
                GameObject pastDL    = tilePool[6];
                GameObject pastD     = tilePool[7];
                GameObject pastDR    = tilePool[8];

                // New C tile
                tilePool[4] = newCenter;
                TileCreator[] toChange;

                switch (i)
                {
                // Player on UL tile
                case 0:
                    toChange = new TileCreator[] { pastDR.GetComponent <TileCreator>(),
                                                   pastR.GetComponent <TileCreator>(),
                                                   pastUR.GetComponent <TileCreator>(),
                                                   pastD.GetComponent <TileCreator>(),
                                                   pastDL.GetComponent <TileCreator>() };

                    // Remove NPCs on tiles to be moved.
                    foreach (TileCreator tile in toChange)
                    {
                        tile.DeactivateNPCs();
                    }

                    // New UL tile
                    tilePool[0] = pastDR;
                    // New U tile
                    tilePool[1] = pastR;
                    // New UR tile same
                    // pastUR
                    // New L tile
                    tilePool[3] = pastD;
                    // New DL tile same
                    // pastDL

                    // Move to the correct location
                    tilePool[0].transform.position = ULVector;
                    tilePool[1].transform.position = UVector;
                    tilePool[2].transform.position = URVector;
                    tilePool[3].transform.position = LVector;
                    tilePool[6].transform.position = DLVector;

                    // Add image texture to blank ground.
                    foreach (TileCreator tile in toChange)
                    {
                        StartCoroutine(tile.SetTexture());
                    }

                    // Place new NPCs on moved tiles.
                    foreach (TileCreator tile in toChange)
                    {
                        tile.ActivateNPCs();
                    }

                    //Rename tiles
                    // New R tile
                    tilePool[5] = pastU;
                    // New D tile
                    tilePool[7] = pastL;
                    // New DR tile
                    tilePool[8] = pastC;
                    break;

                // Player on U tile
                case 1:
                    toChange = new TileCreator[] { pastDL.GetComponent <TileCreator>(),
                                                   pastD.GetComponent <TileCreator>(),
                                                   pastDR.GetComponent <TileCreator>() };

                    // Remove NPCs on tiles to be moved.
                    foreach (TileCreator tile in toChange)
                    {
                        tile.DeactivateNPCs();
                    }

                    // New UL tile
                    tilePool[0] = pastDL;
                    // New U tile
                    tilePool[1] = pastD;
                    // New UR tile
                    tilePool[2] = pastDR;

                    // Move to the correct location
                    tilePool[0].transform.position = ULVector;
                    tilePool[1].transform.position = UVector;
                    tilePool[2].transform.position = URVector;

                    // Add image texture to blank ground.
                    foreach (TileCreator tile in toChange)
                    {
                        StartCoroutine(tile.SetTexture());
                    }

                    // Place new NPCs on moved tiles.
                    foreach (TileCreator tile in toChange)
                    {
                        tile.ActivateNPCs();
                    }

                    //Rename tiles
                    // New L tile
                    tilePool[3] = pastUL;
                    // New R tile
                    tilePool[5] = pastUR;
                    // New DL tile
                    tilePool[6] = pastL;
                    // New D tile
                    tilePool[7] = pastC;
                    // New DR tile
                    tilePool[8] = pastR;
                    break;

                // Player on UR tile
                case 2:
                    toChange = new TileCreator[] { pastUL.GetComponent <TileCreator>(),
                                                   pastL.GetComponent <TileCreator>(),
                                                   pastDL.GetComponent <TileCreator>(),
                                                   pastD.GetComponent <TileCreator>(),
                                                   pastDR.GetComponent <TileCreator>() };

                    // Remove NPCs on tiles to be moved.
                    foreach (TileCreator tile in toChange)
                    {
                        tile.DeactivateNPCs();
                    }

                    // New UL tile same
                    // pastUL
                    // New U tile
                    tilePool[1] = pastL;
                    // New UR tile
                    tilePool[2] = pastDL;
                    // New R tile
                    tilePool[5] = pastD;
                    // New DR tile same
                    // pastDR

                    // Move to the correct location
                    tilePool[0].transform.position = ULVector;
                    tilePool[1].transform.position = UVector;
                    tilePool[2].transform.position = URVector;
                    tilePool[5].transform.position = RVector;
                    tilePool[8].transform.position = DRVector;

                    // Add image texture to blank ground.
                    foreach (TileCreator tile in toChange)
                    {
                        StartCoroutine(tile.SetTexture());
                    }

                    // Place new NPCs on moved tiles.
                    foreach (TileCreator tile in toChange)
                    {
                        tile.ActivateNPCs();
                    }

                    //Rename tiles
                    // New L tile
                    tilePool[3] = pastU;
                    // New DL tile
                    tilePool[6] = pastC;
                    // New D tile
                    tilePool[7] = pastR;
                    break;

                // Player on L tile
                case 3:
                    toChange = new TileCreator[] { pastUR.GetComponent <TileCreator>(),
                                                   pastR.GetComponent <TileCreator>(),
                                                   pastDR.GetComponent <TileCreator>() };

                    // Remove NPCs on tiles to be moved.
                    foreach (TileCreator tile in toChange)
                    {
                        tile.DeactivateNPCs();
                    }

                    // New UL tile
                    tilePool[0] = pastUR;
                    // New L tile
                    tilePool[3] = pastR;
                    // New DL tile
                    tilePool[6] = pastDR;

                    // Move to the correct location
                    tilePool[0].transform.position = ULVector;
                    tilePool[3].transform.position = LVector;
                    tilePool[6].transform.position = DLVector;

                    // Add image texture to blank ground.
                    foreach (TileCreator tile in toChange)
                    {
                        StartCoroutine(tile.SetTexture());
                    }

                    // Place new NPCs on moved tiles.
                    foreach (TileCreator tile in toChange)
                    {
                        tile.ActivateNPCs();
                    }

                    //Rename tiles
                    // New U tile
                    tilePool[1] = pastUL;
                    // New UR tile
                    tilePool[2] = pastU;
                    // New R tile
                    tilePool[5] = pastC;
                    // New D tile
                    tilePool[7] = pastDL;
                    // New DR tile
                    tilePool[8] = pastD;
                    break;

                // Player on R tile
                case 5:
                    toChange = new TileCreator[] { pastUL.GetComponent <TileCreator>(),
                                                   pastL.GetComponent <TileCreator>(),
                                                   pastDL.GetComponent <TileCreator>() };

                    // Remove NPCs on tiles to be moved.
                    foreach (TileCreator tile in toChange)
                    {
                        tile.DeactivateNPCs();
                    }

                    // New UR tile
                    tilePool[2] = pastUL;
                    // New R tile
                    tilePool[5] = pastL;
                    // New DR tile
                    tilePool[8] = pastDL;

                    // Move to the correct location
                    tilePool[2].transform.position = URVector;
                    tilePool[5].transform.position = RVector;
                    tilePool[8].transform.position = DRVector;

                    // Add image texture to blank ground.
                    foreach (TileCreator tile in toChange)
                    {
                        StartCoroutine(tile.SetTexture());
                    }

                    // Place new NPCs on moved tiles.
                    foreach (TileCreator tile in toChange)
                    {
                        tile.ActivateNPCs();
                    }

                    //Rename tiles
                    // New UL tile
                    tilePool[0] = pastU;
                    // New U tile
                    tilePool[1] = pastUR;
                    // New L tile
                    tilePool[3] = pastC;
                    // New DL tile
                    tilePool[6] = pastD;
                    // New D tile
                    tilePool[7] = pastDR;
                    break;

                // Player on DL tile
                case 6:
                    toChange = new TileCreator[] { pastUL.GetComponent <TileCreator>(),
                                                   pastU.GetComponent <TileCreator>(),
                                                   pastUR.GetComponent <TileCreator>(),
                                                   pastR.GetComponent <TileCreator>(),
                                                   pastDR.GetComponent <TileCreator>() };

                    // Remove NPCs on tiles to be moved.
                    foreach (TileCreator tile in toChange)
                    {
                        tile.DeactivateNPCs();
                    }

                    // New UL tile
                    // past UL
                    // New L tile
                    tilePool[3] = pastU;
                    // New DL tile same
                    tilePool[6] = pastUR;
                    // New D tile
                    tilePool[7] = pastR;
                    // New DR tile same
                    // pastDR

                    // Move to the correct location
                    tilePool[0].transform.position = ULVector;
                    tilePool[3].transform.position = LVector;
                    tilePool[6].transform.position = DLVector;
                    tilePool[7].transform.position = DVector;
                    tilePool[8].transform.position = DRVector;

                    // Add image texture to blank ground.
                    foreach (TileCreator tile in toChange)
                    {
                        StartCoroutine(tile.SetTexture());
                    }

                    // Place new NPCs on moved tiles.
                    foreach (TileCreator tile in toChange)
                    {
                        tile.ActivateNPCs();
                    }

                    //Rename tiles
                    // New U tile
                    tilePool[1] = pastL;
                    // New UR tile
                    tilePool[2] = pastC;
                    // New R tile
                    tilePool[5] = pastD;
                    break;

                // Player on D tile
                case 7:
                    toChange = new TileCreator[] { pastUL.GetComponent <TileCreator>(),
                                                   pastU.GetComponent <TileCreator>(),
                                                   pastUR.GetComponent <TileCreator>() };

                    // Remove NPCs on tiles to be moved.
                    foreach (TileCreator tile in toChange)
                    {
                        tile.DeactivateNPCs();
                    }

                    // New DL tile
                    tilePool[6] = pastUL;
                    // New D tile
                    tilePool[7] = pastU;
                    // New DR tile
                    tilePool[8] = pastUR;

                    // Move to the correct location
                    tilePool[6].transform.position = DLVector;
                    tilePool[7].transform.position = DVector;
                    tilePool[8].transform.position = DRVector;

                    // Add image texture to blank ground.
                    foreach (TileCreator tile in toChange)
                    {
                        StartCoroutine(tile.SetTexture());
                    }

                    // Place new NPCs on moved tiles.
                    foreach (TileCreator tile in toChange)
                    {
                        tile.ActivateNPCs();
                    }

                    //Rename tiles
                    // New U tile
                    tilePool[0] = pastL;
                    // New UR tile
                    tilePool[1] = pastC;
                    // New L tile
                    tilePool[2] = pastR;
                    // New R tile
                    tilePool[3] = pastDL;
                    // New DL tile
                    tilePool[5] = pastDR;
                    break;

                // Player on DR tile
                case 8:
                    toChange = new TileCreator[] { pastU.GetComponent <TileCreator>(),
                                                   pastUL.GetComponent <TileCreator>(),
                                                   pastL.GetComponent <TileCreator>(),
                                                   pastUR.GetComponent <TileCreator>(),
                                                   pastDL.GetComponent <TileCreator>() };

                    // Remove NPCs on tiles to be moved.
                    foreach (TileCreator tile in toChange)
                    {
                        tile.DeactivateNPCs();
                    }

                    // New UR tile
                    // pastUR
                    // New R tile
                    tilePool[5] = pastU;
                    // New DR tile
                    tilePool[8] = pastUL;
                    // New D tile
                    tilePool[7] = pastL;
                    // New DL tile same
                    // pastDL

                    // Move to the correct location
                    tilePool[2].transform.position = URVector;
                    tilePool[5].transform.position = RVector;
                    tilePool[6].transform.position = DLVector;
                    tilePool[7].transform.position = DVector;
                    tilePool[8].transform.position = DRVector;

                    // Add image texture to blank ground.
                    foreach (TileCreator tile in toChange)
                    {
                        StartCoroutine(tile.SetTexture());
                    }

                    // Place new NPCs on moved tiles.
                    foreach (TileCreator tile in toChange)
                    {
                        tile.ActivateNPCs();
                    }

                    //Rename tiles
                    // New DL tile
                    tilePool[0] = pastC;
                    // New D tile
                    tilePool[1] = pastR;
                    // New DR tile
                    tilePool[3] = pastD;
                    break;

                default:
                    break;
                }
            }
        }
    }
示例#24
0
 void Start()
 {
     Tc = GetComponent <TileCreator>();
     y  = 30;
 }
示例#25
0
 private void Awake()
 {
     instance = this;
 }
示例#26
0
 void OnEnable()
 {
     tileCreator = (TileCreator)target;
 }
示例#27
0
 void OnEnable()
 {
     tileCreator = (TileCreator)target;
 }