Paginate long books, like the book on Alchemy
This commit is contained in:
parent
3926fc4310
commit
283f022108
3 changed files with 50 additions and 21 deletions
|
|
@ -3,11 +3,11 @@
|
||||||
from random import random
|
from random import random
|
||||||
from re import split, sub, MULTILINE
|
from re import split, sub, MULTILINE
|
||||||
|
|
||||||
from django.conf import settings
|
|
||||||
from evennia.commands.default.general import CmdGet, NumberedTargetCommand
|
from evennia.commands.default.general import CmdGet, NumberedTargetCommand
|
||||||
from evennia.commands.default.muxcommand import MuxCommand
|
from evennia.commands.default.muxcommand import MuxCommand
|
||||||
from evennia.contrib.rpg.rpsystem import send_emote
|
from evennia.contrib.rpg.rpsystem import send_emote
|
||||||
from evennia.utils import evmore, iter_to_str, logger
|
from evennia.utils import iter_to_str, logger
|
||||||
|
from evennia.utils.evmore import EvMore
|
||||||
|
|
||||||
from commands.command import Command
|
from commands.command import Command
|
||||||
from typeclasses.characters import Character
|
from typeclasses.characters import Character
|
||||||
|
|
@ -485,24 +485,32 @@ class CmdRead(Command):
|
||||||
if prefix:
|
if prefix:
|
||||||
prefix = prefix + "|/"
|
prefix = prefix + "|/"
|
||||||
if contents.startswith("file:"):
|
if contents.startswith("file:"):
|
||||||
self.show_file(reader, contents[5:], prefix or "")
|
self.show_file(reader, contents[5:], prefix,
|
||||||
|
self.client_width(), reader.client_height())
|
||||||
else:
|
else:
|
||||||
reader.msg(prefix + contents)
|
reader.msg(prefix + contents)
|
||||||
|
|
||||||
def show_file(self, reader, filename, prefix):
|
def show_file(self, reader, filename, prefix, width, height):
|
||||||
"""
|
"""
|
||||||
Display a file to the user.
|
Display a file to the user.
|
||||||
|
|
||||||
The file is _somewhat_ Markdown formatted.
|
The file is _somewhat_ Markdown formatted.
|
||||||
"""
|
"""
|
||||||
width = self.client_width() - 1
|
|
||||||
with open(filename, "r") as myfile:
|
with open(filename, "r") as myfile:
|
||||||
no_data = sub(r">.*", "", myfile.read(), MULTILINE)
|
buf = myfile.read()
|
||||||
brk = '─' if reader.utf() else '-'
|
session = reader.sessions.get()[0]
|
||||||
no_head = sub(r"#.*", '|W' + (brk * width) + '|n',
|
width = self.client_width()
|
||||||
no_data, MULTILINE)
|
tidied = md_to_evennia(buf, reader.utf(), width)
|
||||||
buf = prefix + paragraph(no_head)
|
if prefix:
|
||||||
evmore.msg(reader, buf)
|
tidied = prefix + "|/" + tidied
|
||||||
|
EvMore(reader, tidied, session=session,
|
||||||
|
justify=True, justify_kwargs={"width": width})
|
||||||
|
|
||||||
|
def md_to_evennia(text, utf, width):
|
||||||
|
brk = '─' if utf else '-'
|
||||||
|
no_data = sub(r">.*[\n\r]+", "", text, MULTILINE)
|
||||||
|
return sub(r"#.*", '|W' + (brk * width) + '|n',
|
||||||
|
no_data, MULTILINE)
|
||||||
|
|
||||||
class CmdTake(CmdGet, NumberedTargetCommand):
|
class CmdTake(CmdGet, NumberedTargetCommand):
|
||||||
"""
|
"""
|
||||||
|
|
|
||||||
|
|
@ -11,6 +11,7 @@ with a location in the game world (like Characters, Rooms, Exits).
|
||||||
|
|
||||||
from re import split, match, sub, IGNORECASE
|
from re import split, match, sub, IGNORECASE
|
||||||
|
|
||||||
|
from django.conf import settings
|
||||||
from evennia.contrib.rpg.rpsystem.rpsystem import ContribRPObject
|
from evennia.contrib.rpg.rpsystem.rpsystem import ContribRPObject
|
||||||
from evennia.prototypes.spawner import spawn
|
from evennia.prototypes.spawner import spawn
|
||||||
from evennia.utils import delay, logger
|
from evennia.utils import delay, logger
|
||||||
|
|
@ -252,6 +253,22 @@ class Object(ObjectParent, ContribRPObject):
|
||||||
|
|
||||||
return None
|
return None
|
||||||
|
|
||||||
|
def client_height(self):
|
||||||
|
"""
|
||||||
|
Get the client screenheight for the session using this command.
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
client height (int): The height (in characters) of the client window.
|
||||||
|
|
||||||
|
Not sure why this isn't part of the engine.
|
||||||
|
"""
|
||||||
|
if self.sessions:
|
||||||
|
session = self.sessions.get()[0]
|
||||||
|
return session.protocol_flags.get(
|
||||||
|
"SCREENHEIGHT", {0: settings.CLIENT_DEFAULT_HEIGHT}
|
||||||
|
)[0]
|
||||||
|
return settings.CLIENT_DEFAULT_HEIGHT
|
||||||
|
|
||||||
def characters_here(self, puppets=False):
|
def characters_here(self, puppets=False):
|
||||||
"""
|
"""
|
||||||
Return a list of characters in the current location.
|
Return a list of characters in the current location.
|
||||||
|
|
|
||||||
|
|
@ -1,13 +1,14 @@
|
||||||
Covered in herbs, mushrooms and moss, this land invites me to produce potions. To work such craft, one must have the proper equipment, which I imported from Twilight Spire outside Mistwood. Most experiments have been successful, and I record them here.
|
Covered in herbs, mushrooms and moss, this land invites me to produce potions. To work such craft, one must have the proper equipment, which I imported from Twilight Spire outside Mistwood. Most experiments have been successful, and I record them here.
|
||||||
|
|
||||||
|BElixir Risorium|n
|
# --------------------------------------------------------------------------------
|
||||||
|
|bElixir Risorium|n
|
||||||
|
# --------------------------------------------------------------------------------
|
||||||
|
|
||||||
While saccharine, this potion induces a state of euphoria finding everything, including one's own thoughts, hilarious.
|
While saccharine, this potion induces a state of euphoria finding everything, including one's own thoughts, hilarious. Enjoyable, and easy to make.
|
||||||
Enjoyable, and easy to make.
|
|
||||||
|
|
||||||
|wIngredients|n
|
|wIngredients|n
|
||||||
|
|
||||||
- 1 Gigglecap mushrooms
|
- 1 Gigglecap mushroom
|
||||||
- 1 Bunch of tickleweed
|
- 1 Bunch of tickleweed
|
||||||
- 2 cups of fizzy water
|
- 2 cups of fizzy water
|
||||||
|
|
||||||
|
|
@ -15,14 +16,16 @@ I have found Gigglecaps growing on well drained, rocky soil and even on rocks. T
|
||||||
|
|
||||||
|wProcedure|n
|
|wProcedure|n
|
||||||
|
|
||||||
Step 1, |gempty|n the cauldron
|
Step 1. |gempty|n the cauldron
|
||||||
Step 2. |gadd|n all ingredients to the caldron
|
Step 2. |gadd|n all ingredients to the cauldron
|
||||||
Step 3. |gcreate|n the potion using a low heat and the magic incantation
|
Step 3. |gcreate|n the potion with the magic incantation
|
||||||
Step 4. |gbottle|n the concoction into a vial
|
Step 4. |gbottle|n the concoction into a vial
|
||||||
|
|
||||||
I have taught |mImpetus|n the incantation for the spell, which makes brewing potions much easier and quicker. Just remember to stir the potion with the wooden spoon.
|
I have taught |mImpetus|n the incantation for the spell, which makes brewing potions much easier and quicker. Just remember to stir the potion with the wooden spoon.
|
||||||
|
|
||||||
|BSomnium Illusorium|n
|
# --------------------------------------------------------------------------------
|
||||||
|
|bSomnium Illusorium|n
|
||||||
|
# --------------------------------------------------------------------------------
|
||||||
|
|
||||||
This fascinating potion can create a dream-like state while awake, including visions of sight and sound. One must be careful with this, as it could disrupt one perception of reality.
|
This fascinating potion can create a dream-like state while awake, including visions of sight and sound. One must be careful with this, as it could disrupt one perception of reality.
|
||||||
|
|
||||||
|
|
@ -42,8 +45,9 @@ I’ve noticed Pixies often dance in the marshlands to the East, but are often i
|
||||||
|wProcedure|n
|
|wProcedure|n
|
||||||
|
|
||||||
Step 1, |gempty|n the cauldron
|
Step 1, |gempty|n the cauldron
|
||||||
Step 2. |gadd|n all ingredients to the caldron
|
Step 2. |gadd|n all ingredients to the cauldron
|
||||||
Step 3. |gcreate|n the potion by stirring the potion clockwise for exactly seven rotations
|
Step 3. |gcreate|n the potion by stirring the potion clockwise for exactly seven rotations
|
||||||
Step 4. |gbottle|n the concoction into a vial
|
Step 4. |gbottle|n the concoction into a vial
|
||||||
|
|
||||||
|
# End
|
||||||
|bNote: This is still a work in progress... What do you think of this idea? You would gather herbs and whatnot, put them in the cauldron and then make potions! Seems intriguing...|n
|
|bNote: This is still a work in progress... What do you think of this idea? You would gather herbs and whatnot, put them in the cauldron and then make potions! Seems intriguing...|n
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue