//////////////// private void OnPlace() { var mymod = OnARailMod.Instance; Point16 exit_pos = TrainTunnelTileEntity.AwaitingExitTunnelPosition; if (exit_pos == default(Point16)) { throw new HamstarException("No exit tunnel position available for tunnel " + this.ID + " at " + this.Position); } var exit_ent = TrainTunnelTileEntity.CreateTunnelEndpoint(this, exit_pos.X, exit_pos.Y); if (exit_ent == null) { throw new HamstarException("Could not create exit tunnel (at " + exit_pos + ") for tunnel " + this.ID + " at " + this.Position); } if (mymod.Config.DebugModeInfo) { LogHelpers.Log("OnARail.Tiles.TrainTunnelTileEntity.OnNetPlace - Creating train tunnel from " + this.Position + " to " + exit_pos + "..."); } }
//////////////// private static TrainTunnelTileEntity CreateTunnelEndpoint(TrainTunnelTileEntity start_tunnel_ent, int end_tile_x, int end_tile_y) { var mymod = OnARailMod.Instance; if (!TileHelpers.PlaceTile(end_tile_x + 2, end_tile_y + 2, mymod.TileType <TrainTunnelTile>())) { start_tunnel_ent.IsInitialized = true; // This destroys the tunnel Main.NewText("Error placing tunnel exit.", Color.Red); return(null); } var base_ent = mymod.GetTileEntity <TrainTunnelTileEntity>(); if (base_ent == null) { throw new HamstarException("Could not find base tile entity."); } int id = base_ent.Place(end_tile_x, end_tile_y); var exit_tunnel_ent = (TrainTunnelTileEntity)ModTileEntity.ByID[id]; if (exit_tunnel_ent == null) { throw new HamstarException("Cannot create tunnel exit - No train tunnel entity associated with id " + id + " at x:" + end_tile_x + ", y:" + end_tile_y); } start_tunnel_ent.ExitTileX = end_tile_x; start_tunnel_ent.ExitTileY = end_tile_y; exit_tunnel_ent.ExitTileX = start_tunnel_ent.Position.X; exit_tunnel_ent.ExitTileY = start_tunnel_ent.Position.Y; start_tunnel_ent.IsInitialized = true; exit_tunnel_ent.IsInitialized = true; return(exit_tunnel_ent); }