chiark / gitweb /
Ian Jackson [Sat, 16 Apr 2022 11:46:04 +0000 (12:46 +0100)]
dice js: Sort out the logging
Don't log every frame!
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
Ian Jackson [Sat, 16 Apr 2022 11:39:58 +0000 (12:39 +0100)]
dice js: Actually do the animation
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
Ian Jackson [Sat, 16 Apr 2022 11:38:20 +0000 (12:38 +0100)]
dice: Rename remprop parameter to wasm die_cooldown_path
Apparently I missed renaming this when I introduced the "rempprop"
name.
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
Ian Jackson [Sat, 16 Apr 2022 11:38:14 +0000 (12:38 +0100)]
dice js: Obtain radius from the input dataset
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
Ian Jackson [Sat, 16 Apr 2022 11:31:08 +0000 (12:31 +0100)]
dice: Always provide the label text node
This will give us a way to tell which elements are part of the
cooldown clock and therefore need to be removed when it runs down.
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
Ian Jackson [Sat, 16 Apr 2022 11:24:41 +0000 (12:24 +0100)]
dice js: Obtain information from the input dataset etc.
We want this all nicely in our JS object.
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
Ian Jackson [Sat, 16 Apr 2022 11:36:14 +0000 (12:36 +0100)]
dice js: Break out die_request_animation
We're going to want to re-request animiation in the frame renderer,
obviously.
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
Ian Jackson [Sat, 16 Apr 2022 11:27:14 +0000 (12:27 +0100)]
dice js: Make s.anim_id be possibly null
We might not have requested an animation frame. If so we shouldn't
cancel it. Nor, if we have already cancelled it, or if it has
occurred.
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
Ian Jackson [Sat, 16 Apr 2022 11:15:57 +0000 (12:15 +0100)]
dice js: Initial plumbing of animiation
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
Ian Jackson [Sat, 16 Apr 2022 11:49:14 +0000 (12:49 +0100)]
js: Introduce SpecialRendering handling
This is the generic plumbing. We must implement at least a no-op for
Die right away, because otherwise we throw an exception during game
load.
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
Ian Jackson [Sat, 16 Apr 2022 10:49:17 +0000 (11:49 +0100)]
js: Notice errors during start() and display them
Otherwise if the game is buggy, you can get a fundamentally broken and
unresponsive UI, and no indication that this isn't your fault.
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
Ian Jackson [Sat, 16 Apr 2022 10:12:25 +0000 (11:12 +0100)]
dice: Change SpecialClientRendering representation
Making this an internally-tageed union is going to be nicer for the
JS, which then doesn't have to prat about with Object.keys(thing)[0]
etc.
And the special rendering is Die, not DieCooldown, since if dice get a
second kind of special rendering thta will have to be here too.
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
Ian Jackson [Sat, 16 Apr 2022 00:20:41 +0000 (01:20 +0100)]
dice: overlay extractor: fix autogeneration comment
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
Ian Jackson [Sat, 16 Apr 2022 00:12:20 +0000 (01:12 +0100)]
dice: Support rolling
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
Ian Jackson [Sat, 16 Apr 2022 00:12:09 +0000 (01:12 +0100)]
fake-rng: Provide range() method
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
Ian Jackson [Sat, 16 Apr 2022 00:11:49 +0000 (01:11 +0100)]
dice: Break out check_permit_flip_roll
The "roll" ui operation is going to want this too.
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
Ian Jackson [Sat, 16 Apr 2022 00:10:53 +0000 (01:10 +0100)]
dice: Break out cooldown_start_value
The "roll" ui operation is going to want this too.
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
Ian Jackson [Fri, 15 Apr 2022 23:31:50 +0000 (00:31 +0100)]
dice: Prevent flipping during cooldown
This involves a new hook for the piece trait.
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
Ian Jackson [Fri, 15 Apr 2022 23:12:55 +0000 (00:12 +0100)]
flip: Use description after flip, not before
This makes the log messages about dice true.
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
Ian Jackson [Fri, 15 Apr 2022 23:12:42 +0000 (00:12 +0100)]
dice: Actually display the labels
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
Ian Jackson [Fri, 15 Apr 2022 23:11:41 +0000 (00:11 +0100)]
dice: Add definite article to log entries
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
Ian Jackson [Fri, 15 Apr 2022 23:10:56 +0000 (00:10 +0100)]
dice: Rename iface from face
This is a mangled version of the requested face which we should only
use for the image, since it might be 0 even if there are many labels.
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
Ian Jackson [Fri, 15 Apr 2022 22:51:15 +0000 (23:51 +0100)]
die: Adjust text size
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
Ian Jackson [Fri, 15 Apr 2022 22:40:31 +0000 (23:40 +0100)]
die: Prepare for extracting text template too (2)
Bracket our cooldown output all together.
I did it the other way because I had forgotten that the output order
is controlled by the script, not the input.
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
Ian Jackson [Fri, 15 Apr 2022 22:30:44 +0000 (23:30 +0100)]
die: Prepare for extracting text template too
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
Ian Jackson [Fri, 15 Apr 2022 21:37:58 +0000 (22:37 +0100)]
die: Hack about at SVG to make a nicer template for label
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
Ian Jackson [Fri, 15 Apr 2022 21:31:26 +0000 (22:31 +0100)]
dice: Add labels to demo game
But they don't display yet...
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
Ian Jackson [Fri, 15 Apr 2022 19:58:00 +0000 (20:58 +0100)]
dice: Add cross-referencing notes and comments
This may help us find things in future. Used inkscape's "document
properties", "metadata" pane, and then manually moved the new metadata
tag nearer to the top of the svg file.
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
Ian Jackson [Fri, 15 Apr 2022 19:46:06 +0000 (20:46 +0100)]
dice: Fix cooldown radius
This looks good now.
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
Ian Jackson [Fri, 15 Apr 2022 19:34:49 +0000 (20:34 +0100)]
Provide cooldown timer stroke width to Rust
We now have this in two places which is a bit poor, but we already
have some duplication between die.svg and the Rust code - eg, the path
generation which was just c&p.
I have left a comment. And arranged to filter it out for distribution.
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
Ian Jackson [Fri, 15 Apr 2022 19:36:08 +0000 (20:36 +0100)]
Provide select stroke width to Rust
We now have this in two places which is a bit poor, but I don't fancy
plumbing it into the ts machinery.
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
Ian Jackson [Fri, 15 Apr 2022 19:17:57 +0000 (20:17 +0100)]
dice: Use bespoke outline path for surround (selection)
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
Ian Jackson [Fri, 15 Apr 2022 19:06:57 +0000 (20:06 +0100)]
OutlineTrait: Document outline_path
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
Ian Jackson [Fri, 15 Apr 2022 19:06:49 +0000 (20:06 +0100)]
dice: Fix a radius/diameter confusion
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
Ian Jackson [Fri, 15 Apr 2022 19:38:25 +0000 (20:38 +0100)]
die svg: Shrinking by 10: Change window
Just asked inkscape to recenter the view.
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
Ian Jackson [Fri, 15 Apr 2022 18:43:29 +0000 (19:43 +0100)]
die svg: Shrinking by 10: Reduce die box size
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
Ian Jackson [Fri, 15 Apr 2022 18:39:20 +0000 (19:39 +0100)]
die svg: Shrinking by 10: Reduce stroke widths
We don't have anything to rescale the elements we extract for use as
the cooldown timer, so we need to get the linewidths as we finally
want them.
In this commit we mostly do the stroke widths and the circle size.
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
Ian Jackson [Fri, 15 Apr 2022 18:34:51 +0000 (19:34 +0100)]
dice: Adjust sizes, wip
Adjust the strokes of the circles using inkscape.
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
Ian Jackson [Fri, 15 Apr 2022 12:46:53 +0000 (13:46 +0100)]
dice: Add a test die to the demo game
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
Ian Jackson [Fri, 15 Apr 2022 17:54:00 +0000 (18:54 +0100)]
dice: Cooldown template: Add header about autogeneration
This may help avoid editing it manuallly...
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
Ian Jackson [Fri, 15 Apr 2022 17:43:31 +0000 (18:43 +0100)]
dice: Make moveable
Don't bake into the piece implementation that these aren't moveable.
If this is desired, it can be part of the game spec.
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
Ian Jackson [Fri, 15 Apr 2022 12:47:06 +0000 (13:47 +0100)]
dice: Sort out defaults
* Abolish the separate DEFAULT_COOLDOWN constant. This seems otiose.
* Clarify what the radius scale is supposed to mean
* Provide a default radius scale
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
Ian Jackson [Fri, 15 Apr 2022 12:46:58 +0000 (13:46 +0100)]
test.table.toml: Add a currently-working rune
Many of the others are obsolete but I don't want to take the time now
to clean them up.
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
Ian Jackson [Fri, 15 Apr 2022 12:14:24 +0000 (13:14 +0100)]
dice: Start a cooldown the first time a die is added to the game
This is useful for testing. It also means you can't just add a die
showing what you want using the game management interface...
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
Ian Jackson [Fri, 15 Apr 2022 12:20:59 +0000 (13:20 +0100)]
Provide InternalError::FutureInstantOutOfRange
The dice itself wants to sometimes do this conversion (notably, on
initial piece load), and if it's out of range that's implausible.
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
Ian Jackson [Fri, 15 Apr 2022 12:12:16 +0000 (13:12 +0100)]
dice: Always use a circular Outline and adjust radiii
The circular outline will go nicely with the cooldown timer.
The radius etc. is still not quite right.
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
Ian Jackson [Fri, 15 Apr 2022 12:04:37 +0000 (13:04 +0100)]
dice: Set cooldown_expiry to None when we can
This will avoid pointless calls to Instant::now, which would otherwise
be needed to discover that the cooldown time has expired (perhaps long
ago).
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
Ian Jackson [Fri, 15 Apr 2022 11:54:37 +0000 (12:54 +0100)]
dice: Tidy remprop handling
This macro was overkill. It existed mostly to avoid uselessly
comparing the remaining duration with 0 and storing None when it was
there already. That's a daft microoptimisation.
Doing it this way instead lets us only do the remprop calculation when
it's wanted, and it will let us provide a way to set cooldown_expires
to None if and when we have &mut State and can see it's timed out.
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
Ian Jackson [Tue, 12 Apr 2022 21:42:46 +0000 (22:42 +0100)]
dice: Initial implementation of piece
Does not work properly yet.
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
Ian Jackson [Fri, 15 Apr 2022 09:56:27 +0000 (10:56 +0100)]
Provide FutureTimeInstant, for use by dice
This loads and saves as a Duration.
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
Ian Jackson [Mon, 11 Apr 2022 21:07:58 +0000 (22:07 +0100)]
dice: cooldown_path etc.: rename remaining proportion to "remprop"
This distinguishes "remaining" (a duration) from "remprop" (a proportion).
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
Ian Jackson [Fri, 15 Apr 2022 17:47:14 +0000 (18:47 +0100)]
dice: Cooldown template: Use total_ms for duration variable
Make the units clearer. We will provide a value for this from a
Serialize context struct in the Rust code, which is still to come.
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
Ian Jackson [Mon, 11 Apr 2022 20:32:28 +0000 (21:32 +0100)]
dice: Generate cooldown template using extractor
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
Ian Jackson [Mon, 11 Apr 2022 19:57:48 +0000 (20:57 +0100)]
Move die helper materials to dice/ subdirectory
This declutters the toplevel a bit.
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
Ian Jackson [Fri, 15 Apr 2022 11:28:57 +0000 (12:28 +0100)]
Special client rendering: Do explain why not to provide xdata here
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
Ian Jackson [Fri, 15 Apr 2022 17:54:07 +0000 (18:54 +0100)]
Special client rendering: Fix quoting of JSON payload
The needs to be in " " (and the JS will evaluate it).
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
Ian Jackson [Mon, 11 Apr 2022 19:52:10 +0000 (20:52 +0100)]
Provide plumbing for special client rendering instructions
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
Ian Jackson [Thu, 14 Apr 2022 20:01:09 +0000 (21:01 +0100)]
Make PieceBaseTrait dyn_upcast-able
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
Ian Jackson [Mon, 11 Apr 2022 19:38:37 +0000 (20:38 +0100)]
pcrender: prep for more attributes in pelem
We are going to add a .special.
NFC.
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
Ian Jackson [Mon, 11 Apr 2022 19:33:40 +0000 (20:33 +0100)]
die: wip svg, add more tests
Again, verified by hand-hacking and using Refresh in inkscape, that
they look right.
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
Ian Jackson [Mon, 11 Apr 2022 19:31:29 +0000 (20:31 +0100)]
die: wip svg, cooldown timer better assert
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
Ian Jackson [Mon, 11 Apr 2022 19:27:16 +0000 (20:27 +0100)]
die: wip svg, fix cooldown timer path and add test cases
I've verified that the 1. test case shows as expected.
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
Ian Jackson [Mon, 11 Apr 2022 19:15:47 +0000 (20:15 +0100)]
die: wip svg, make example less than half
This let me c&p the string into the new test case. Although, the test
will need to be different because of rounding errors.
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
Ian Jackson [Mon, 11 Apr 2022 18:10:36 +0000 (19:10 +0100)]
dice: Provide die_cooldown_path
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
Ian Jackson [Mon, 11 Apr 2022 17:50:49 +0000 (18:50 +0100)]
die: wip svg, fix colour of white
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
Ian Jackson [Mon, 11 Apr 2022 17:50:26 +0000 (18:50 +0100)]
die: wip svg extractor
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
Ian Jackson [Mon, 11 Apr 2022 17:10:45 +0000 (18:10 +0100)]
die: wip svg, change timewhite path (back) to a circle
We want to be able to auto-adjust it by fiddling with r=. That's
going to be awkward with the path element but easy with circle.
I have checked that one can (eg) change the width of the line in
inkscaqpe, and it remains a circle.
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
Ian Jackson [Thu, 7 Apr 2022 16:44:59 +0000 (17:44 +0100)]
die: wip svg, remove unneeded parts
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
Ian Jackson [Thu, 7 Apr 2022 16:28:46 +0000 (17:28 +0100)]
die: wip svg, remove zigzag
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
Ian Jackson [Thu, 7 Apr 2022 16:22:17 +0000 (17:22 +0100)]
die: wip svg
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
Ian Jackson [Thu, 7 Apr 2022 16:17:15 +0000 (17:17 +0100)]
die: wip svg
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
Ian Jackson [Thu, 7 Apr 2022 16:02:24 +0000 (17:02 +0100)]
die: wip svg
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
Ian Jackson [Fri, 15 Apr 2022 10:50:07 +0000 (11:50 +0100)]
InertPieceTrait: Add comment clarifying FaceId etc.
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
Ian Jackson [Fri, 15 Apr 2022 09:58:24 +0000 (10:58 +0100)]
Gamestate: Fix a more style nit
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
Ian Jackson [Thu, 14 Apr 2022 00:20:10 +0000 (01:20 +0100)]
SpecError: Add a comma (for consistent coding style)
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
Ian Jackson [Fri, 15 Apr 2022 17:38:00 +0000 (18:38 +0100)]
Provide load_inert for SimplePieceSpec
This will let us use these as backgrounds for dice.
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
Ian Jackson [Fri, 15 Apr 2022 17:23:27 +0000 (18:23 +0100)]
Move fn load out of SimplePieceSpec into macro
The only call site was in impl_PieceSpec_for_SimplePieceSpec.
Hoisting it there makes little codegen difference but seems more
natural.
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
Ian Jackson [Fri, 15 Apr 2022 17:18:34 +0000 (18:18 +0100)]
Combine impls into impl_PieceSpec_for_SimplePieceSpec
We want to add load_inert to this. It's getting too repetitive.
We can't use generic impl on <P: SimplePieceSpec> because we need to
specxify the serde typetag.
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
Ian Jackson [Fri, 15 Apr 2022 10:40:56 +0000 (11:40 +0100)]
Pass face to InertPieceTrait::describe_html
This ought to have been part of
Extend InertPieceTrait to support multiple faces
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
Ian Jackson [Fri, 15 Apr 2022 10:26:00 +0000 (11:26 +0100)]
Make OccultIlkName a type alias, not a newtype
There's not really an abstraction here defending anything, and it
lacks constructors etc. Just abolish it.
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
Ian Jackson [Thu, 14 Apr 2022 19:55:17 +0000 (20:55 +0100)]
Plumb xdata through to InertPieceTrait svg
Occulted dice will need this to display the cooldown timer.
This makes dice's InertPieceTrait impl not very inert, but it is OK
because nothing can set off an inert die's cooldown timer.
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
Ian Jackson [Thu, 14 Apr 2022 19:45:42 +0000 (20:45 +0100)]
Move itemname into PieceBaseTrait
We want this becasue dice want to use inert pieces as images, and use
their images' item names in their own item names.
This involves providing an itemname for ItemInertForOcculted.
Happily the SvgBaseName will do nicely.
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
Ian Jackson [Thu, 14 Apr 2022 19:03:34 +0000 (20:03 +0100)]
Introduce PieceBaseTrait and put nfaces() in it
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
Ian Jackson [Wed, 13 Apr 2022 21:32:56 +0000 (22:32 +0100)]
humantime: Switch to humantime_serde
We are going to want this for dice cooldown spec.
Using the humantime re-export avoids version problems.
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
Ian Jackson [Wed, 13 Apr 2022 21:28:31 +0000 (22:28 +0100)]
humantime: Promote dependency to otter main crate
We are going to want this for dice cooldown spec.
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
Ian Jackson [Tue, 12 Apr 2022 20:33:51 +0000 (21:33 +0100)]
spec errors: Expand WrongNumberOfFaces error
We're going to want to reuse this in a new context. And, this already
produces better error messages for the case where it's used now.
It seems better to provide this rather generic error rather than
expect each funky piece kind to invent its own kind in SpecError.
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
Ian Jackson [Tue, 12 Apr 2022 20:33:28 +0000 (21:33 +0100)]
docs: Document scope of semver guarantees
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
Ian Jackson [Tue, 12 Apr 2022 20:12:49 +0000 (21:12 +0100)]
Make GenericSimpleShape::count_faces return RawFaceId
RawFaceId is smaller than usize. It is better not to ask callers to
do the unwrap. Motivated by wanting add a new call site which wants a
RawFaceId.
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
Ian Jackson [Tue, 12 Apr 2022 00:18:22 +0000 (01:18 +0100)]
Extend load_inert to offer an occultable piece
Now inert pieces can be occultable too. Currently this is meaningless
since we only call load_inert when resolving the occultation
for *another* piece, where we discard the occultation information.
But that is going to change.
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
Ian Jackson [Tue, 12 Apr 2022 00:12:48 +0000 (01:12 +0100)]
Genericise SpecLoaded
We are going to want to make inert pieces occultable too. Currently
this is meaningless since we only call load_inert when resolving the
occultation for *another* piece. But that is going to change.
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
Ian Jackson [Mon, 11 Apr 2022 19:51:12 +0000 (20:51 +0100)]
Fix message for IE::JSONEncode
The name is JSONEncode, so this must be serialisation, and indeed that
is true of both the construction sites.
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
Ian Jackson [Mon, 11 Apr 2022 09:50:03 +0000 (10:50 +0100)]
Implement InertPieceTrait for SimpleShape
Right now, this allows simple circles and rectangles to be used as
backs (for occultation). It will also allow them to be used for dice,
when we have those.
It is not convenient to provide a test for this because occultation
methods must be provided in libraries, and we don't have a test
library.
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
Ian Jackson [Mon, 11 Apr 2022 09:45:39 +0000 (10:45 +0100)]
Style: tidy up and use fehler
Empirically, without the let r = ...; r, fehler and if_chain! produce
a type error. That must be why we had the fehler use commented out.
But this way it works.
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
Ian Jackson [Mon, 11 Apr 2022 09:18:12 +0000 (10:18 +0100)]
Extend InertPieceTrait to support multiple faces
We want this because we want to use InertPiece for dice and a die can
have multiple faces, which we want to specify as a single piece. Ie,
the die face images will be an inert version of the die.
No functional change right now - we just move the default() call out
from the trait impls to each of the call sites. In the shapelib
impl (which is the only impl right now) we pass through the face to
the rendering code (which lives in the main PieceTrait impl).
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
Ian Jackson [Mon, 11 Apr 2022 09:03:27 +0000 (10:03 +0100)]
Introduce "inert" terminology for images for occultation
This is much less confusing. In particular, I'm trying to distinguish
the occulted piece from the piece (or trait object) which the occulted
piece provides (to the caller of `load`) for its occulted image.
No functional change other than wording in an error message.
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
Ian Jackson [Mon, 11 Apr 2022 08:50:47 +0000 (09:50 +0100)]
Replace a Mutex which was being an open-coded Lazy
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
Ian Jackson [Sun, 10 Apr 2022 21:40:27 +0000 (22:40 +0100)]
Rename make_svg_defs
This is the thing that generates SVG. That's worth mentioning.
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
Ian Jackson [Sat, 9 Apr 2022 16:05:35 +0000 (17:05 +0100)]
Remove loaded_via_alias
This effectively reverts
707b43736d838436777f53b230e64054ecb244c5.
I have checked that this field is not used anywhere, including in any
relevant serialised output eg via the command listener. As for game
save compatibility, we can simply ignore it on read (and, even go
backwards since it's Option).
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
Ian Jackson [Sat, 2 Apr 2022 14:15:25 +0000 (15:15 +0100)]
Cargo.toml: Update all versions to 1.0.0
Commit made automatically by update-versions.
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
Ian Jackson [Sat, 2 Apr 2022 13:01:12 +0000 (14:01 +0100)]
changelog: Document that this is version 1.0.0
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>