c19e3dae5f
Memoize the return value of characterVisiblePositions to a new, semi-abstracted "memo" field on the GameState, recalcuclated if the character position ever changes. I'm 90% sure that the perf issues we were encountering were actually caused by characterVisiblePositions getting called once for *every tile* on draw, but this slightly larger change also makes the game perform relatively-usably again. Since this is only recalculated if the character position changes, if we ever get non-transparent entities moving around without the characters influence (maybe something building or knocking down walls?) we'll have an issue there where the vision won't be updated as a result of those changes if they happen while the character is taking a non-moving action - but we can cross that bridge when we come to it. Change-Id: I3fc745ddf0014d6f164f735ad7e5080da779b92a Reviewed-on: https://cl.tvl.fyi/c/depot/+/3185 Reviewed-by: grfn <grfn@gws.fyi> Tested-by: BuildkiteCI
80 lines
4 KiB
Nix
80 lines
4 KiB
Nix
{ mkDerivation, aeson, array, async, base, bifunctors, brick
|
|
, checkers, classy-prelude, comonad, comonad-extras, constraints
|
|
, containers, criterion, data-default, deepseq, directory, fgl
|
|
, fgl-arbitrary, file-embed, filepath, generic-arbitrary
|
|
, generic-lens, groups, hgeometry, hgeometry-combinatorial, hpack
|
|
, JuicyPixels, lens, lens-properties, lib, lifted-async, linear
|
|
, megaparsec, mmorph, monad-control, MonadRandom, mtl
|
|
, optparse-applicative, parallel, parser-combinators, pointed
|
|
, QuickCheck, quickcheck-instances, quickcheck-text, random
|
|
, random-extras, random-fu, random-source, Rasterific
|
|
, raw-strings-qq, reflection, semigroupoids, semigroups, splitmix
|
|
, stache, streams, tasty, tasty-hunit, tasty-quickcheck, text
|
|
, text-zipper, tomland, transformers, vector, vty, witherable, yaml
|
|
, zlib
|
|
}:
|
|
mkDerivation {
|
|
pname = "xanthous";
|
|
version = "0.1.0.0";
|
|
src = ./.;
|
|
isLibrary = true;
|
|
isExecutable = true;
|
|
libraryHaskellDepends = [
|
|
aeson array async base bifunctors brick checkers classy-prelude
|
|
comonad comonad-extras constraints containers criterion
|
|
data-default deepseq directory fgl fgl-arbitrary file-embed
|
|
filepath generic-arbitrary generic-lens groups hgeometry
|
|
hgeometry-combinatorial JuicyPixels lens lifted-async linear
|
|
megaparsec mmorph monad-control MonadRandom mtl
|
|
optparse-applicative parallel parser-combinators pointed QuickCheck
|
|
quickcheck-instances quickcheck-text random random-extras random-fu
|
|
random-source Rasterific raw-strings-qq reflection semigroupoids
|
|
semigroups splitmix stache streams text text-zipper tomland
|
|
transformers vector vty witherable yaml zlib
|
|
];
|
|
libraryToolDepends = [ hpack ];
|
|
executableHaskellDepends = [
|
|
aeson array async base bifunctors brick checkers classy-prelude
|
|
comonad comonad-extras constraints containers criterion
|
|
data-default deepseq directory fgl fgl-arbitrary file-embed
|
|
filepath generic-arbitrary generic-lens groups hgeometry
|
|
hgeometry-combinatorial JuicyPixels lens lifted-async linear
|
|
megaparsec mmorph monad-control MonadRandom mtl
|
|
optparse-applicative parallel parser-combinators pointed QuickCheck
|
|
quickcheck-instances quickcheck-text random random-extras random-fu
|
|
random-source Rasterific raw-strings-qq reflection semigroupoids
|
|
semigroups splitmix stache streams text text-zipper tomland
|
|
transformers vector vty witherable yaml zlib
|
|
];
|
|
testHaskellDepends = [
|
|
aeson array async base bifunctors brick checkers classy-prelude
|
|
comonad comonad-extras constraints containers criterion
|
|
data-default deepseq directory fgl fgl-arbitrary file-embed
|
|
filepath generic-arbitrary generic-lens groups hgeometry
|
|
hgeometry-combinatorial JuicyPixels lens lens-properties
|
|
lifted-async linear megaparsec mmorph monad-control MonadRandom mtl
|
|
optparse-applicative parallel parser-combinators pointed QuickCheck
|
|
quickcheck-instances quickcheck-text random random-extras random-fu
|
|
random-source Rasterific raw-strings-qq reflection semigroupoids
|
|
semigroups splitmix stache streams tasty tasty-hunit
|
|
tasty-quickcheck text text-zipper tomland transformers vector vty
|
|
witherable yaml zlib
|
|
];
|
|
benchmarkHaskellDepends = [
|
|
aeson array async base bifunctors brick checkers classy-prelude
|
|
comonad comonad-extras constraints containers criterion
|
|
data-default deepseq directory fgl fgl-arbitrary file-embed
|
|
filepath generic-arbitrary generic-lens groups hgeometry
|
|
hgeometry-combinatorial JuicyPixels lens lifted-async linear
|
|
megaparsec mmorph monad-control MonadRandom mtl
|
|
optparse-applicative parallel parser-combinators pointed QuickCheck
|
|
quickcheck-instances quickcheck-text random random-extras random-fu
|
|
random-source Rasterific raw-strings-qq reflection semigroupoids
|
|
semigroups splitmix stache streams text text-zipper tomland
|
|
transformers vector vty witherable yaml zlib
|
|
];
|
|
prePatch = "hpack";
|
|
homepage = "https://github.com/glittershark/xanthous#readme";
|
|
description = "A WIP TUI RPG";
|
|
license = lib.licenses.gpl3Only;
|
|
}
|