예제 #1
0
파일: Tile.cs 프로젝트: Artyomich113/Snake
 public void Remove(ObjectOnTile objectOnTile)
 {
     if (objectsOnTile.Contains(objectOnTile))
     {
         objectsOnTile.Remove(objectOnTile);
     }
 }
예제 #2
0
 public override void Interract(ObjectOnTile obj)
 {
     if (obj is AEnemyBody)
     {
         //Debug.Log("tail eaten" + PartNumber);
         onBite(PartNumber);
     }
 }
    public override void OnInspectorGUI()
    {
        ObjectOnTile myTileObject = (ObjectOnTile)target;

        if (GUILayout.Button("Remove"))
        {
            myTileObject.Remove();
        }
    }
예제 #4
0
파일: Tile.cs 프로젝트: Artyomich113/Snake
 public void interractOneToMany(ObjectOnTile objectOnTile)      // some object interracts with other objects
 {
     if (objectsOnTile.Count > 0)
     {
         foreach (var ob in objectsOnTile.ToArray())
         {
             objectOnTile.Interract(ob);
         }
     }
 }
예제 #5
0
파일: Tile.cs 프로젝트: Artyomich113/Snake
 public void InterractManyToOne(ObjectOnTile objectOnTile)      // entire tile interract with one object
 {
     if (objectsOnTile.Count > 0)
     {
         foreach (var ob in objectsOnTile.ToArray())
         {
             ob.Interract(objectOnTile);
         }
     }
 }
예제 #6
0
 public override ObjectOnTile AddObject(ObjectOnTile objectOnTile, bool SetPosition = true)
 {
     if (objectOnTile.GetType() == typeof(Wall))
     {
         //Debug.Log("trying build " + objectOnTile.gameObject.name + " on tiletransition");
         return(objectOnTile);
     }
     objectOnTile.tile = this;
     if (!objectsOnTile.Contains(objectOnTile))
     {
         objectsOnTile.Add(objectOnTile);
         objectOnTile.tile = this;
         if (SetPosition)
         {
             objectOnTile.transform.position = position.SetZX(position.z, position.x);
         }
     }
     return(objectOnTile);
 }
예제 #7
0
    public override ObjectOnTile AddObject(ObjectOnTile objectOnTile, bool SetPosition = true)
    {
        objectOnTile.tile = this;

        //if(objectOnTile is EnemyBody)
        //{
        //	Debug.Log(GetHashCode() + " add tile " + objectOnTile.tile);
        //}
        if (!objectsOnTile.Contains(objectOnTile))
        {
            //Debug.Log("Adding " + objectOnTile.name);
            objectsOnTile.Add(objectOnTile);
            if (SetPosition)
            {
                objectOnTile.transform.position = position.SetZX(position.z, position.x);
            }
        }

        return(objectOnTile);
    }
예제 #8
0
    public override void Interract(ObjectOnTile InteractionalObject)
    {
        if (InteractionalObject is Wall)
        {
            OnDie();
            Debug.Log("Death from Wall");
        }

        if (InteractionalObject is EnemyBody)
        {
            OnDie();
            Debug.Log("Death from Enemy");
        }
        if (InteractionalObject is SnakeTail)
        {
            OnDie();
            Debug.Log("Death from SnakeTail");
        }
        if (InteractionalObject is Fruit)
        {
            Eat(2);
        }
    }
예제 #9
0
파일: Wall.cs 프로젝트: Artyomich113/Snake
 public override void Interract(ObjectOnTile obj)
 {
 }
예제 #10
0
파일: Fruit.cs 프로젝트: Artyomich113/Snake
 public override void Interract(ObjectOnTile snakeHead)
 {
     OnDie();
 }
예제 #11
0
    public void buildLevel(Level level, Gate gate = null, Texture2D texture2D = null)
    {
        //Level level = AddLevel ();
        level.root = new Vector3(20f * (levels.Count - 1.0f), 0.0f, 0.0f);
        Texture2D leveltext;

        if (texture2D)
        {
            leveltext = texture2D;
        }
        else
        {
            leveltext = OtherLevels[Random.Range(0, OtherLevels.Length)];
        }

        //	Debug.Log("texture name " + leveltext.name);
        //Debug.Log("building level " + level.GetHashCode());

        for (int x = 0; x < 11; x++)
        {
            for (int y = 0; y < 11; y++)
            {
                Color color = leveltext.GetPixel(x, y);

                Tile tile;

                if (color == Color.black)
                {
                    tile = new TileTransition(level.root, x, y);
                }
                else
                {
                    tile = new TileSimple(level.root, x, y);
                }

                tile.cord  = new Cord(x, y);
                tile.level = level;
                //Debug.Log("tile " + x + " " + y + " assing");
                level.tiles[x, y] = tile;
                if (objectPoolByColor.ContainsKey(color))
                {
                    ObjectOnTile objectOnTile = objectPoolByColor[color].Get() as ObjectOnTile;
                    if (objectOnTile is SnakeHead)
                    {
                        onSnakeSpawn.Invoke(objectOnTile as SnakeHead);
                    }
                    if (objectOnTile is AEnemyBody)
                    {
                        EnemyAI enemyAI = GameManager.instanse.GetEnemyAI();
                        enemyAI.SetObject(objectOnTile as AEnemyBody);
                    }
                    objectOnTile.gameObject.SetActive(true);
                    //Debug.Log("adding " + objectOnTile.GetType());
                    tile.AddObject(objectOnTile);
                }
                else
                {
                    //Debug.Log($"{x}:{y} missing Color " + color);
                }
            }
        }

        //Debug.Log("init gates in level " + level.GetHashCode());
        //Debug.Log("up");
        Gate levelgate = new Gate
        {
            direction = Direction.Up
        };

        //Debug.Log(levelgate.direction);
        level.GateByDirection.Add(levelgate.direction, levelgate);
        for (int i = 0; i < level.tiles.GetLength(1); i++)
        {
            if (level.tiles[level.tiles.GetLength(1) - 1, i] is TileTransition)
            {
                levelgate.tileTransitions.Add(level.tiles[level.tiles.GetLength(1) - 1, i] as TileTransition);
            }
        }
        //Debug.Log(levelgate.GetHashCode() + " Gate" + levelgate.direction + " " + levelgate.tileTransitions.Count);

        //Debug.Log("right");
        levelgate = new Gate
        {
            direction = Direction.Right
        };
        //Debug.Log(levelgate.direction);
        level.GateByDirection.Add(levelgate.direction, levelgate);
        for (int i = 0; i < level.tiles.GetLength(0); i++)
        {
            if (level.tiles[i, level.tiles.GetLength(0) - 1] is TileTransition)
            {
                levelgate.tileTransitions.Add(level.tiles[i, level.tiles.GetLength(0) - 1] as TileTransition);
            }
        }
        //Debug.Log(levelgate.GetHashCode() + " Gate" + levelgate.direction + " " + levelgate.tileTransitions.Count);

        //Debug.Log("down");
        levelgate = new Gate
        {
            direction = Direction.Down
        };
        //Debug.Log(levelgate.direction);
        level.GateByDirection.Add(levelgate.direction, levelgate);
        for (int i = 0; i < level.tiles.GetLength(0); i++)
        {
            if (level.tiles[0, i] is TileTransition)
            {
                levelgate.tileTransitions.Add(level.tiles[0, i] as TileTransition);
            }
        }
        //Debug.Log(levelgate.GetHashCode() + " Gate" + levelgate.direction + " " + levelgate.tileTransitions.Count);

        //Debug.Log("left");
        levelgate = new Gate
        {
            direction = Direction.Left
        };
        //Debug.Log(levelgate.direction);
        level.GateByDirection.Add(levelgate.direction, levelgate);
        for (int i = 0; i < level.tiles.GetLength(1); i++)
        {
            if (level.tiles[i, 0] is TileTransition)
            {
                levelgate.tileTransitions.Add(level.tiles[i, 0] as TileTransition);
            }
        }
        //Debug.Log(levelgate.GetHashCode() + " Gate" + levelgate.direction + " " + levelgate.tileTransitions.Count);

        if (gate != null)
        {
            //Debug.Log((Direction)(((int)gate.direction + 2) % 4));
            gate.LinkGate(level.GateByDirection[(Direction)(((int)gate.direction + 2) % 4)]);
        }
    }
예제 #12
0
파일: Tile.cs 프로젝트: Artyomich113/Snake
 public abstract ObjectOnTile AddObject(ObjectOnTile objectOnTile, bool SetPosition = true);
예제 #13
0
 public abstract void Interract(ObjectOnTile ob);