예제 #1
0
        ////////////////

        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);
        }