public void Remove(ObjectOnTile objectOnTile) { if (objectsOnTile.Contains(objectOnTile)) { objectsOnTile.Remove(objectOnTile); } }
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(); } }
public void interractOneToMany(ObjectOnTile objectOnTile) // some object interracts with other objects { if (objectsOnTile.Count > 0) { foreach (var ob in objectsOnTile.ToArray()) { objectOnTile.Interract(ob); } } }
public void InterractManyToOne(ObjectOnTile objectOnTile) // entire tile interract with one object { if (objectsOnTile.Count > 0) { foreach (var ob in objectsOnTile.ToArray()) { ob.Interract(objectOnTile); } } }
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); }
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); }
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); } }
public override void Interract(ObjectOnTile obj) { }
public override void Interract(ObjectOnTile snakeHead) { OnDie(); }
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)]); } }
public abstract ObjectOnTile AddObject(ObjectOnTile objectOnTile, bool SetPosition = true);
public abstract void Interract(ObjectOnTile ob);