packages feed

Allure-0.4.6.5: src/Content/RuleKind.hs

{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE CPP, QuasiQuotes #-}
-- Copyright (c) 2008--2011 Andres Loeh, 2010--2012 Mikolaj Konarski
-- This file is a part of the computer game Allure of the Stars
-- and is released under the terms of the GNU Affero General Public License.
-- For license and copyright information, see the file LICENSE.
--
-- | Game rules and assorted game setup data for Allure of the Stars.
module Content.RuleKind ( cdefs ) where

-- Cabal
import qualified Paths_Allure as Self (getDataFileName, version)

import Game.LambdaHack.Content.RuleKind
import Game.LambdaHack.Content.TileKind
import qualified Game.LambdaHack.Feature as F
import Game.LambdaHack.CDefs
import Multiline

cdefs :: CDefs RuleKind
cdefs = CDefs
  { getSymbol = rsymbol
  , getName = rname
  , getFreq = rfreq
  , validate = ruvalidate
  , content =
      [standard]
  }
standard :: RuleKind

standard = RuleKind
  { rsymbol        = 's'
  , rname          = "standard Allure of the Stars ruleset"
  , rfreq          = [("standard", 100)]
  -- Check whether one location is accessible from another.
  -- Precondition: the two locations are next to each other.
  -- TODO: in the future check flying for chasms, swimming for water, etc.
  , raccessible    = \ _lxsize _sloc _src _tloc tgt ->
      F.Walkable `elem` tfeature tgt
  , rtitle         = "Allure of the Stars"
  , rpathsDataFile = Self.getDataFileName
  , rpathsVersion  = Self.version
  , ritemMelee     = "/|\\"
  , ritemProject   = "!?,-~}{"
  -- The strings containing the default configuration files,
  -- included from files config.game.default and config.ui.default.
  -- Warning: cabal does not detect that the config files are changed,
  -- so touching them is needed to reinclude configs and recompile.
  -- Note: consider code.haskell.org/~dons/code/compiled-constants
  -- as soon as the config file grows very big.
  , rcfgRulesDefault = [multiline|
#include "../../config.rules.default"
|]
  , rcfgUIDefault = [multiline|
#include "../../config.ui.default"
|]
  -- ASCII art for the Main Menu. Only pure 7-bit ASCII characters are
  -- allowed. The picture should be exactly 24 rows by 80 columns,
  -- plus an extra frame of any charecters that is ignored for all purposes.
  -- For a different screen size, the picture is centered and the outermost
  -- rows and columns cloned. When displayed in the Main Menu screen,
  -- it's overwritten with the game version string and keybinding strings.
  -- The game version string begins and ends with a space and is placed
  -- in the very bottom right corner. The keybindings overwrite places
  -- marked with 25 left curly brace signs '{' in a row. The sign is forbidden
  -- everywhere else. Exactly five such places with 25 left braces
  -- are required, at most one per row, and all are overwritten
  -- with text that is flushed left and padded with spaces.
  -- The Main Menu is displayed dull white on black.
  -- TODO: Highlighted keybinding is in inverse video or bright white on grey
  -- background. The spaces that pad keybindings are not highlighted.
  , rmainMenuArt = [multiline|
----------------------------------------------------------------------------------
|                                                                                |
|                                                                                |
|                      >> Allure of the Stars <<                                 |
|                                                                                |
|                                                                                |
|                                                                                |
|                      {{{{{{{{{{{{{{{{{{{{{{{{{                                 |
|                                                                                |
|                      {{{{{{{{{{{{{{{{{{{{{{{{{                                 |
|                                                                                |
|                      {{{{{{{{{{{{{{{{{{{{{{{{{                                 |
|                                                                                |
|                      {{{{{{{{{{{{{{{{{{{{{{{{{                                 |
|                                                                                |
|                      {{{{{{{{{{{{{{{{{{{{{{{{{                                 |
|                                                                                |
|                                                                                |
|                                                                                |
|                                                                                |
|                                                                                |
|                                                                                |
|                                                                                |
|                                                                                |
|                        Version X.X.X (frontend: gtk, engine: LambdaHack X.X.X) |
----------------------------------------------------------------------------------
|]}