public override void Add_Tile(Vector3Int i_pos, TileBase i_tile) { Debug.Log("Tile added to energy"); bool is_valid = false; if (tm == null) { tm = GameObject.FindGameObjectWithTag("TileManager").GetComponent <Tile_Manager>(); } if (Check_Tiletype(system_tiles["Transmitters"], i_tile)) { energy_dictionary.Add(i_pos, Create_Energy_Tile(i_tile)); is_valid = true; } else if (Check_Tiletype(system_tiles["Generators"], i_tile)) { Debug.Log("Generator Added"); generator_dictionary.Add(i_pos, 1); is_valid = true; } else if (Check_Tiletype(system_tiles["Receptors"], i_tile)) { Energy_Receptor input_receptor; if (tm.Check_Layer_Name(i_tile, "Wheel")) { input_receptor = new Ship_Wheel(i_pos, tm.Grab_Ship_Layer(i_tile)); } else { if (is_ship_mode) { input_receptor = new Door(i_pos, i_tile, tm.Grab_Ship_Layer(i_tile)); } else { input_receptor = new Door(i_pos, i_tile, tm.Grab_Layer(i_tile)); } } receptor_dictionary.Add(i_pos, input_receptor); is_valid = true; } if (is_valid) { base.Add_Tile(i_pos, i_tile); } else { Debug.LogWarning("Invalid tile addition at:" + i_pos + " with " + i_tile); } }
private void Spread_Neighbour(Vector3Int i_pos) { TileBase liquid_tile; Tilemap liquid_tilemap; //spawner_tile = system_tiles["Spawner"][0]; liquid_tile = liquid_dictionary[i_pos].tile; if (is_ship_mode) { //spawner_tile = system_tiles["Spawner"][0]; liquid_tilemap = tm.Grab_Ship_Layer(liquid_tile); } else { liquid_tilemap = tm.Grab_Layer(liquid_tile); } Vector3Int up_neighbour = i_pos + Vector3Int.up; if (Capacity_Compare(i_pos, up_neighbour)) { if (!liquid_dictionary.ContainsKey(up_neighbour)) { Drain(i_pos, up_neighbour); if (is_ship_mode) { tm.Ship_Add_Tile(up_neighbour, liquid_tile); } else { tm.Add_Tile(up_neighbour, liquid_tile); } } else { Equalize(i_pos, up_neighbour); } } Vector3Int down_neighbour = i_pos + Vector3Int.down; if (Capacity_Compare(i_pos, down_neighbour)) { if (!liquid_dictionary.ContainsKey(down_neighbour)) { Drain(i_pos, down_neighbour); if (is_ship_mode) { tm.Ship_Add_Tile(down_neighbour, liquid_tile); } else { tm.Add_Tile(down_neighbour, liquid_tile); } } else { Equalize(i_pos, down_neighbour); } } Vector3Int left_neighbour = i_pos + Vector3Int.left; if (Capacity_Compare(i_pos, left_neighbour)) { if (!liquid_dictionary.ContainsKey(left_neighbour)) { Drain(i_pos, left_neighbour); if (is_ship_mode) { tm.Ship_Add_Tile(left_neighbour, liquid_tile); } else { tm.Add_Tile(left_neighbour, liquid_tile); } } else { Equalize(i_pos, left_neighbour); } } Vector3Int right_neighbour = i_pos + Vector3Int.right; if (Capacity_Compare(i_pos, right_neighbour)) { if (!liquid_dictionary.ContainsKey(right_neighbour)) { Drain(i_pos, right_neighbour); if (is_ship_mode) { tm.Ship_Add_Tile(right_neighbour, liquid_tile); } else { tm.Add_Tile(right_neighbour, liquid_tile); } } else { Equalize(i_pos, right_neighbour); } } }
private void Convert_Neighbour(Vector3Int i_pos) { bool has_spread = false; TileBase spawner_tile; Tilemap spawner_tilemap; //spawner_tile = system_tiles["Spawner"][0]; spawner_tile = swarm_dictionary[i_pos].tile; if (is_ship_mode) { //spawner_tile = system_tiles["Spawner"][0]; spawner_tilemap = tm.Grab_Ship_Layer(spawner_tile); } else { spawner_tilemap = tm.Grab_Layer(spawner_tile); } Vector3Int up_neighbour = i_pos + Vector3Int.up; if ((spawner_tilemap.GetTile(up_neighbour) != null) && (Count_Swarm_Neighbours(up_neighbour) < 2)) { if (!swarm_dictionary.ContainsKey(up_neighbour)) { if (is_ship_mode) { tm.Ship_Add_Tile(up_neighbour, spawner_tile); } else { tm.Add_Tile(up_neighbour, spawner_tile); } has_spread = true; } } Vector3Int down_neighbour = i_pos + Vector3Int.down; if (((spawner_tilemap.GetTile(down_neighbour) != null) && (!has_spread)) && (Count_Swarm_Neighbours(down_neighbour) < 2)) { if (!swarm_dictionary.ContainsKey(down_neighbour)) { if (is_ship_mode) { tm.Ship_Add_Tile(down_neighbour, spawner_tile); } else { tm.Add_Tile(down_neighbour, spawner_tile); } has_spread = true; } } Vector3Int left_neighbour = i_pos + Vector3Int.left; if (((spawner_tilemap.GetTile(left_neighbour) != null) && (!has_spread)) && (Count_Swarm_Neighbours(left_neighbour) < 2)) { if (!swarm_dictionary.ContainsKey(left_neighbour)) { if (is_ship_mode) { tm.Ship_Add_Tile(left_neighbour, spawner_tile); } else { tm.Add_Tile(left_neighbour, spawner_tile); } has_spread = true; } } Vector3Int right_neighbour = i_pos + Vector3Int.right; if (((spawner_tilemap.GetTile(right_neighbour) != null) && (!has_spread)) && (Count_Swarm_Neighbours(right_neighbour) < 2)) { if (!swarm_dictionary.ContainsKey(right_neighbour)) { if (is_ship_mode) { tm.Ship_Add_Tile(right_neighbour, spawner_tile); } else { tm.Add_Tile(right_neighbour, spawner_tile); } has_spread = true; } } }