Fix sound and dependency issues

fork-master
A S Lewis 2020-05-29 15:29:01 +01:00
parent dc77458051
commit 04cadb3248
9 changed files with 170 additions and 77 deletions

View File

@ -22,6 +22,27 @@ The mod includes and builds on material from the following mods:
* `trainblocks <https://github.com/maxhipp/trainblocks_bc>`__ by Maxx
* `roads <https://cheapiesystems.com/git/roads/>`__ by cheapie
Dependencies
------------
Requires Minetest v5.0 (or later). There are no other dependencies.
Optional dependencies
---------------------
If default and `basic_materials <https://gitlab.com/VanessaE/basic_materials>`__ are loaded, the sign writing machine and ink cartridges are craftable.
If signs_api from `display_modpack <https://github.com/pyrollo/display_modpack>`__ is loaded, you can create signs with customisable text.
Downloads
---------
Latest release: `ZIP <https://github.com/axcore/metrosigns>`__, or `browse the code <https://github.com/axcore/metrosigns>`__.
Known bugs
----------
- The sign-writing machine will not display more than one page of signs at a time. I'm not sure why; the problem may be in my code, or the original `roads <https://cheapiesystems.com/git/roads/>`__ mod, or even in Minetest itself
Licences
--------
@ -36,25 +57,54 @@ Code and textures: `A S Lewis <https://github.com/axcore/>`__.
Code and texture contributors: gpcf/orwell, Max, cheapie
Dependencies
------------
Settings
--------
There are no dependencies. **NB This is currently not true - see below.**
Because metrosigns can create so many items, most of them are disabled by default.
Optional dependencies
---------------------
In Minetest's main menu, you can decide which to enable. Click **Settings > All settings > Mods > metrosigns**. If you really want to enable everything, you can do that by clicking on **Enable to create all items**.
If default and `basic_materials <https://gitlab.com/VanessaE/basic_materials>`__ are loaded, the sign writing machine and ink cartridges are craftable.
Otherwise, disable that option, and enable one or more of the options below it. Most users will prefer to use just London Underground signs, or just Paris Metro signs. Each of the 20 cities has a distinctive style, so enable the one you like best, and disable the others.
If signs_api from `display_modpack <https://github.com/pyrollo/display_modpack>`__ is loaded, you can create signs with customisable text.
By default, metrosigns provides its own line and platform signs in the range 11-20. The maximum range is 1-99. (If you specify invalid values, none of the signs are enabled).
Downloads
---------
The reason for using 11 as the minimum value, and not 1, is that the code copied from `advtrains_subwayblocks <https://git.gpcf.eu/?p=advtrains_subwayblocks.git>`__ and `trainblocks <https://github.com/maxhipp/trainblocks_bc>`__ already provides signs in the range 1-10. Note that those signs are labelled "1", "2", "3"..., whereas the new metrosigns are labelled "01", "02", "03"... (and so on). If you prefer to have two digits on *every* sign, you can change the minimum value to 1.
The latest release is available `here <https://github.com/axcore/metrosigns>`__.
Setting overrides
~~~~~~~~~~~~~~~~~
Screenshots
-----------
Minetest's main menu settings appear to be set in stone, once a world has been created. If you want to override those settings every time you play the world, you can do so in the metrosigns **settings.lua** file.
How to use
----------
In survival mode, you can use the sign writing machine to create as many signs as you need.
The first step is to craft some ink cartridges. There are three types: red, green and blue. You'll need one of each.
Ink cartridges are crafted with plastic sheets and red/green/blue dye.
.. image:: screenshots/recipe1.png
:alt: Ink cartridge recipe
Then craft the sign writer itself using steel ingots, plastic sheets, simple motors and a simple energy crystal.
.. image:: screenshots/recipe2.png
:alt: Sign writer recipe
Place the machine somewhere and then right-click it to open the interface. You'll need to insert red, green and blue cartridges, as well as some more plastic sheets, into the slots.
When everything is added, you should be able to see some signs. To select a different set of signs, use the drop-down box on the left side of the interface. To "write" a sign, simply drag it into your inventory.
Sign writing consumes ink. The amount of ink used depends on the sign you're writing. Assuming a full set of carridges, you can write 2 lightboxes, 5 map signs or 10 line/platform signs.
Cartridges can be refilled in the crafting grid.
.. image:: screenshots/recipe3.png
:alt: Cartridge refill recipe
More screenshots
----------------
.. image:: screenshots/example2.png
:alt: Sugn-writing machine
@ -67,10 +117,3 @@ Screenshots
.. image:: screenshots/example5.png
:alt: Various platform signs
Known bugs
----------
- Minetest will not (or cannot) read settingtypes.txt correctly. Until this is resolved, all nodes are available by default
- The sign-writing machine will not display more than one page of signs at a time
- signs_api from display_modpack should be an optional dependency, but the minetest game won't start (sometimes) if signs_api is not loaded
- Sounds for the sign-writing machine are commented out because I don't know how to make them work

View File

@ -9,7 +9,7 @@
-- from display_modpack
---------------------------------------------------------------------------------------------------
if HAVE_SIGNS_API_FLAG and metrosigns.create_all_flag or metrosigns.create_text_flag then
if HAVE_SIGNS_API_FLAG and (metrosigns.create_all_flag or metrosigns.create_text_flag) then
local category = "Signs with text"
metrosigns.register_category(category)

View File

@ -77,9 +77,9 @@ metrosigns.writer.cartridge_max = 60000
metrosigns.writer.cartridge_min = 1000
-- Number of units used for printing various kinds of sign
metrosigns.writer.box_units = 30
metrosigns.writer.sign_units = 5
metrosigns.writer.map_units = 10
metrosigns.writer.text_units = 10
metrosigns.writer.sign_units = 6
metrosigns.writer.map_units = 12
metrosigns.writer.text_units = 12
-- Used in material copied from advtrains_subwayblocks and trainblocks
box_groups = {cracky = 3}
@ -113,25 +113,20 @@ metrosigns.writer.signcounts = {}
-- Load settings
---------------------------------------------------------------------------------------------------
-- All settings temporarily enabled, because I can't get settingtypes.txt to behave as intended
--metrosigns.create_all_flag = minetest.setting_get("metrosigns_create_all") or false
metrosigns.create_all_flag = minetest.setting_get("metrosigns_create_all") or true
-- Load settings from Minetest's main menu
metrosigns.create_all_flag = minetest.setting_get("metrosigns_create_all") or false
metrosigns.create_subwayblocks_flag = minetest.setting_get("metrosigns_create_subwayblocks")
or false
metrosigns.create_trainblocks_flag = minetest.setting_get("metrosigns_create_trainblocks") or false
metrosigns.create_ext_line_flag = minetest.setting_get("metrosigns_create_ext_line") or true
--metrosigns.ext_line_min = minetest.setting_get("metrosigns_ext_line_min") or 11
--metrosigns.ext_line_max = minetest.setting_get("metrosigns_ext_line_min") or 20
metrosigns.ext_line_min = minetest.setting_get("metrosigns_ext_line_min") or 1
metrosigns.ext_line_max = minetest.setting_get("metrosigns_ext_line_min") or 99
metrosigns.ext_line_min = minetest.setting_get("metrosigns_ext_line_min") or 11
metrosigns.ext_line_max = minetest.setting_get("metrosigns_ext_line_min") or 20
metrosigns.create_ext_platform_flag = minetest.setting_get("metrosigns_create_ext_platform") or true
--metrosigns.ext_platform_min = minetest.setting_get("metrosigns_ext_platform_min") or 11
--metrosigns.ext_platform_max = minetest.setting_get("metrosigns_ext_platform_min") or 20
metrosigns.ext_platform_min = minetest.setting_get("metrosigns_ext_platform_min") or 1
metrosigns.ext_platform_max = minetest.setting_get("metrosigns_ext_platform_min") or 99
metrosigns.ext_platform_min = minetest.setting_get("metrosigns_ext_platform_min") or 11
metrosigns.ext_platform_max = minetest.setting_get("metrosigns_ext_platform_min") or 20
metrosigns.create_text_flag = minetest.setting_get("metrosigns_create_text") or true
@ -140,7 +135,7 @@ metrosigns.create_bangkok_flag = minetest.setting_get("metrosigns_create_bangkok
metrosigns.create_berlin_flag = minetest.setting_get("metrosigns_create_berlin") or false
metrosigns.create_bucharest_flag = minetest.setting_get("metrosigns_create_bucharest") or false
metrosigns.create_budapest_flag = minetest.setting_get("metrosigns_create_budapest") or false
metrosigns.create_glasgow_flag = minetest.setting_get("metrosigns_create_glasgow")or false
metrosigns.create_glasgow_flag = minetest.setting_get("metrosigns_create_glasgow") or false
metrosigns.create_hcmc_flag = minetest.setting_get("metrosigns_create_hcmc") or false
metrosigns.create_london_flag = minetest.setting_get("metrosigns_create_london") or true
metrosigns.create_luton_flag = minetest.setting_get("metrosigns_create_luton") or false
@ -156,6 +151,9 @@ metrosigns.create_tokyo_flag = minetest.setting_get("metrosigns_create_tokyo") o
metrosigns.create_toronto_flag = minetest.setting_get("metrosigns_create_toronto") or false
metrosigns.create_vienna_flag = minetest.setting_get("metrosigns_create_vienna") or false
-- Override one or more of these settings by uncommenting the lines in this file
dofile(metrosigns.path_mod.."/settings.lua")
---------------------------------------------------------------------------------------------------
-- General functions
---------------------------------------------------------------------------------------------------

View File

@ -40,11 +40,11 @@ function metrosigns.writer.checksupplies(pos)
end
local redcart_good = redcart:to_table().name == "metrosigns:cartridge_red"
and redcart:to_table().wear <= metrosigns.writer.cartridge_max
and redcart:to_table().wear < metrosigns.writer.cartridge_max
local greencart_good = greencart:to_table().name == "metrosigns:cartridge_green"
and greencart:to_table().wear <= metrosigns.writer.cartridge_max
and greencart:to_table().wear < metrosigns.writer.cartridge_max
local bluecart_good = bluecart:to_table().name == "metrosigns:cartridge_blue"
and bluecart:to_table().wear <= metrosigns.writer.cartridge_max
and bluecart:to_table().wear < metrosigns.writer.cartridge_max
local plastic_good = plastic:to_table().name == "basic_materials:plastic_sheet"
local good = redcart_good and greencart_good and bluecart_good and plastic_good
@ -116,7 +116,7 @@ function metrosigns.writer.populateoutput(pos)
"label[0,2;Blue\nCartridge]" ..
"list[current_name;bluecart;1.5,2;1,1;]" ..
-- Plastic
"label[0,3;Plastic\nSheeting]" ..
"label[0,3;Plastic\nSheet]" ..
"list[current_name;plastic;1.5,3;1,1;]" ..
-- Sign categories
"label[0,5;Sign\nCategory]" ..
@ -157,8 +157,6 @@ function metrosigns.writer.on_receive_fields(pos, formname, fields, sender)
if fields.category then
minetest.log(fields.category)
-- User has activated the dropdown box
if metrosigns.writer.signtypes[fields.category] ~= nil then
metrosigns.writer.current_category = fields.category
@ -349,7 +347,7 @@ end
---------------------------------------------------------------------------------------------------
minetest.register_node("metrosigns:sign_writer", {
description = "Sign Writer",
description = "Sign Writer Machine",
tiles = {
"metrosigns_writer_top.png",
"metrosigns_writer_side.png",
@ -359,11 +357,9 @@ minetest.register_node("metrosigns:sign_writer", {
"metrosigns_writer_front.png",
},
inventory_image = "metrosigns_writer_front.png",
groups = {snappy = 3},
groups = {cracky = 2},
paramtype = "light",
paramtype2 = "facedir",
-- Commented out because I don't know how to fix the error
-- sound = default.node_sound_wood_defaults(),
walkable = true,
-- Callbacks
allow_metadata_inventory_move = metrosigns.writer.allow_metadata_inventory_move,
@ -374,3 +370,11 @@ minetest.register_node("metrosigns:sign_writer", {
on_metadata_inventory_take = metrosigns.writer.on_metadata_inventory_take,
on_receive_fields = metrosigns.writer.on_receive_fields,
})
if HAVE_DEFAULT_FLAG then
minetest.override_item(
"metrosigns:sign_writer", { sounds = default.node_sound_stone_defaults() }
)
end

BIN
screenshots/recipe1.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.3 KiB

BIN
screenshots/recipe2.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.9 KiB

BIN
screenshots/recipe3.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

48
settings.lua Normal file
View File

@ -0,0 +1,48 @@
---------------------------------------------------------------------------------------------------
-- metrosigns mod for minetest by A S Lewis
-- https://github.com/axcore/metrosigns
-- Licence: GNU Affero GPL
---------------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------------
-- Override Minetest's main menu settings
---------------------------------------------------------------------------------------------------
-- To override a setting, uncomment the line (by removing the first two characters), and then change
-- a flag value to true or false, or change an integer value to a number between 1 and 99
--metrosigns.create_all_flag = false
--metrosigns.create_subwayblocks_flag = false
--metrosigns.create_trainblocks_flag = false
--metrosigns.create_ext_line_flag = true
--metrosigns.ext_line_min = 11
--metrosigns.ext_line_max = 20
--metrosigns.create_ext_platform_flag = true
--metrosigns.ext_platform_min = 11
--metrosigns.ext_platform_max = 20
--metrosigns.create_text_flag = true
--metrosigns.create_athens_flag = false
--metrosigns.create_bangkok_flag = false
--metrosigns.create_berlin_flag = false
--metrosigns.create_bucharest_flag = false
--metrosigns.create_budapest_flag = false
--metrosigns.create_glasgow_flag = false
--metrosigns.create_hcmc_flag = false
--metrosigns.create_london_flag = true
--metrosigns.create_luton_flag = false
--metrosigns.create_madrid_flag = false
--metrosigns.create_moscow_flag = false
--metrosigns.create_newyork_flag = false
--metrosigns.create_paris_flag = false
--metrosigns.create_prague_flag = false
--metrosigns.create_rome_flag = false
--metrosigns.create_stockholm_flag = false
--metrosigns.create_taipei_flag = false
--metrosigns.create_tokyo_flag = false
--metrosigns.create_toronto_flag = false
--metrosigns.create_vienna_flag = false

View File

@ -7,38 +7,38 @@
# -------------------------------------------------------------------------------------------------
# If enabled, create all items, regardless of the value of other flag settings
metrosigns_create_all (Enable to create all items. true/false) bool false
metrosigns_create_all (Enable to create all items) bool false
# -------------------------------------------------------------------------------------------------
# Settings for items borrowed from other mods
# -------------------------------------------------------------------------------------------------
# If enabled, create items from advtrains_subwayblocks. Ignored if that module has been loaded
metrosigns_create_subwayblocks (Enable to create all items. true/false) bool false
metrosigns_create_subwayblocks (Enable to create all subwayblocks items) bool false
# If enabled, create items from trainblocks. Ignored if that module has been loaded
metrosigns_create_trainblocks (Enable to create all items. true/false) bool false
metrosigns_create_trainblocks (Enable to create all trainblocks items) bool false
# -------------------------------------------------------------------------------------------------
# Extended line signs
# -------------------------------------------------------------------------------------------------
# If enabled, create extended line signs (in the range 00-99)
metrosigns_create_ext_line (Enable to create extended line signs. true/false) bool true
metrosigns_create_ext_line (Enable to create extended line signs, range) bool true
# If the flag above is enabled, the range of signs to create: minimum and maxium values (must be
# integers in the range 0-99. If values are invalid, no extended line signs are created)
metrosigns_ext_line_min (Lowest extended line sign. int) int 11
metrosigns_ext_line_max (Highest extended line sign. int) int 20
# integers in the range 1-99. If values are invalid, no extended line signs are created)
metrosigns_ext_line_min (Lowest extended line sign, 1-99) int 11
metrosigns_ext_line_max (Highest extended line sign, 1-99) int 20
# -------------------------------------------------------------------------------------------------
# Extended platform signs
# -------------------------------------------------------------------------------------------------
# If enabled, create extended platform signs (in the range 00-99)
metrosigns_create_ext_platform (Enable to create extended platform signs. true/false) bool true
metrosigns_create_ext_platform (Enable to create extended platform signs) bool true
# If the flag above is enabled, the range of signs to create: minimum and maxium values (must be
# integers in the range 0-99. If values are invalid, no extended platform signs are created)
metrosigns_ext_platform_min (Lowest extended platform sign. int) int 11
metrosigns_ext_platform_max (Highest extended platform sign. int) int 20
# integers in the range 1-99. If values are invalid, no extended platform signs are created)
metrosigns_ext_platform_min (Lowest extended platform sign, 1-99) int 11
metrosigns_ext_platform_max (Highest extended platform sign, 1-99) int 20
# -------------------------------------------------------------------------------------------------
# Map text signs
@ -46,49 +46,49 @@ metrosigns_ext_platform_max (Highest extended platform sign. int) int 20
# If enabled, create signs with text (designed to be used alongside the map nodes; requires
# signs_api)
metrosigns_create_text (Enable to create signs with text. true/false) bool true
metrosigns_create_text (Enable to create signs with text) bool true
# -------------------------------------------------------------------------------------------------
# City settings
# -------------------------------------------------------------------------------------------------
# If enabled, create items for Athens Metro
metrosigns_create_athens (Enable to create Athens Metro items. true/false) bool false
metrosigns_create_athens (Enable to create Athens Metro items) bool false
# If enabled, create items for Bangkok BTS Skytrain
metrosigns_create_bangkok (Enable to create Bangkok BTS Skytrain items. true/false) bool false
metrosigns_create_bangkok (Enable to create Bangkok BTS Skytrain items) bool false
# If enabled, create items for Berlin U-Bahn
metrosigns_create_berlin (Enable to create Berlin U-Bahn items. true/false) bool false
metrosigns_create_berlin (Enable to create Berlin U-Bahn items) bool false
# If enabled, create items for Bucharest Metro
metrosigns_create_bucharest (Enable to create Bucharest Metro items. true/false) bool false
metrosigns_create_bucharest (Enable to create Bucharest Metro items) bool false
# If enabled, create items for Budapest Metro
metrosigns_create_budapest (Enable to create Budapest Metro items. true/false) bool false
metrosigns_create_budapest (Enable to create Budapest Metro items) bool false
# If enabled, create items for Glasgow Subway
metrosigns_create_glasgow (Enable to create Glasgow Subway items. true/false) bool false
metrosigns_create_glasgow (Enable to create Glasgow Subway items) bool false
# If enabled, create items for Ho Chi Minh City Metro
metrosigns_create_hcmc (Enable to create Ho Chi Minh City Metro items. true/false) bool false
metrosigns_create_hcmc (Enable to create Ho Chi Minh City Metro items) bool false
# If enabled, create items for London Underground
metrosigns_create_london (Enable to create London Underground items. true/false) bool true
metrosigns_create_london (Enable to create London Underground items) bool true
# If enabled, create items for Luton to Dunstable Busway
metrosigns_create_luton (Enable to create Luton to Dunstable Busway items. true/false) bool false
metrosigns_create_luton (Enable to create Luton to Dunstable Busway items) bool false
# If enabled, create items for Madrid Metro
metrosigns_create_madrid (Enable to create Madrid Metro items. true/false) bool false
metrosigns_create_madrid (Enable to create Madrid Metro items) bool false
# If enabled, create items for Moscow Metro
metrosigns_create_moscow (Enable to create Moscow Metro items. true/false) bool false
metrosigns_create_moscow (Enable to create Moscow Metro items) bool false
# If enabled, create items for New York City Subway
metrosigns_create_newyork (Enable to create New York City Subway items. true/false) bool false
metrosigns_create_newyork (Enable to create New York City Subway items) bool false
# If enabled, create items for Paris Metro
metrosigns_create_paris (Enable to create Paris Metro items. true/false) bool false
metrosigns_create_paris (Enable to create Paris Metro items) bool false
# If enabled, create items for Prague Metro
metrosigns_create_prague (Enable to create Prague Metro items. true/false) bool false
metrosigns_create_prague (Enable to create Prague Metro items) bool false
# If enabled, create items for Rome Metro
metrosigns_create_rome (Enable to create Rome Metro items. true/false) bool false
metrosigns_create_rome (Enable to create Rome Metro items) bool false
# If enabled, create items for Stockholm Metro
metrosigns_create_stockholm (Enable to create Stockholm Metro items. true/false) bool false
metrosigns_create_stockholm (Enable to create Stockholm Metro items) bool false
# If enabled, create items for Taipei Metro
metrosigns_create_taipei (Enable to create Taipei Metro items. true/false) bool false
metrosigns_create_taipei (Enable to create Taipei Metro items) bool false
# If enabled, create items for Tokyo Metro
metrosigns_create_tokyo (Enable to create Tokyo Metro items. true/false) bool false
metrosigns_create_tokyo (Enable to create Tokyo Metro items) bool false
# If enabled, create items for Toronto Subway
metrosigns_create_toronto (Enable to create Toronto Subway items. true/false) bool false
metrosigns_create_toronto (Enable to create Toronto Subway items) bool false
# If enabled, create items for Vienna U-Bahn
metrosigns_create_vienna (Enable to create Vienna U-Bahn items. true/false) bool false
metrosigns_create_vienna (Enable to create Vienna U-Bahn items) bool false