# Maintainer: jc_gargma <jc_gargma@iserlohn-fortress.net>
# Contributor: aqua <aqua@iserlohn-fortress.net>
# Maintainer (Arch): Kyle Keen <keenerd@gmail.com>

# # I maintain this because:
# Arch version is not BN
# BN version has done enough changes I dislike to force me to fork
# Arch version has non-functional desktop file
# Arch version lacks additional optimization and hardening flags
# Arch version segfaults due to -Wp,-D_GLIBCXX_ASSERTIONS

pkgbase=cataclysm-bn
pkgname=(cataclysm-bn cataclysm-bn-tiles)
pkgname=cataclysm-bn
#_pkgname=Cataclysm-BN-cbn
#_pkgname=Cataclysm-BN
#pkgver=0.6.0
pkgver=0.6.3
#pkgver=202310040030
#_pkgver=2023-10-04-0030
pkgrel=2
pkgdesc="A post-apocalyptic roguelike."
#url="http://cataclysmrl.blogspot.com/"
#url="http://www.cataclysm.glyphgryph.com/"
#url="http://en.cataclysmdda.com/"
url="https://github.com/cataclysmbnteam/Cataclysm-BN"
arch=('x86_64' 'aarch64')
license=("CCPL:by-sa")
options=('lto')
depends=(
  'gettext'
  'hicolor-icon-theme'
  'ncurses'
)
makedepends=(
  'astyle'
  'freetype2'
  'lzip'
  'sdl2_image'
  'sdl2_mixer'
  'sdl2_ttf'
)
#source=("$pkgname-$_pkgver.tar.gz::https://github.com/cataclysmbnteam/Cataclysm-BN/archive/refs/tags/cbn-experimental-$_pkgver.tar.gz"
#source=("$pkgname-$pkgver.tar.gz::https://github.com/cataclysmbnteam/Cataclysm-BN/archive/refs/tags/cbn-$pkgver.tar.gz" # Pre 0.5.2
#source=("$pkgname-$pkgver.tar.gz::https://github.com/cataclysmbnteam/Cataclysm-BN/archive/refs/tags/v$pkgver.tar.gz"
source=(
        "cataclysm-jc-0.0.3.tar.lz"
        "cataclysm-bn.desktop"
        "cataclysm-bn-tiles.desktop"
        "icon_128x128.png"

        #"src-18-v7_monsters-can-go-up-stairs.patch"
        #"src-19_triffids-do-not-burrow-v2.patch"
        #"src-20_prevent-holstering-gunmods.patch"

        "vampirism.patch"
        )
b2sums=('8d66556c1f16a34f885c231922ae797bd38fd0de9d914f132e759e0d8329a89bab5c678177f253e9006158923a8ae26a8df11a975f661ade37135237dd4b85b4'
        '069ecde58859b3d44cd687c4b6e718610cefb693ff86e66f199ebfb1b3072023ad2b6f0c28e27ef9c1ce4997f6a5b2ca0d45046996b3ff35a4aeaeb1a7cf9421'
        'ad88bc6c1e3c8183a313b5eec42f98d6956afea349feff34a86e4536c9921fa99d2594282caf27de8ebb7ffb56376ed2e76d572227bfd6d8173c7bb1f01e23b8'
        '6f70e90359a14e4839d9a2683debb88850e5dd387add911ad68fd87e5512cfcdd435da63e1e370358153673fd5a72a9b1e9c94f1979edb7948b4da8c82407bad'
        '11ed6cc089964c4dc171b91f83f5ac041ced4b480151f77b21febafe392342ba4931af9c71266d4694a0ed236012ce2cbbb6ad58ff32721766cc4b88f9abe7e4')

prepare() {
  #cd "${_pkgname}-${pkgver}"
  cd "repo"

  # Assorted workarounds
  sed \
    -e 's/-Werror//' \
    -e 's/shell git/shell false/' \
    -i Makefile

  # Disable default optimizations
  sed \
    -e 's/-Os/-O3/' \
    -e 's/-O0/-O3/' \
    -e 's/-Og/-O3/' \
    -i Makefile

  # Fix version
#  sed -i 's|VERSION = unstable|VERSION = "0.2-experimental 2023-10-04-0030"|' Makefile
#  sed -i 's|VERSION = unstable|VERSION = "0.6.0"|' Makefile
  sed -i 's|VERSION = 0.6.0|VERSION = "0.0.3"|' Makefile


  # # # Hotfixes
  #echo "Applying hotfixes"


  # # # Various other fixes for bugs I came across that modify src
  #echo "Applying source code fixes"

  # Fix monsters not travelling up stairs: (Still in testing) FIXME
  #patch -Np1 --no-backup-if-mismatch -i "$srcdir"/src-18-v7_monsters-can-go-up-stairs.patch

  # Fix triffid queens from destroying terrain and burrowing to the center of the Earth: FIXME
  # The growplants function was destroying the terrain, not the furniture.
  # And since p is somehow being lost, the new terrain was never added.
  # This workaround has the side effect of making triffid terraforming silent, but its better than burrowing.
  #patch -Np1 --no-backup-if-mismatch -i "$srcdir"/src-19_triffids-do-not-burrow.patch

  # Prevent gunmods from being holstered: (Still in testing) FIXME
  # This is a hack fix due to how drawing a holstered gunmod that accepts magazines crashes the game.
  #patch -Np1 --no-backup-if-mismatch -i "$srcdir"/src-20_prevent-holstering-gunmods.patch

  # # # Additional changes
  echo "Applying vampirism patch"
  # Add vampire mutation lines and modify a number of functions to facilitate these traits.
  patch -Np1 --no-backup-if-mismatch -i "$srcdir"/vampirism.patch
}

build() {
  #cd "${_pkgname}-${pkgver}"
  cd "repo"

  #export CFLAGS="$CFLAGS -fPIE"
  export CXXFLAGS="$CXXFLAGS -fPIE"
  export LDFLAGS="$LDFLAGS,-pie"

  # Prevent segfaults when examine tile->search returns no results.
  #export CXXFLAGS="$(echo $CXXFLAGS | sed -i 's/-Wp,-D_GLIBCXX_ASSERTIONS//' - )" # No longer works
  export CXXFLAGS="$(echo $CXXFLAGS | sed 's/-Wp,-D_GLIBCXX_ASSERTIONS//')"
  #echo $CXXFLAGS

  # Disable astyle until I can custom build a copy of 3.1
  # And disable json linting for the moment
  make PREFIX=/usr RELEASE=1 USE_XDG_DIR=1 BACKTRACE=0 LOCALIZE=1 LANGUAGES=all RUNTESTS=0 ASTYLE=0 LINTJSON=0 VERBOSE=1 PCH=0 LUA=0 CCACHE=0
  make PREFIX=/usr RELEASE=1 USE_XDG_DIR=1 BACKTRACE=0 LOCALIZE=1 LANGUAGES=all RUNTESTS=0 ASTYLE=0 LINTJSON=0 VERBOSE=1 PCH=0 LUA=0 CCACHE=0 TILES=1 SOUND=1
  #./lang/compile_mo.sh
}

package_cataclysm-bn() {
  #cd "${_pkgname}-${pkgver}"
  cd "repo"

  make DESTDIR="$pkgdir" PREFIX="/usr" RELEASE=1 USE_HOME_DIR=1 LOCALIZE=1 LANGUAGES=all RUNTESTS=0 ASTYLE=0 LINTJSON=0 VERBOSE=1 PCH=0 LUA=0 CCACHE=0 install

  # Docs
  install -d "$pkgdir/usr/share/doc/cataclysm-bn"
  cp --reflink -r doc/* "$pkgdir/usr/share/doc/cataclysm-bn"

  # Fix tileset readme being duplicated in curses package
  rm "$pkgdir/usr/share/cataclysm-bn/json/external_tileset/README.md"

  # License
  install -Dm644 LICENSE.txt "$pkgdir/usr/share/licenses/$pkgname/LICENSE"

  # Languages
  cd lang/mo
  for i in *; do
    install -d "${pkgdir}/usr/share/locale/${i}/LC_MESSAGES"
    cp --reflink "${i}/LC_MESSAGES/cataclysm-bn.mo" "${pkgdir}/usr/share/locale/${i}/LC_MESSAGES"
  done

  # Help
  cd ./../..
  cp -r --reflink --no-preserve=ownership "./data/help" "${pkgdir}/usr/share/${pkgname}/"

#  install -Dm644 "${srcdir}/${pkgname}.desktop" "${pkgdir}/usr/share/applications/${pkgname}.desktop"
}

package_cataclysm-bn-tiles() {
  pkgdesc="A graphical post-apocalyptic roguelike."
  depends=(
    'cataclysm-bn'
    'freetype2'
    'sdl2_image'
    'sdl2_mixer'
    'sdl2_ttf'
  )
  #cd "${_pkgname}-${pkgver}"
  cd "repo"

  make DESTDIR="$pkgdir" PREFIX="/usr" RELEASE=1 LOCALIZE=1 LANGUAGES=all RUNTESTS=0 ASTYLE=0 LINTJSON=0 VERBOSE=1 PCH=0 LUA=0 CCACHE=0 TILES=1 SOUND=1 install


  # Icon
  #install -D 'data/osx/AppIcon.iconset/icon_128x128.png' "$pkgdir/usr/share/icons/hicolor/128x128/apps/$pkgname.png"
  #install -D 'data/osx/AppIcon.iconset/icon_128x128.png' "$pkgdir/usr/share/pixmaps/$pkgname.png"
  install -Dm644 "${srcdir}/icon_128x128.png" "$pkgdir/usr/share/icons/hicolor/128x128/apps/$pkgname.png"
  install -Dm644 "${srcdir}/icon_128x128.png" "$pkgdir/usr/share/pixmaps/$pkgname.png"
  install -Dm644 "${srcdir}/$pkgname.desktop" "${pkgdir}/usr/share/applications/$pkgname.desktop"

  install -Dm644 LICENSE.txt "$pkgdir/usr/share/licenses/$pkgname/LICENSE"


  # Remove unmaintained UDP tileset
  # Use my forked cataclysm-bn-tileset package for a working UDP tileset
  rm -rf "$pkgdir/usr/share/cataclysm-bn/gfx/MSX++UnDeadPeopleEdition"


  # hack: remove overlapping files
  cd "$pkgdir/../cataclysm-bn"
  find . -type f -exec rm -f "$pkgdir"/{} \;
  cd "$pkgdir"
  find . -type d -empty -delete

  # Fix mapgen readme being duplicated in tileset package
  rm "$pkgdir/usr/share/cataclysm-bn/json/mapgen/lab/README.md"
}