packages feed

ansi-terminal-game-0.3.0.0: ansi-terminal-game.cabal

name:                ansi-terminal-game
version:             0.3.0.0
synopsis:            sdl-like functions for terminal applications, based on
                     ansi-terminal
description:         Library which aims to replicate standard 2d game
                     functions (blit, ticks, timers, etc.) in a terminal
                     setting.
                     Aims to be cross compatible (based on "ansi-terminal",
                     no unix-only dependencies), practical.
                     See example folder for some minimal programs.
homepage:            none-yet
license:             GPL-3
license-file:        LICENSE
author:              Francesco Ariis
maintainer:          fa-ml@ariis.it
copyright:           © 2017-2019 Francesco Ariis
category:            Game
build-type:          Simple
extra-source-files:  changes.txt
cabal-version:       >=1.10

flag example
  description:       builds examples
  default:           False

library
  exposed-modules:     Terminal.Game
  other-modules:       Terminal.Game.Animation,
                       Terminal.Game.Layer.Imperative,
                       Terminal.Game.Layer.Object,
                       Terminal.Game.Layer.Object.Display,
                       Terminal.Game.Draw,
                       Terminal.Game.Input,
                       Terminal.Game.Plane,
                       Terminal.Game.Timer
  build-depends:       base == 4.*,
                       ansi-terminal == 0.8.*,
                       array == 0.5.*,
                       bytestring == 0.10.*,
                       cereal == 0.5.*,
                       clock == 0.7.*,
                       linebreak == 1.0.*,
                       mtl == 2.2.*,
                       split == 0.2.*,
                       terminal-size == 0.3.*,
                       timers-tick == 0.4.*
  hs-source-dirs:      src
  default-language:    Haskell2010
  ghc-options:         -Wall

  -- horrible horrible horrible hack to make unbuffered input
  -- work on Windows
  if os(windows)
    hs-source-dirs: platform-dep/windows
  if !os(windows)
    hs-source-dirs: platform-dep/non-win

test-suite test
  default-language:    Haskell2010
  hs-Source-Dirs:      test, src
  main-is:             Test.hs
  other-modules:       Terminal.Game,
                       Terminal.Game.Animation,
                       Terminal.Game.Draw,
                       Terminal.Game.DrawSpec,
                       Terminal.Game.Layer.Imperative,
                       Terminal.Game.Layer.ImperativeSpec,
                       Terminal.Game.Layer.Object,
                       Terminal.Game.Layer.Object.Display,
                       Terminal.Game.Input,
                       Terminal.Game.Plane,
                       Terminal.Game.PlaneSpec
  build-depends:       base == 4.*,
                       ansi-terminal == 0.8.*,
                       array == 0.5.*,
                       bytestring == 0.10.*,
                       cereal == 0.5.*,
                       clock == 0.7.*,
                       linebreak == 1.0.*,
                       mtl == 2.2.*,
                       split == 0.2.*,
                       terminal-size == 0.3.*,
                       timers-tick == 0.4.*
                       -- the above plus hspec
                       , hspec
  type:                exitcode-stdio-1.0
  ghc-options:         -Wall

  -- horrible horrible horrible hack to make unbuffered input
  -- work on Windows, part II
  if os(windows)
    hs-source-dirs: platform-dep/windows
  if !os(windows)
    hs-source-dirs: platform-dep/non-win

executable alone-in-a-room
    if flag(example)
      build-depends:    base == 4.*,
                        ansi-terminal-game
    else
      buildable:        False

    hs-source-dirs:   example
    main-is:          Alone.hs
    default-language: Haskell2010
        -- With the -threaded option, only foreign calls with the unsafe
        -- attribute will block all other threads.
    ghc-options:      -threaded
                      -- -O2 non rende le cose più veloci
    -- Senza threaded non compila su windows
    -- required on win before ghc 8.4?
    --
    -- geekosaur dice
    --    geekosaur f-a, a. heh. so the thoguht I had turned out to
    --           be correct:
    --           Control.Concurent.rtsSupportsBoundThreads (because
    --           green threads can't be usefully bound)
    --    geekosaur so if that produces True, it's using the
    --              threaded runtime; if False, you can say
    --              something useful instead of hanging

-- per time profiling
-- cabal new-run -f example alone-in-a-room --enable-profiling -- +RTS -p