summarylogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.CHANGELOG1079
-rw-r--r--.SRCINFO42
-rw-r--r--PKGBUILD117
-rw-r--r--lix.desktop8
4 files changed, 1120 insertions, 126 deletions
diff --git a/.CHANGELOG b/.CHANGELOG
index 50bf032680fd..10846a13dccf 100644
--- a/.CHANGELOG
+++ b/.CHANGELOG
@@ -1,6 +1,1073 @@
Version history
===============
+0.10.22
+-------
+
+2024-04-17
+
+Fix #427: Reveal trigger areas during play: When you activate the splat ruler,
+you also see trigger areas of gadgets (goals, traps, flingers, water, ...)
+as cyan hollow rectangles.
+
+Fix #487: Whenever Lix saves your user options to `./user/options.sdl`,
+Lix will also save unknown options that you happened to have in your options
+file from past or future Lix versions. This will be helpful in the future
+when you keep different versions in the same tree, e.g., for testing, and
+they're all version 0.10.22 or newer.
+
+Fix #472: In level and replay browsers, you can't simultaneously quit the
+browser and open the deletion confirmation dialog anymore. Before, the bug
+was: You returned to the main menu and still had the deletion dialog open.
+
+Fix tooltip font size. Now, the pause tooltip always shows in small letters.
+Before, the pause tooltip showed in the medium font when the mouse was at the
+screen edge in a scrollable level.
+
+Add three multiplayer maps by geoo: Pachinko (4-7 players),
+Zick-Zack Kunterbunt (4-8 players), Hanabi around the World (4 players).
+
+Reorder the singleplayer level directory: geoo's pack appears alphabetically
+among the other one-author packs.
+
+The Windows build script `win-build.bat` still prefers LDC, but now allows
+to build Lix with any compiler.
+
+
+
+0.10.21
+-------
+
+2024-03-08
+
+Added geoo's new singleplayer pack with 106 levels. They're sorted by theme:
+Wrappy puzzles on cylindrical/toroidal maps, flowy puzzles about crowd control,
+classy large-scale strategic puzzles, loony puzzles about physics curiosities,
+and sketchy outtakes.
+
+Added two new miniatures by geoo: Bridges, and Mini Cellar.
+
+During insert mode, change the tooltip "Replaying. Click to play from here."
+to "Insert Mode: Click to insert." (You're in insert mode while the tweaker
+is open, unless you reconfigure this in the options menu.)
+
+
+
+0.10.20
+-------
+
+2024-02-18
+
+New in-game panel button: Rewind your previous skill assignment. You can then
+click air to erase the assignment, or unpause to let it replay. If there are
+no earlier skill assignments, the level restarts from the beginning.
+This button has no default hotkey; you can assign one in the user options.
+
+Rename the options tab "Replay" to "Game Controls". Moved the splat ruler,
+tooltip, builder queuing, and batter priority options into this tab.
+
+Eye of the Needle (lemforum Hopeless): Fix my backroute. Now, the exit platform
+is thin, you can't mine and then platform to turn there. Eye of the Needle
+is also shorter horizontally.
+
+Fix #479: Fix a crash in the editor. The crash required five ingredients:
+You had to run a debugging version of Lix, the map was cylindrical or toroidal,
+you had many tiles on both sides of the the torus seam, you grouped the tiles,
+and you used the editor's undo feature to undo the grouping across the seam.
+
+Fix #481: In the main menu, print the version of the Allegro DLLs
+detected at runtime.
+
+Change the tree structure of internal images: Now each scalable image has a
+directory, which contains the different scalings (1.png, 1.5.png, 2.png, ...)
+of that image.
+
+
+
+0.10.19
+-------
+
+2024-01-30
+
+Fix #480: The networked game wouldn't start even though everybody was ready.
+The bug was: When a new player joined a room, the existing ready players
+became unready only on the server, not on each client. Now, the server and
+the clients agree that, after a new joiner, everybody becomes unready.
+The fix is client-side and doesn't affect physics. If the server starts
+the game at all, all 0.10.x clients start playing regardless of this fix.
+
+Add Eggs in One Basket, a new multiplayer map by geoo for 3-8 players.
+
+Add Hopscotch, a new miniature by geoo.
+
+Fix entrance order in the 6-player version of Rescue Ranger Trolls.
+
+Remove Cascade Squared 6p and 8p according to Flopsy's recommendation.
+
+Remove a zealous assertion that prevented you from re-entering the options
+menu after you've accidentally set an overly tall resolution, e.g., 300x800,
+when you ran a debug build of Lix.
+
+Update Allegro DLLs to 5.2.9.0 for the Windows 64-bit release.
+
+Rewrite the Windows 32-bit build notes. Offer DLLs/LIBs for building 32-bit
+Windows Lix and for linking with lld-link. (Both DMD and LDC now link with
+lld-link, not with Optlink. I still recommend everybody to choose 64-bit Lix.)
+
+
+
+0.10.18
+-------
+
+2024-01-05
+
+Solobattle: From the singleplayer browser, you can start a multiplayer map
+and you will control all teams (= all colors). Spawn order and timings will
+be as if you played the map with its intended number of players. Hover the
+mouse cursor over lix of different colors to see other teams' skill panels.
+
+Prevent accidental cutting of replays: To cut, you must click where no lix
+are on the map. It's not enough anymore to click on left-facing lix
+while you filter for right-facing lix (via rightward directional select).
+
+In singleplayer, after you nuke, the skill panel shows your remaining skills
+even though you can't assign them anymore. In multiplayer, after you nuke,
+you see zero leftover skills to make it clear that you cannot assign.
+
+When you observe a multiplayer battle, all of your skill buttons are
+unchosen (not highlit). You still can't switch teams, which would be nice.
+
+Hide the Windows command line console when you run Lix after you've built
+Lix from source with DMD. Reason: Newer DMD versions link with lld-link,
+not with optlink, and need different linker flags.
+
+Add over 60 of Flopsy's new multiplayer maps. Remove over 70 weaker maps
+by Flopsy according to Flopsy's own choice.
+
+Fix a backroute in Continuum Hypothesis (lemforum Hopeless).
+
+Fix player counts for Group Therapy and for One for Me, One for You.
+
+Update Catalan translations, thanks to Rampoina.
+
+
+
+0.10.17
+-------
+
+2023-11-21
+
+Reword the lix-identifying panel text when you hover the cursor over a lix.
+Before, when one lix platformed with 9 bricks left, and two lix walked past,
+it read "3 Platformers [9]". Now, it reads: "Lix #7 is platforming [9] + 2 lix"
+
+Remove "(RCF)" from the lix-identifying panel text for the permanent abilities:
+runners, climbers, floaters. We already show permanent abilities directly on
+the main map as little icons above the lix.
+
+Translate skill names. In English, a builder produces the lix-identifying
+panel text "Lix #13 is building [9]", which translates to the German text
+"Lix #13 baut [9]".
+
+Translate keyboard key names. E.g., in German, if you bind the Insert key, the
+keybinding button will read "Einfg". Before, it read "Insert" even in German.
+
+Reword the in-game tooltip "Replaying. To play, click into air."
+to "Replaying. Click to play from here."
+
+Don't show the tooltip "Rewind time or quit" after the single player has nuked.
+In this case, he wants to exit to menu, not rewind.
+
+Don't show tooltips in multiplayer. This works around bug #473: When you have
+both tooltips and the big score board, the tooltips don't erase the score board
+from screen properly. Until we solve the root cause of those drawing/undrawing
+races, let's hide tooltips altogether in multiplayer.
+
+
+
+0.10.16
+-------
+
+2023-10-07
+
+Physics: Fix a bug with walkers in overlapping blocker fields that appears
+only in Lix versions 0.10.13, 0.10.14, and 0.10.15. The bug was: Trap a walker
+between two overlapping blockers on a slope, observe the walker bop up and
+down (0.10.13 through 0.10.15) instead of staying fixed on its height
+(0.10.12 and earlier). This bug triggered an assertion failure in debugging
+builds. This fix reverts the walker behavior to 0.10.12 and earlier.
+
+Fix a crash in the editor: When you copy-pasted a tile on a torus map,
+resulting in an offset copy that went beyond the torus seam, then moved the
+resulting tile, Lix crashed. Now, copy-pasting wraps coordinates correctly.
+
+Enlarge number displays for large resolutions, e.g., 1920x1080. Now, numbers
+won't be abbreviated anymore. The bug was, e.g., that the tweaker displayed
+a four-digit tick count of "...4" instead of "1234".
+
+
+
+0.10.15
+-------
+
+2023-08-30
+
+Fix a performance bug: In insert mode (i.e., by default, when the tweaker was
+open), new assignments would always recompute all physics since the beginning,
+even if nothing needed recomputation. Now, we recompute only as necessary.
+
+Fix #448: Prevent tumblers from repeatedly crying "Ouch" when they're trapped
+in a permanent flinger.
+
+Add user option: Allow blurry zoom. It's on by default. If you deactivate
+this, you force Lix to use only crisp integer zoom factors (1x, 2x, 3x, ...)
+that won't always fit the level to the screen size.
+
+Re-label the tweaker's "<", ">" buttons with "−" and "+". Reason:
+These buttons move assignments to a different tick, not left or right.
+
+Narrow the tweaker to fit more level on the screen.
+
+Allow .mp3 in the music/ directory. This works out of the box on Windows.
+On Linux or Mac, you must build Allegro 5 with the MiniMP3 library to hear
+the .mp3 files that you put in music/.
+
+
+
+0.10.14
+-------
+
+2023-08-14
+
+Hardcode Ctrl+V to paste the copy buffer of the operating system into Lix's
+currently focused text-typing field. You still can't copy text from Lix.
+
+Pre-fill the level author field with your username when you choose
+Create Level in the singleplayer browser.
+
+
+
+0.10.13
+-------
+
+2023-08-08
+
+The tooltip for replaying (click to play) is now at the top of the screen,
+in the top-right corner. Hovering-sensitive toolips are still at the bottom.
+
+Rename Phyu (number of physics updates since the start of play) to Tick
+throughout UI and translations.
+
+Fix reading memory outside of array bounds during the option menu's sound
+previewing. All writes were inbounds, therefore I doubt that this bug has
+ever crashed anybody's Lix.
+
+Fix compilation errors with DMD 2.105.0.
+
+Upgrade the Allegro 5 D bindings to fix compiler warnings from DMD 2.104.0.
+
+Refactor the Walker skill to function without saving and resetting position
+and encounters, and to avoid unnecessary physics map reads. Replay
+verification runs 2 % faster now. All replays in the proof collection appear
+to pass with identical timings as before, that is sufficient proof to me that
+I didn't change physics.
+
+Align the lix' struct to 64-byte boundaries. Replay verification runs another
+1 % faster now.
+
+The physics map stores bytes, not 16-bit integers. Transpose the physics map
+to storing columns, not rows. This appers to neither improve nor worsen
+performance.
+
+Move code for the lix and for the skill hierarchy into src/physics/.
+
+
+
+0.10.12
+-------
+
+2023-06-19
+
+Fix #375: Changing sound/music in the options menu will immediately play an
+example sound or the menu music at the new volume setting. You don't have to
+exit the options menu anymore to test.
+
+Fix #466: When the next level is unplayable, e.g., it lacks hatches, you
+can't run it from the next-level menu. Before, you could, and Lix crashed.
+
+Added four boolean user options: With/without the tweaker, should air clicks
+cancel the replay, and should new assignments insert or cut the replay?
+Without the tweaker, the default remains that both air clicks and new
+assignments cancel the replay. With the tweaker, by default, air clicks do
+nothing and new assignments insert.
+
+During play, the tooltip line is separate from the panel's info bar. Tooltips
+appear over the play area and have a darkened background. I hope that new
+players can now see easily: "Replaying. To play yourself, click into air."
+
+Removed the zoom button from game and editor. Everybody zooms with the mouse
+wheel, and the zoom button would zoom into the mouse cursor on the panel, thus
+oddly fixing a point on the map outside the camera. For now, the game's
+restart button is wider to cover the area of the old zoom button.
+
+Revert mouse trapping to how it was in Lix 0.10.7 and earlier: We trap the
+mouse already on mouseover when the Lix window is active.
+
+Remove the steel tile matt/8x8. This tile had no nub, had no crossed metal
+bars, and looked like geoo's concrete blocks which are earth. Remove it with
+no replacement. We'll look separately at all levels that used it.
+
+Won't Get Fooled Again: Replace important 8x8 steel with a nice-looking tile
+group to make a steel staircase. Physics stay exactly the same.
+
+All Aboard the Pain Train: Remove purely decorative 8x8 steel.
+
+Sympathy for the Lix, Race to the Depths: Remove these multiplayer levels
+with 8x8 steel. Sympathy relied on other players' mistakes. Race was too hard.
+
+Removed an undocumented feature: You could place a file gain.txt into
+music/ to change the volume of tracks.
+
+Fixed compiler warnings from DMD 2.104.0: Change "in ref" to "in".
+
+
+
+0.10.11
+-------
+
+2023-06-04
+
+Offer a user option to choose the splat ruler's snapping distance.
+Set this option to 0 to deactivate snapping altogether.
+
+Make Lix compile again with D compilers older than DMD v2.102.0 from 2023-02.
+In 0.10.10, I silently relied on a compiler bugfix that correctly allows
+indexing associative arrays during @nogc; this needs DMD v2.102.0 or newer.
+
+
+
+0.10.10
+-------
+
+2023-05-27
+
+Fix #452: The search for the next unsolved level works again for when
+the next unsolved level is not the next level. Before, from 0.10.6 through
+0.10.9, the end-of-singleplayer screen showed only the next level.
+
+Fix tooltips: When you hovered over a platformer or builder, the tooltip would
+always instruct you to queue, even if you had, e.g., miner selected in the
+skillbar. Now, the tooltip to queue appears only for the same selected skill.
+
+Tweaker lines have white text when you hover over the corresponding lix.
+
+When you erase an assignment via the tweaker, the tweaker will also erase
+all assignments to the same lix in the same or a future physics update.
+
+Add Kingshadow's Rescue Reduction, a new multiplayer map for 3 through 8
+players that combines Rescue Rangers Double Team with Downward Reduction.
+
+
+
+0.10.9
+------
+
+2023-05-01
+
+Fix radio buttons: It was possible to select multiple radio buttons by
+clicking the squares, not the labels. Now, only one button is ever active.
+
+Add the 6 singleplayer levels from Lemmings Forums's Level Design Contest 27
+by me and geoo in misc/contests/2023/: Bumper Cave, Inside Your Router,
+Pommes Schranke, Rhizome, Hanabi, The Last Shall Be First.
+
+Add Catalan translation of the Lix user interface.
+Thanks for the translation, Rampoina!
+
+Reduced the filesize of the SVG icon data/images/lix_logo.svg from 3.4 MB
+to 30 KB. It looks practically the same. Thanks for re-tracing, Rampoina!
+
+Allow longer description in the level editor's topology menu for wrap options.
+Paint the size warning (level too large can crash 32-bit Lix) in red, possibly
+overlapping the descriptions of the wrap checkboxes when both the description
+and the warning texts are long.
+
+Clarify "Alt+Tab is fast" in the options menu. Now the tooltip says:
+"Switching windows (e.g., with Alt+Tab) works quickly."
+
+
+
+0.10.8
+------
+
+2023-04-15
+
+Don't re-trap the mouse cursor on mere mouseover after the mouse cursor has
+left Lix. To re-trap, you must now click into Lix.
+
+Added one singleplayer level, Cache Lines, in misc/simon/.
+
+Link to the Fedora Lix package by Marcin Zajączkowski on Lix's main readme.
+Thank you for packaging Lix for Fedora!
+
+Switch documentation from HTTP to HTTPS weblinks wherever possible.
+Thanks for the patch, Marcin!
+
+Fixed the new compilation warnings from DMD 2.103.0: Deprecation: alias this
+for classes/interfaces is deprecated. Now, Lix compiles without warnings
+again, even with DMD 2.103.0.
+
+
+
+0.10.7
+------
+
+2023-03-25
+
+Fix #451: In the connection picker of the networking screen, the 3D outlines
+of the buttons for IP address and ports were sometimes mispainted. Now, the
+buttons are drawn correctly.
+
+Radio button options, e.g., for screen mode, show a tooltip per possible choice
+instead of a catch-all tooltip for the entire option.
+
+Don't play music during player name entry on a fresh installation before
+reaching the main menu. Play music only when we enter the main menu.
+The music might be too loud or unexpected, and it's more obvious how to
+exit from the main menu than from the player name entry screen.
+
+Replace "No" with "Cancel" in two dialog boxes: Really delete this level?
+Delete, Cancel. Really overwrite this level? Overwrite, Cancel.
+
+Explain the command-line switches for screen modes in the main readme.
+
+When you run Lix's unittests (`$ dub test`), the tests will scan all installed
+languages in `./data/transl/` and print missing and unnecessary translations.
+to stdout. Such translation issues do not abort or fail the unittests.
+As before, Lix logs during play the missing and unnecessary translation lines
+for your chosen language in the log file `./user/log.txt`.
+
+Use handwritten recoloring code from magic pink to alpha transparency instead
+of the Allegro 5 recoloring function, in hopes of avoiding #431: Magic pink
+won't become transparent on macOS. I doubt that this fixes #431.
+
+
+
+0.10.6
+------
+
+2023-02-04
+
+Fix #453: Added a separate resolution user option (two integers) for hardware
+fullscreen. Now, you can specify a windowed resolution and a hardware
+resolution separately from each other. Before, the same setting applied
+to both windowed mode and hardware fullscreen.
+
+Fix a backroute in Come on Down to My Place, in lemforum.
+
+Fix a backroute in Spin Me Around, in miniatures.
+
+Re-order miniatures for difficulty: Uprank Diodes and The Bottomless Closet.
+
+Added Shed of Presents, a multiplayer map for 2p and 6p.
+
+music/minim-mobius/meadow-sunrise.ogg: Removed wrongly looped initial segment.
+Before, the song started, then restarted after 2 seconds.
+
+Work around a Linux-only bug in Allegro 5.2.8: Software fullscreen failed
+to deduce the desktop resolution. Lix now passes the hardware fullscreen
+resolution user option to Allegro even when entering a software fullscreen.
+Without the bug, Allegro ingores the passed resolution and deduce the desktop
+resolution, but with the bug, you can now achieve the right resolution.
+The user option tooltip still claims that software fullscreen ignores the
+resolution user options because this bug is Linux-only, it's already fixed,
+and the bugfix will ship with the next stable Allegro 5 release.
+
+
+
+0.10.5
+------
+
+2023-01-22
+
+The replay tweaker shows little skill icons instead of the first three letters
+of the assigned skill. This also allowed the tweaker to become narrower.
+
+Whenever you assign one of the following skills with or without directional
+force, the replay will always record a directionally forced assignment:
+Walker, jumper, batter, builder, platformer, basher, miner. Holding
+directional force for these skills is now merely a filter while you hover over
+multiple lix. As before, unless you hold directional force, the replay will
+record unforced assignments of: Permanent abilities, imploder, exploder,
+blocker, digger.
+
+Right-clicking now takes you back to the level browser from the
+end-of-singleplayer screen or from the find-replay-for-level screen.
+
+Redraw matt/underworld/Lava.W.png: The lava's top is now a wobbling surface,
+not a straight line. Physics remain identical.
+
+Lemforum prettiness: Tower of Babel: Corrected lighting on top blocks.
+Added lower layer to central bridge to avoid bridge looking cut off.
+Can't Reach It, Under the Rainbow, The Ring of Fnargl: Add/move stacked lava
+because of the above change to matt/underworld/Lava.W.png.
+
+Removed the spare platformer in One-Way Road to make it easier for Lovely.
+
+Lemforum backroute fixes: Division of Labor: Add extra steel block in the
+central wall, add little triangle at the top of the diagonal shaft.
+Chasm: Add steel in the center. Theresa Falls Up the Stairs: Add second hatch.
+Wait Why is There a Tree: Add a third notch to the top half of the pillar.
+The Last Laugh: Surround the right-hand exit with steel to force solutions
+that use the left-hand exit.
+
+
+
+0.10.4
+------
+
+2023-01-09
+
+Replay insert mode is a new user option. By default, this is off. When it's
+off, assignments during replay cut the replay, then add the assignment, as
+they have always done. If checked, assignments cut only the future of the same
+lix: All assignments to that same lix, and nukes. The replay will keep
+assignments to different lix. You must check this in the options and then it's
+on permanently during play. You can't toggle it during play even though
+that would be useful. Click air to cancel the global future as usual.
+
+The replay tweaker will show nuke actions as "Nuke" in the line. Before, it
+tried to interpret the line as an invalid skill line and showed "Not", the
+first three letters of "Nothing".
+
+Loading a savestate always restores the savestate's replay, unless its past is
+equal to your replay's past and its future is a subset of your replay's
+future. Before, loading a savestate didn't restore the savestate's replay if
+its past was equal to your replay's past, regardless of future, and that made
+it harder to treat the savestating functionality as a stash for one replay.
+
+Radio-button options show a filled circle in the chosen box, not a checkmark.
+
+When you haven't bound a hotkey to one of the functionalities of a two-task
+button such as fast-forward, the button still showed a slash "/" at the start
+or end of its hotkey reminder. Now, the slash only appears when both functions
+have hotkeys.
+
+Fixed backroutes in lemforum: Alien Invasion: Thinner starting platform. All
+Aboard the Pain Train: Reduce steel in the central block. Down Among the Dead
+Lix: Move one platform near the bottom, it still allows my backroute from
+2022-12-22. The Circular Ruins: Lower block below the half-column. 6 Gaps, 5
+Builders: Single builders can't cross two gaps anymore and you must stretch.
+Down Among the Dead Lix: Fix a backroute by moving a lower platform right
+and making it smaller for style. The Hotel in Hell: Expose the top-left
+squisher. Add laser beam to prevent building over that squisher.
+
+Improved lemforum levels: Recycling Plant: Removed a single leaf to reduce
+precision when using the flinging gadget. Put Your Lix on Ice: Final miner
+stops more easily by herself. Climb to Freedom: Added a climbable segment to
+the rightmost climber-turning obstacle to show that climbing is a permanent
+skill. This is a Stickup: Moved steel to reduce precision in initial crowd
+control. Minimalism, 100% Built by Lixes: Removed some of the unused empty
+space. Theresa Falls Up the Stairs: Corrected the lighting of the top-right
+steel. Alien Abduction: Match graphical style of the fixed Alien Invasion.
+
+Reordered lemforum levels: Upranked Ferry Tale and You'll Get Over It from
+Lovely to Quirky. Downranked 6 Gaps, 5 Builders and Time to Change the Road
+from Quirky to Lovely. Reordered several levels within Quirky.
+
+
+
+0.10.3
+------
+
+2022-12-21
+
+Fix #428: Update the next-level cache after solving. Before, there was the
+following bug: Have three unsolved singleplayer levels -- A, B, and C -- in
+this order. Enter A, exit to level browser, solve B, then solve A. Lix would
+then offer B as unsolved, even though you've solved B. Now, the end-of-level
+screen correctly offers B as solved and C as next unsolved level.
+
+The end-of-singleplayer screen, when you choose to play the previous level
+that you've just played, starts that previous level with your replay playing.
+You can view your solution again or fix your attempt. (To avoid the replay,
+interrupt it immediately when it starts playing, or instead start the previous
+level from the singleplayer browser.)
+
+Fix a backroute in mobius's Five for Fighting in lemforum/Vicious.
+
+In lemforum/Lovely: Diamond Dash: Replace imploders and blockers with walkers.
+The Borderland: Raise save requirement from 30/60 to 40/60 to require saving
+lix from both hatches. Reorder Climb to Freedom earlier to avoid two
+successive snow levels. Reorder Beneath the Lab to after Solar Eclipse.
+
+
+
+0.10.2
+------
+
+2022-12-13
+
+Fix #440: Replays load/save handicap. Old replays contain no handicap
+information. Newly created replays will have handicap information and also
+load and play it back correctly.
+
+Fix #386: Allow to scroll to the very right edge even when the replay tweaker
+is open. The bug was: Open the replay tweaker. You were not able to scroll all
+the way to the right side of the map. You had to zoom out to see the entire
+map, or zoom in deeply enough to make the tweaker obscure less of the level.
+This was because the map only anticipated the normal panel on the screen, not
+the tweaker. The map expected to be able to draw all the way to the right edge
+of the screen. Now, even while the tweaker is open, you can scroll such that
+the right end of the map is visible to the left of the tweaker.
+
+Fix how the tweaker was appearing for a single frame on level start. This bug
+has been in Lix for 4 years, but we never realized it because the old tweaker
+didn't re-focus cameras when showing/hiding. Now, the tweaker starts hidden.
+
+Backroute fixes to lemforum levels: Cornerstone, The Last Laugh,
+Tinker Tailor Soldier Lix, Ferry Tale.
+
+Clarify and beautify some more lemforum levels: Compression Method 2, Tapestry,
+To Destroy Is to Construct, Narbacular Drop, The Road Goes Ever On (and both
+of its repeats). Renamed mobius's Conundrum to Get Behind Me, Satan.
+
+Add Everybody Wins, a multiplayer map by geoo for 4 through 8 players.
+
+End-of-level screen says on its bottom button: Back to Level Browser.
+Before, we had: Back to the Browser. That wasn't clear. Not everybody
+considers the browser a browser.
+
+Removed pre-2018 options/trophy format support. If you're updating from Lix
+versions older than 5 years, you'll have to reconfigure your hotkeys.
+
+
+
+0.10.1
+------
+
+2022-11-27
+
+The replay browser shows the filename of the currently selected replay in the
+nameplate below the preview, in addition to the existing fields (level name,
+player, pointed-to level). If the replay filename is too long, e.g., because
+you run Lix in a tall (= non-widescreen) resolution, the nameplate shows only
+the hinder part. This way, you'll see both the frontal part of the filename
+in the file picker on the left-hand side and the hinder part of the filename
+in the nameplate on the right-hand side.
+
+Added button to flip tiles vertically in the editor, in addition to the
+existing button that mirrors horizontally. No hotkey is bound by default
+to the vertical flip. You may assign a hotkey yourself.
+
+Hotkey reminders in button corners appear in lighter text than before,
+but still slightly darker than regular text.
+
+In the options menu, moved some menu hotkey options further right on the
+screen, to not overlap with the menu color pickers' description texts
+on tall (= non-widescreen) resolutions.
+
+In geoo's multiplayer map Ghetto Party, replaced imploders with exploders.
+This is funnier and stays true to the original two-player Ghetto Wars.
+
+Pruned empty space around Segmentation Fault in lemforum/Daunting.
+
+
+
+0.10.0
+------
+
+2022-10-23
+
+The server allows 0.9 and 0.10 in separate rooms. Decide with your friends
+whether and when to update as a group to Lix 0.10.
+
+Both 0.9 and 0.10 players can chat with each other in the server's lobby. The
+0.10 client will see both 0.9 and 0.10 rooms, and print a console error when
+you attempt to join a 0.9 room. Since 0.9 has no such functionality, the
+server will not show 0.10 rooms to 0.9 players at all; instead, the server
+will write a chat message to those 0.9 players in the lobby if any 0.10 rooms
+exist, suggesting to update to 0.10.
+
+Renamed the server executable from server to lixserv.
+
+Added handicap for multiplayer games. If you're too strong for your group,
+consider to click the handicap icon with the unbalanced scales in the game
+room. You can choose fewer initial lix, fewer skills, a spawn delay, fewer
+points per lix saved, or any combination of these four handicap types.
+
+Fix #265: Allow simultaneous exiting. When you're playing a race map and reach
+the exit at the same time as one or more different teams, all teams will score.
+Before, only the red team would score.
+
+Fix #311: Top and bottom of maps are hollow. Terrain checks beyond those edges
+will not behave as if the edge row's terrain extended infinitely. Now, only the
+left and right edges of the level extend terrain in this way, not all four
+edges. Staircases built to the deadly ceiling will kill the builder as before,
+but now all following walkers will also leave the level and die.
+
+Adapted the singleplayer levels Cry for Me, Baywatch, and Walking in a Winter
+Wonderland to work well with the hollow ceiling.
+
+Allow ability assignments (climber, floater, runner) to blockers. For now,
+these assignments have low priority; we can raise the priority after
+playtesting as a UI change without changing physics.
+
+Fix blocker dancing: Now, walkers (and other non-blockers) don't move when
+they're both in a left-forcing blocker field and in a (different blocker's)
+right-forcing blocker field. Before, walkers would move sideways through the
+fields, turning each phyu. This looked like dancing.
+
+Fix #266: Grant batters extra backwards range against blockers. We keep
+forward batter range vs. blockers as in 0.9, even though it's a lot of forward
+range so the batter sprite needn't overlap the blocker to still bat the
+blocker. Nobody has complained so far, and it's nice to bat blockers without
+awkward precision. We keep the batter range against other activities.
+
+Half-fixed #397: The faller's distance in pixels fallen will not overflow
+the 32-bit int anymore. I didn't fix the overflow for physics updates yet, you
+can still play longer than what fits into the 32-bit int that counts physics
+updates (4.5 years at normal speed, or 46 days at turbo-fast-forward).
+
+Moved the frogs' trigger areas downward by 1 pixel, so that the coordinates
+are divisble by 2. No levels broke from this, not even Las Ranas Hermanas.
+
+Fix #410: Removed spike at top of both matt/beach/04 tiles (day and night).
+Before, both tiles had identical masks; now, both tiles still have identical
+masks, although the mask is different than before. There is no odd prong
+at the top right of those tiles anymore.
+
+Fix #414: Fixed transparency/air pixels in earth.png from the Oriental set.
+The top row of pixels was not fully transparent (that would be 0 % alpha);
+it had an estimated 5 % alpha. Lix treats that as solid. Walkers were walking
+over solid, nearly invisible pixels. Now, earth.png has full transparency
+above the earth. No levels broke from this change.
+
+Fixed #322: Don't wrap during tile group construction: Now, when you load a
+tile group on a small torus map, Lix will construct the group without wrongly
+wrapping the group's elements before grouping. Only when Lix has fully
+constructed the group tile, Lix will insert the group into the torus level.
+
+
+
+0.9.48
+------
+
+2022-10-15
+
+Don't cap level search results at 18, but show all results. Downside: Now, I
+expect the search to be slow when you enter the first one-two letters. We'll
+see what is worse and can still improve the search in the future.
+
+Always return to lobby after playing multiplayer with a single tribe, even
+when that tribe hasn't fulfilled the hidden save requirement from
+singleplayer. Lix has never properly supported 1-tribe multiplayer, but Lix
+has never explicitly disallowed it either.
+
+The connection picker in the networking menu will now connect when you press
+the generic Okay hotkey, in addition to the networking menu hotkey.
+
+Fixed option dialog's help text for the username option: All translations
+explained ./data/user/yourname.txt, which is out of use since 2017. Now,
+all translations explain ./user/options.sdl, the correct save file.
+
+Added FreeDesktop resources in ./data/desktop/ by Matthias Mailänder. Thanks!
+I don't know yet where to put such resources (that aren't needed directly by
+Lix while Lix is running) in the future; ./data/ is catch-all for now.
+
+
+0.9.47
+------
+
+2022-08-11
+
+Add Swedish translation of the Lix user interface by Sanchez. Thanks!
+
+Fix #387: Update skill panel on tweak. Now, after shifting a skill assignment
+forward or backward by a single frame in the replay tweaker, the skill panel
+updates all skill buttons' counts accordingly. This matters when some skills
+assignments have become illegal in the now-edited replay.
+
+
+
+0.9.46
+------
+
+2022-06-25
+
+Added geoo's new multiplayer maps, including the two asymmetric maps
+Uphill Battle and Ivory Tower. Updated some of geoo's maps:
+Fixed the drop straight into exit pit in Rescue Ranger Trolls.
+Added block to default version of Ghetto Party. Minor other changes.
+
+Added Kingshadow's new multiplayer levels. Updated Kingshadow's levels, e.g.,
+added a missing trap to Straight & Curved 4p.
+
+Prevent infinite fallers at the sides of Flopsy's Rescue Plan 5p by
+narrowing the map horizontally to the existing terrain.
+
+Renamed my old 2p map Rescue Rangers to Fry-Day to avoid a name collision with
+the popular maps Rescue Ranger Trolls and Rescue Rangers Double Team.
+
+Fix #434: Always topology-wrap newly inserted pieces in the editor to avoid
+running into some strict assertions in a debug build. There should have been
+no bug here in release builds. Improved some assertion texts.
+
+
+
+0.9.45
+------
+
+2022-05-21
+
+Added many multiplayer levels by Flopsy, including Krypton Factor race.
+
+Added multiplayer levels by Kingshadow: Straight & Curved,
+Marble Puzzle League, Spiral Spyfall, The Ascending Lix Scenario,
+Tricky Breakthrough.
+
+Added tags ($TAG lines in levels) to several maps by Flopsy.
+
+Fix lagging client in a 10-hour netgame. This was an esoteric bug that never
+surfaced in normal usage. When the same networking game (not netplay session
+or server run, but really individual game; what happens after you click
+"ready" in the lobby) ran for over 10 hours, the client would stop
+updating at the normal speed of 15 physics updates per second, and instead run
+at 10 frames per second.
+
+Make Lix compile with the newly released DMD 2.100.0.
+
+Mention FreeGameDev IRC channel #lix in the main readme. QuakeNet #lix
+is still the development channel. I still recommend QuakeNet #lix to find
+players, with FreeGameDev #lix as an alternative.
+
+
+
+0.9.44
+------
+
+2022-03-03
+
+Fix a memory-corrupting bug when sending chat messages.
+I introduced this bug in 0.9.43.
+
+Fix #432: Don't resave watched multiplayer replays. The bug was: After the
+replay, we entered the end-of-singleplayer dialog, and this dialog always
+re-saved the watched replay as a new multiplayer replay. Now, we directly
+return to the replay browser. The end-of-singleplayer dialog doesn't appear
+and doesn't save a duplicate.
+
+
+
+0.9.43
+------
+
+2022-03-29
+
+Fix server-side permutation bug: In 0.9.42, the server re-rolled the
+permutation of starting points for every player. This desynched the maps --
+unless you were only playing 2-player on perfectly symmetrical maps and never
+used directional force.
+
+Don't send up to 300 nullbytes on short chat packets, send only the necessary
+bytes. Keep max chat length at 300 UTF-8 code units.
+
+In the lobby, sort the list of players. First criterion: Players sort higher
+than observers. Second criterion: Red sorts higher than orange, yellow, ...
+Third criterion: Within each color, sort by player name. Ready/unready doesn't
+affect sorting. It's easier now to see which/how many colors are in use, but
+I'll leave open github issue #407: Color buttons in lobby, show current usage.
+
+Disable the expensive level-drawing unittest that also didn't clean up
+its file in ./export/.
+
+macOS: Rely on pkg-config according to Allegro's documentation here:
+https://github.com/liballeg/allegro5/blob/master/README_pkgconfig.txt
+Before, on macOS ARM64, ld didn't find the Allegro libs even with pkg-confic
+installed; see github issue #430.
+
+Remove obsolete build documentation ./doc/build/allegro5.txt and
+cross-reference more clearly between other files in ./doc/build/.
+
+
+
+0.9.42
+------
+
+2022-02-25
+
+Don't focus the IP address entry field in the lobby when you select "connect
+to somebody else". The focusing led to a bug that is now fixed: The field
+would even be unhidden and focused whenever the lobby window reappeared after
+a game, when you were already connected and in a room.
+
+Alleviated enet versioning mismatch: derelict-enet offers D bindings only for
+enet 1.3.15, but the binaries of enet 1.3.16 or the current enet 1.3.17 have
+differently-sized struct ENetPeer. Now, the Lix server computes the struct
+size at runtime, allowing to run with all enet binaries >= 1.3.13.
+
+Fixed a theoretically possible, although unlikely, memory leak in networking.
+
+Fixed a linker warning about max!(int, int). Now, Lix's code itself generates
+zero warnings again.
+
+Refactored the server-side networking code. Rooms carry their own logic. This
+will help in the future to support version restrictions per room.
+
+Fixed DMD 64-bit build on all operating systems by avoiding obscure usercode
+that crashes DMD.
+
+Linux build notes: Added workaround for LDC running out of stack space. You
+can raise the stack size in the current shell with: ulimit -s 16384
+
+Windows 32-bit build notes: Added DLL download for LDC-compatible 32-bit
+libraries.
+
+Removed note from April 2020 in the readme about compilers before LDC 1.21;
+compilers that old aren't prevalent anymore.
+
+
+
+0.9.41
+------
+
+2022-01-06
+
+Support tags in level files to help organize the multiplayer levels. Levels
+can contain zero or more tags, one per line. Edit tags with a text editor; we
+can work towards better editing support in Lix itself in the future. Example:
+$TAG mytag
+
+The editor loads and saves tags, but doesn't yet display them anywhere and
+doesn't offer to edit them. The level browsers don't print tags anywhere
+either yet.
+
+The level search (in the singleplayer or multiplayer browser) will find
+tags, but you have to enter the exact tag completely. Half-words that
+appear inside tags do not find that tag. (I'm not yet sure if this behavior
+is best; we can change it.)
+
+
+
+0.9.40
+------
+
+2021-12-13
+
+Added configurable hotkeys to play next levels from the end-of-singleplayer
+screen. Default is F1 to replay the same level, Space to play the next level,
+F to play the next unsolved level. There is no default hotkey to save the
+replay manually; you can configure it.
+
+Hotkey reminders on buttons are printed in slightly darker text. They're
+still brighter than the button itself, but darker than the main button text.
+
+Fix #417: The editor shows all teams per gadget. Example: 4 players A, B, C, D
+and the map has 2 exits. Before 0.9.40, the editor printed on the exits: A, B.
+Now, the editor print on the exits the outcome of distributing the 4 players
+round-robin to the exits: AC, BD.
+
+Clarify tile group names in the documentation doc/formats/level.txt: Groups
+can have any name, not necessarily only a number. Since I don't have support
+in the program for copying tile groups between levels, you can at least rename
+the groups in one level, e.g, by search-and-replace, then copy-paste them into
+the second level, and have no name clashes.
+
+Fixed exits order in Tunnel of Love 6p. There were 7 exits in a 6-player map,
+leading to apparent removal of a necessary exit in play. Now it has 6 exits.
+
+Added new multiplayer maps by Flopsy: The Lix and the Saboteurs 4p, 6p, 8p.
+
+Clarify documentation on tile groups in doc/format/level.txt: Tile groups
+can have any names. When you copy tile groups by hand between levels, you
+can first rename them with text replacement.
+
+Allow warnings when building Lix. This circumvents a warning in Phobos that
+would otherwise abort the build: Duplicate symbol for max!(int, int).max,
+_D3std9algorithm10comparison__T3maxTiTiZQjFNaNbNiNfiiZi.
+
+
+
+0.9.39
+------
+
+2021-10-12
+
+Added a dedicated end-of-singleplayer screen to show stats of the finished
+attempt, to offer the immediate next level, and to offer the next unsolved
+level in case the player has already solved the immediate next level.
+
+Darkened the labels "by" and "Goal:" in front of level nameplates in
+the browser and in the end-of-level screen. They're now darker than the
+normal text color. Title, author and goal stand out better in their normal
+text color now.
+
+Re-added 3 levels -- Fill the Floor, Interval Training, Chaos Theory --
+to single/clam/Outtakes. Fill the Floor and Interval Training originally
+needed variable spawn intervals during play; now, they employ floaters and
+runners at fixed spawn intervals. Chaos Theory originally needed the nuke
+to solve; now, it employs manually assigned exploders to fling.
+
+Updated the Lix source code to comply with the future meaning of the "in"
+keyword. Updated Lix for package optional 1.3.0 instead of 0.6.3.
+
+
+
+0.9.38
+------
+
+2021-06-27
+
+Windowed mode at 1280x720 is now the default on running Lix for the very first
+time. Before, the default was software fullscreen a.k.a. fullscreen window.
+
+Smaller widescreen resolutions such at 1280x720 that would barely fail to pick
+2x for the skill panel icons (instead of the tiny 1x) will get slightly higher
+panel to accomodate the better-looking 2x skill icons.
+
+Adjusted text vertical offset to vertically center text on buttons better at
+1280x720. 1280x800 is still okay, text is now slightly too high here. The text
+positioning is already full of hacks and compromises, anything better either
+needs more hacks or a clean do-over. I feel like a 90's website designer.
+
+The main menu preserves the background's aspect ratio. To fill a screen that
+is not 4:3, it crops the background's sides.
+
+Revenge of the Giant Crab (2p): Added decoration, walkers 10->30, overtime
+30->90 seconds.
+
+Fix #424: Always show the level title in the lobby under the graphical preview,
+even when we return from a netgame.
+
+Fix #423: De-duplicate the multiplayer level tree, as reported by Dullstar.
+I had extra copies of Along the Fabrics of Your Clothing in the 8p directory.
+
+Updated Allegro DLLs to Allegro 5.2.7.1. You can check what Lix uses at
+runtime with Lix's command-line argument: --allgero-version
+
+I build the 32-bit Windows release with LDC, not with DMD. LDC generates
+faster-running machine code, exactly what we want for a release version. Tell
+me in case you run into any problems. (64-bit Windows release has always been
+built with LDC and it still is.)
+
+During compilation, Lix prints target architecture, OS, and compiler.
+
+Fix deprecations for DMD 2.097.0: In the source code, the "body" keyword is
+finally deprecated. Converted the entire codebase to the "do" keyword in front
+of function bodies. Added "static import std.stdio;" to access std.stdio.File
+in Lix's file.filename.base.
+
+Documentation: src/icon/readme.txt has CRLF line endings, to be readable in
+Windows Notepad. (Documentation should have CRLF endings, code should have LF
+endings.) Removed note in the 32-bit DMD Windows build notes about NuGet libs,
+DMD 32-bit doesn't play well with them.
+
+The build documentation points to new archives (lix-dlls-libs-dmd32.zip,
+lix-dlls-libs-ldc32.zip, lix-dlls-libs-win64.zip) because the .lib files
+can be incompatible between compilers.
+
+
+
0.9.37
------
@@ -37,7 +1104,7 @@ with LDC.
The Windows 64-bit build notes point to LDC's multilib release instead of to
the pure 64-bit release. You can use LDC's installer or LDC's 7z download. The
main difference is that LDC's lib/ dir is now called lib64/. Updated
-http://www.lixgame.com/dow/lix-dlls-libs-win64.zip with the new directory name
+https://www.lixgame.com/dow/lix-dlls-libs-win64.zip with the new directory name
lib64/ instead of lib/.
Documented the level format in doc/formats/level.txt. Documented in the
@@ -51,7 +1118,7 @@ NuGet.
2021-02-24
-Add a whopping 66 multiplayer maps by Flopsy, including Perfect Situation
+Add a whopping 66 multiplayer maps by Flopsy, including Perfect Situation.
Fix #413: The new-level button in the editor will now ask for data loss
before clearing the map and clearing the undo buffer. You can click Save,
@@ -1135,7 +2202,7 @@ remaining players started a game. Still needs field testing.
2017-11-18
-Music: Download http://www.lixgame.com/dow/lix-music.zip and extract
+Music: Download https://www.lixgame.com/dow/lix-music.zip and extract
into your Lix root dir. You can create additional subfolders in ./music/
and put your own tracks inside -- ideally as .ogg, .mod, .xm, .it, or .s3m.
Lix will play a random track per level.
@@ -1438,7 +2505,7 @@ Right", which is almost too long but still fits well.
Removed lemforum/wip-0.7/ and images/geoo/construction/chain1.png, the
now-obsolete tile because its size doesn't conform to multiples of 8.
-[url=http://www.lixgame.com/etc/unused-levels-0.7.zip]Download unused levels
+[url=https://www.lixgame.com/etc/unused-levels-0.7.zip]Download unused levels
and chain1[/url].
Removed simon/wood/ tileset. I've replaced these tiles with Matt's wooden
@@ -1954,7 +3021,7 @@ fitting the level's width or height to screen.
2017-03-02
Fewer zooms are considered similar. This addresses Nepster's concerns:
-http://www.lemmingsforums.net/index.php?topic=3128.msg63116#msg63116
+https://www.lemmingsforums.net/index.php?topic=3128.msg63116#msg63116
Fix #169: I validate all user files for good UTF-8 before calling Phobos.
@@ -2539,7 +3606,7 @@ to mouse clicks on the checkbox itself.
Physics change: We don't check for physics near the eye, which would have
depended on the spritesheet. Instead we check at (foot) + (0, y), where
y is 0, -4, -8, and -12. This check is independent from the current lix job.
-Rationale: http://www.lemmingsforums.net/index.php?topic=2678
+Rationale: https://www.lemmingsforums.net/index.php?topic=2678
0.2.49
------
diff --git a/.SRCINFO b/.SRCINFO
index 49c776224642..9a52e4912a3f 100644
--- a/.SRCINFO
+++ b/.SRCINFO
@@ -1,47 +1,23 @@
pkgbase = lix
pkgdesc = An action-puzzle game inspired by Lemmings
- pkgver = 0.9.37
+ pkgver = 0.10.22
pkgrel = 1
- url = http://www.lixgame.com/
+ url = https://www.lixgame.com/
changelog = .CHANGELOG
arch = i686
arch = x86_64
license = custom:CC0
makedepends = git
- makedepends = ldc
+ makedepends = d-compiler
makedepends = dub
+ makedepends = jq
depends = allegro
depends = enet
depends = hicolor-icon-theme
- depends = liblphobos
- source = lix-0.9.37.src.tar.gz::https://github.com/SimonN/LixD/archive/v0.9.37.tar.gz
- source = lix-music-1.zip::http://www.lixgame.com/dow/lix-music.zip
- source = lix.desktop
- source = lix-allegro::git+https://github.com/SiegeLord/DAllegro5.git#tag=v4.0.4+5.2.0
- source = lix-bolts::git+https://github.com/aliak00/bolts.git#tag=v0.7.1
- source = lix-derelict-enet::git+https://github.com/DerelictOrg/DerelictENet.git#tag=v4.2.0
- source = lix-derelict-util::git+https://github.com/DerelictOrg/DerelictUtil.git#tag=v3.0.0-beta.2
- source = lix-enumap::git+https://github.com/rcorre/enumap.git#tag=v0.4.2
- source = lix-libinputvisitor::git+https://github.com/Abscissa/libInputVisitor.git#tag=v1.2.2
- source = lix-optional::git+https://github.com/aliak00/optional.git#tag=v0.6.3
- source = lix-sdlang-d::git+https://github.com/Abscissa/SDLang-D.git#tag=v0.10.6
- source = lix-silly::git+https://gitlab.com/AntonMeep/silly.git#tag=v1.0.2
- source = lix-taggedalgebraic::git+https://github.com/s-ludwig/taggedalgebraic.git#tag=v0.11.18
- source = lix-unit-threaded::git+https://github.com/atilaneves/unit-threaded.git#tag=v0.7.55
- sha512sums = 8b8faa451010b36a461075e9f7c7117c0af7f06af422e2ac207efd1c98e814dc20b23a1dd16cb6994c86354a11aa0e99f355ede299e0a46455f914f2ddab0ea5
- sha512sums = 37349c98b739ea43c25137dd03865f1c9c41eec91e5edc109afd9d50ce3871bd0c7f63c3f3599a47bb4ef52f5bfd14e034010de0ac2aec5a9c0c83eaf0b89425
- sha512sums = 375b1439d9398371a3f58a92bfc0901b86bd89140aae431c7d9405bd2fb36ebcdb22b2686fea72d88b23a4ab94b138b4d742d8fd2965d8ec0542d2f8f64ed0c2
- sha512sums = SKIP
- sha512sums = SKIP
- sha512sums = SKIP
- sha512sums = SKIP
- sha512sums = SKIP
- sha512sums = SKIP
- sha512sums = SKIP
- sha512sums = SKIP
- sha512sums = SKIP
- sha512sums = SKIP
- sha512sums = SKIP
+ depends = d-runtime
+ source = lix-0.10.22.src.tar.gz::https://github.com/SimonN/LixD/archive/v0.10.22.tar.gz
+ source = lix-music-1.1.zip::https://www.lixgame.com/dow/lix-music.zip
+ sha512sums = 244f148a2dcf428a5009bd346860cc91113b3a025769f2f18ce37a67d8832b6afec16741dce2956ffd2920812d8bac5189124c3be9394842addc29479295558e
+ sha512sums = 280fd25a479ac8dd24475b014234270a12ab34edca7fb2f7ce4b768259111b1e7626d3ba37ac13d810f0653d23d7c9f212776e94d2c0b31a0de580864771ce9f
pkgname = lix
-
diff --git a/PKGBUILD b/PKGBUILD
index 9242a2d2e788..d849d7f4ab65 100644
--- a/PKGBUILD
+++ b/PKGBUILD
@@ -1,123 +1,82 @@
# Maintainer: Lucki <https://aur.archlinux.org/account/Lucki>
# Contributor: Carl Reinke <mindless2112 gmail com>
-# shellcheck disable=SC2034,2154,2148
+# shellcheck shell=bash
+# shellcheck disable=SC2034,SC2154
pkgname=lix
-pkgver=0.9.37
+pkgver=0.10.22
pkgrel=1
changelog=.CHANGELOG
-source=("$pkgname-$pkgver.src.tar.gz::https://github.com/SimonN/LixD/archive/v$pkgver.tar.gz")
-sha512sums=('8b8faa451010b36a461075e9f7c7117c0af7f06af422e2ac207efd1c98e814dc20b23a1dd16cb6994c86354a11aa0e99f355ede299e0a46455f914f2ddab0ea5')
+source=("$pkgname-$pkgver.src.tar.gz::https://github.com/SimonN/LixD/archive/v$pkgver.tar.gz"
+ "$pkgname-music-1.1.zip::https://www.lixgame.com/dow/lix-music.zip")
+sha512sums=('244f148a2dcf428a5009bd346860cc91113b3a025769f2f18ce37a67d8832b6afec16741dce2956ffd2920812d8bac5189124c3be9394842addc29479295558e'
+ '280fd25a479ac8dd24475b014234270a12ab34edca7fb2f7ce4b768259111b1e7626d3ba37ac13d810f0653d23d7c9f212776e94d2c0b31a0de580864771ce9f')
_gitname=LixD
pkgdesc="An action-puzzle game inspired by Lemmings"
arch=('i686' 'x86_64')
-url="http://www.lixgame.com/"
+url="https://www.lixgame.com/"
license=('custom:CC0')
-depends=('allegro' 'enet' 'hicolor-icon-theme' 'liblphobos')
-makedepends=('git' 'ldc' 'dub')
-_dubv=( "4.0.4+5.2.0" # allegro
- "0.7.1" # bolts
- "4.2.0" # derelict-enet
- "3.0.0-beta.2" # derelict-util
- "0.4.2" # enumap
- "1.2.2" # libinputvisitor
- "0.6.3" # optional
- "0.10.6" # sdlang-d
- "1.0.2" # silly
- "0.11.18" # taggedalgebraic
- "0.7.55" # unit-threaded
- )
-
-# let makepkg handle dub packages
-# These have to be git clones, otherwise dub isn't able to pick them up with the correct version later on
-# no git, no version field, assumed ~master
-# https://dub.pm/commandline.html#add-path
-source+=( "$pkgname-music-1.zip::http://www.lixgame.com/dow/lix-music.zip"
- "$pkgname.desktop"
- )
-sha512sums+=( '37349c98b739ea43c25137dd03865f1c9c41eec91e5edc109afd9d50ce3871bd0c7f63c3f3599a47bb4ef52f5bfd14e034010de0ac2aec5a9c0c83eaf0b89425'
- '375b1439d9398371a3f58a92bfc0901b86bd89140aae431c7d9405bd2fb36ebcdb22b2686fea72d88b23a4ab94b138b4d742d8fd2965d8ec0542d2f8f64ed0c2'
- )
-source+=( "$pkgname-allegro::git+https://github.com/SiegeLord/DAllegro5.git#tag=v${_dubv[0]}"
- "$pkgname-bolts::git+https://github.com/aliak00/bolts.git#tag=v${_dubv[1]}"
- "$pkgname-derelict-enet::git+https://github.com/DerelictOrg/DerelictENet.git#tag=v${_dubv[2]}"
- "$pkgname-derelict-util::git+https://github.com/DerelictOrg/DerelictUtil.git#tag=v${_dubv[3]}"
- "$pkgname-enumap::git+https://github.com/rcorre/enumap.git#tag=v${_dubv[4]}"
- "$pkgname-libinputvisitor::git+https://github.com/Abscissa/libInputVisitor.git#tag=v${_dubv[5]}"
- "$pkgname-optional::git+https://github.com/aliak00/optional.git#tag=v${_dubv[6]}"
- "$pkgname-sdlang-d::git+https://github.com/Abscissa/SDLang-D.git#tag=v${_dubv[7]}"
- "$pkgname-silly::git+https://gitlab.com/AntonMeep/silly.git#tag=v${_dubv[8]}"
- "$pkgname-taggedalgebraic::git+https://github.com/s-ludwig/taggedalgebraic.git#tag=v${_dubv[9]}"
- "$pkgname-unit-threaded::git+https://github.com/atilaneves/unit-threaded.git#tag=v${_dubv[10]}"
- )
-sha512sums+=( 'SKIP'
- 'SKIP'
- 'SKIP'
- 'SKIP'
- 'SKIP'
- 'SKIP'
- 'SKIP'
- 'SKIP'
- 'SKIP'
- 'SKIP'
- 'SKIP'
- )
+depends=('allegro' 'enet' 'hicolor-icon-theme' 'd-runtime')
+makedepends=('git' 'd-compiler' 'dub' 'jq')
+
+prepare() {
+ cd "$_gitname-$pkgver" || exit 1
+
+ # Iterate thorugh the required packages and versions to fetch them in advance
+ # Read from dub.selections.json and print them as "package,version"
+ for line in $(jq -r '.versions | keys[] as $k | "\($k),\(.[$k])"' <dub.selections.json); do
+
+ # Split each dependency at the ','
+ IFS=',' read -ra dep <<< "$line"
+
+ # Fetch each package at the required version
+ dub fetch --cache=local "${dep[0]}@${dep[1]}"
+ done
+}
_build() {
_r=0
- # add local dependencies to search path
- dub add-path "$srcdir"
+ # 2022.02.26
+ # 15:22 <@SimonN> It's possible that it's already enough to raise the stack size in the current shell: ulimit -s 16384
+ # 15:22 <@SimonN> See also: https://github.com/ldc-developers/ldc/issues/3913
+ # 15:26 <@SimonN> Yes, very high chance that the following will fix/workaround: Execute "ulimit -s 16384" in the same shell that will then run dub. I.e., we double the stack size, assuming "ulimit -s" printed 8192 before; it does that for me in new shells.
+ ulimit -s 16384
dub "$@" \
+ `# Do not resolve missing dependencies before building` \
+ --nodeps \
`# ensure dub stays outside the users home directory:` \
--cache=local \
`# Runs multiple compiler instances in parallel, if possible:` \
--parallel \
`# Forces a recompilation even if the target is up to date:` \
--force \
- `# Specifies the compiler binary to use:` \
- --compiler=ldc \
`# force FHS compatibility:` \
- --build=releaseXDG \
- `# Save result code for later when failed:` \
- || _r="$?"
-
- # remove local dependencies from search path so dub won't find them
- # later again
- dub remove-path "$srcdir"
-
- # removes any cached metadata like the list of available packages
- # and their latest version
- dub clean-caches
-
- if [[ "$_r" != 0 ]]; then
- # dub failed so we also fail after we removed the local dependencies
- return "$_r"
- fi
+ --build=releaseXDG
}
build() {
- cd "$_gitname-$pkgver" || exit
+ cd "$_gitname-$pkgver" || exit 1
_build build
}
check() {
- cd "$_gitname-$pkgver" || exit
+ cd "$_gitname-$pkgver" || exit 1
_build test
}
package() {
+ cd "$_gitname-$pkgver" || exit 1
+
# install application entry
install -Dm644 \
`# SRCFILE:` \
- "$pkgname.desktop" \
+ "data/desktop/com.lixgame.Lix.desktop" \
`# DSTFILE:` \
"$pkgdir/usr/share/applications/$pkgname.desktop"
- cd "$_gitname-$pkgver" || exit
-
# install application entry icon
install -Dm644 \
`# SRCFILE:` \
diff --git a/lix.desktop b/lix.desktop
deleted file mode 100644
index 748937dbf72d..000000000000
--- a/lix.desktop
+++ /dev/null
@@ -1,8 +0,0 @@
-[Desktop Entry]
-Type=Application
-Name=Lix
-Comment=An action-puzzle game inspired by Lemmings
-Exec=lix
-Icon=lix
-Categories=Game;ActionGame;
-Keywords=game;lemmings;