aboutsummaryrefslogtreecommitdiff
path: root/src/script/common/c_content.cpp
Commit message (Collapse)AuthorAge
* SAPI: Accept either ARGB8 table or ColorString to specify colorskwolekr2015-05-16
|
* Add 'persistence' alias for Lua noiseparams and validate more vector parameterskwolekr2015-04-19
|
* Don't use luaL_checkstring to read node names, it's only for argumentsShadowNinja2015-03-07
| | | | This caused confusing error messages like "argument #4 to set_node is not a string."
* Remove freezemelt (the remainder of proller nonsense)kwolekr2015-01-04
|
* Move get_schematic and read_schematic to l_mapgen.cppkwolekr2014-12-10
|
* Remove get_noiseparams function. read_noiseparams should be used from now onkwolekr2014-12-10
|
* Add flags and lacunarity as new noise parameterskwolekr2014-12-07
| | | | | | | Add 'absolute value' option to noise map functions Extend persistence modulation to 3D noise Extend 'eased' option to noise2d_perlin* functions Some noise.cpp formatting fixups
* Schematics: Fix minetest.place_schematic() when defined by a Lua tablekwolekr2014-12-06
|
* Don't corrupt stepheight when setting other propertiesCiaran Gultnieks2014-11-26
|
* Add option 'eased' to NoiseParamsSmallJoker2014-11-13
| | | | Signed-off-by: Craig Robbins <kde.psych@gmail.com>
* Add Generator Element Management frameworkkwolekr2014-11-12
| | | | Add BiomeManager, OreManager, DecorationManager, and SchematicManager
* Split up mapgen.cppkwolekr2014-11-01
|
* Custom collision boxes node property.RealBadAngel2014-10-19
|
* Add meshnode drawtype.RealBadAngel2014-10-18
|
* Use "core" namespace internallyShadowNinja2014-05-08
|
* Remove lua_State parameter from LuaError::LuaErrorShadowNinja2014-03-15
|
* Revert "Make sure we get a stacktrace for as many lua errors as possible"ShadowNinja2014-03-15
| | | | | | | | This reverts commit 362ef5f6ced862daa4733034810d0b07e2ad5d89. Stack tracebacks couldn't be generated in LuaError::LuaError anyway and this caused a second, empty traceback in most cases. In cases where there wasn't annother traceback the stack had already unwound and the traceback was empty.
* Make sure we get a stacktrace for as many lua errors as possibleSfan52014-03-15
|
* Update set_mapgen_params and set_gen_notify Lua API to use new flag formatkwolekr2014-03-08
|
* Add minetest.set_noiseparam_defaults() Lua APIkwolekr2014-02-15
|
* Define strlcpy on platforms that do not have itkwolekr2014-02-09
|
* Add capability to read table flag fields from Lua APIkwolekr2014-02-09
|
* Make flag strings clear specified flag with 'no' prefixkwolekr2014-02-08
| | | | | Remove flagmask field from set_mapgen_params table Add small bits of needed documentation
* Schematic: Read slice probability table from schematic descriptorskwolekr2014-01-19
|
* Add maximum recursion depth to read_json_valueShadowNinja2014-01-11
|
* Rename get_json_value to read_json_valueShadowNinja2014-01-11
|
* Fix InventoryList reading orderShadowNinja2013-12-30
| | | | Lua does not guarantee that the indexes of a table will be in numerical order.
* Don't throw a error when writing JSON failsShadowNinja2013-12-18
|
* Add 'minetest.write_json'ShadowNinja2013-12-18
|
* Handle LuaErrors in Lua -> C++ calls on LuaJITShadowNinja2013-12-18
|
* Shaders rework.RealBadAngel2013-12-03
|
* Optimize table creationShadowNinja2013-11-30
|
* fixed array limit check when reading Lua specialtiles tableMetaDucky2013-11-16
|
* Pass a errfunc to lua_pcall to get a tracebackShadowNinja2013-11-15
|
* Add offset to automatic_face_movement_dirPilzAdam2013-09-10
|
* Add minetest.parse_json, engine.parse_jsonKahrl2013-09-02
|
* Omnicleanup: header cleanup, add ModApiUtil shared between game and mainmenuKahrl2013-08-14
|
* Add support for entities to automatic face movement directionsapier2013-08-13
|
* Decoration: Fix schematic probability mess with new MTS file versionkwolekr2013-08-11
|
* Add support for different drowning damage and allow drowning in other nodetypesBlockMen2013-08-06
|
* Add support for setting stepheight for entitiessapier2013-07-30
|
* Weather supportproller2013-07-27
|
* Add an option to disable object <-> object collision for Lua entitiesPilzAdam2013-07-20
|
* Add liquid_range to nodedefPilzAdam2013-07-20
|
* Make range of tools configureablePilzAdam2013-07-20
|
* Leveled nodeboxproller2013-07-13
|
* Decoration: Add Schematic decoration typekwolekr2013-06-22
|
* Add drowningPilzAdam2013-06-19
|
* Move scriptapi to separate folder (by sapier)sapier2013-05-25
On the lua side, notably minetest.env:<function>(<args>) should now be replaced by minetest.<function>(<args>). The old way is and will stay supported for a long time. Also: Update and clean up lua_api.txt (by celeron55) Move EnvRef to lua and remove add_rat and add_firefly (by kahrl) Add separate src/util/CMakeLists.txt, other minor fixes (by kahrl)
>.driver = player:hud_add(driverhud) end end end function advtrains.set_help_hud(name, text) local hud = advtrains.hhud[name] local player=minetest.get_player_by_name(name) if not player then return end if not hud then hud = {} advtrains.hhud[name] = hud hud.id = player:hud_add({ hud_elem_type = "text", name = "ADVTRAINS_HELP", number = 0xFFFFFF, position = {x=1, y=0.3}, offset = {x=0, y=0}, text = text, scale = {x=200, y=60}, alignment = {x=1, y=0}, }) hud.oldText=text return elseif hud.oldText ~= text then player:hud_change(hud.id, "text", text) hud.oldText=text end end --train.lever: --Speed control lever in train, for new train control system. --[[ Value Disp Control Meaning 0 BB S+Space Emergency Brake 1 B Space Normal Brake 2 - S Roll 3 o <none> Stay at speed 4 + W Accelerate ]] function advtrains.hud_train_format(train, flip) if not train then return "","" end local sformat = string.format -- this appears to be faster than (...):format local max = train.max_speed or 10 local res = train.speed_restriction local vel = advtrains.abs_ceil(train.velocity) local vel_kmh=advtrains.abs_ceil(advtrains.ms_to_kmh(train.velocity)) local tlev=train.lever or 1 if train.velocity==0 and not train.active_control then tlev=1 end if train.hud_lzb_effect_tmr then tlev=1 end local ht = {"[combine:440x110:0,0=(advtrains_hud_bg.png^[resize\\:440x110)"} local st = {} if train.debug then st = {train.debug} end -- seven-segment display local function sevenseg(digit, x, y, w, h, m) --[[ -1- 2 3 -4- 5 6 -7- ]] local segs = { {h, 0, w, h}, {0, h, h, w}, {w+h, h, h, w}, {h, w+h, w, h}, {0, w+2*h, h, w}, {w+h, w+2*h, h, w}, {h, 2*(w+h), w, h}} local trans = { [0] = {true, true, true, false, true, true, true}, [1] = {false, false, true, false, false, true, false}, [2] = {true, false, true, true, true, false, true}, [3] = {true, false, true, true, false, true, true}, [4] = {false, true, true, true, false, true, false}, [5] = {true, true, false, true, false, true, true}, [6] = {true, true, false, true, true, true, true}, [7] = {true, false, true, false, false, true, false}, [8] = {true, true, true, true, true, true, true}, [9] = {true, true, true, true, false, true, true}} local ent = trans[digit or 10] if not ent then return end for i = 1, 7, 1 do if ent[i] then local s = segs[i] ht[#ht+1] = sformat("%d,%d=(advtrains_hud_bg.png^[resize\\:%dx%d^%s)",x+s[1], y+s[2], s[3], s[4], m) end end end -- lever ht[#ht+1] = "275,10=(advtrains_hud_bg.png^[colorize\\:cyan^[resize\\:5x18)" ht[#ht+1] = "275,28=(advtrains_hud_bg.png^[colorize\\:white^[resize\\:5x18)" ht[#ht+1] = "275,46=(advtrains_hud_bg.png^[colorize\\:orange^[resize\\:5x36)" ht[#ht+1] = "275,82=(advtrains_hud_bg.png^[colorize\\:red^[resize\\:5x18)" ht[#ht+1] = "292,16=(advtrains_hud_bg.png^[colorize\\:darkslategray^[resize\\:6x78)" ht[#ht+1] = sformat("280,%s=(advtrains_hud_bg.png^[colorize\\:gray^[resize\\:30x18)",18*(4-tlev)+10) -- reverser ht[#ht+1] = sformat("245,10=(advtrains_hud_arrow.png^[transformFY%s)", flip and "" or "^[multiply\\:cyan") ht[#ht+1] = sformat("245,85=(advtrains_hud_arrow.png%s)", flip and "^[multiply\\:orange" or "") ht[#ht+1] = "250,35=(advtrains_hud_bg.png^[colorize\\:darkslategray^[resize\\:5x40)" ht[#ht+1] = sformat("240,%s=(advtrains_hud_bg.png^[resize\\:25x15^[colorize\\:gray)", flip and 65 or 30) -- train control/safety indication if train.tarvelocity or train.atc_command then ht[#ht+1] = "10,10=(advtrains_hud_atc.png^[resize\\:30x30^[multiply\\:cyan)" end if train.hud_lzb_effect_tmr then ht[#ht+1] = "50,10=(advtrains_hud_lzb.png^[resize\\:30x30^[multiply\\:red)" end if train.is_shunt then ht[#ht+1] = "90,10=(advtrains_hud_shunt.png^[resize\\:30x30^[multiply\\:orange)" end -- door ht[#ht+1] = "187,10=(advtrains_hud_bg.png^[resize\\:26x30^[colorize\\:white)" ht[#ht+1] = "189,12=(advtrains_hud_bg.png^[resize\\:22x11)" ht[#ht+1] = sformat("170,10=(advtrains_hud_bg.png^[resize\\:15x30^[colorize\\:%s)", train.door_open==-1 and "white" or "darkslategray") ht[#ht+1] = "172,12=(advtrains_hud_bg.png^[resize\\:11x11)" ht[#ht+1] = sformat("215,10=(advtrains_hud_bg.png^[resize\\:15x30^[colorize\\:%s)", train.door_open==1 and "white" or "darkslategray") ht[#ht+1] = "217,12=(advtrains_hud_bg.png^[resize\\:11x11)" -- speed indication(s) sevenseg(math.floor(vel/10), 320, 10, 30, 10, "[colorize\\:red\\:255") sevenseg(vel%10, 380, 10, 30, 10, "[colorize\\:red\\:255") for i = 1, vel, 1 do ht[#ht+1] = sformat("%d,65=(advtrains_hud_bg.png^[resize\\:8x20^[colorize\\:white)", i*11-1) end for i = max+1, 20, 1 do ht[#ht+1] = sformat("%d,65=(advtrains_hud_bg.png^[resize\\:8x20^[colorize\\:darkslategray)", i*11-1) end if res and res > 0 then ht[#ht+1] = sformat("%d,60=(advtrains_hud_bg.png^[resize\\:3x30^[colorize\\:red\\:255)", 7+res*11) end if train.tarvelocity then ht[#ht+1] = sformat("%d,85=(advtrains_hud_arrow.png^[multiply\\:cyan^[transformFY^[makealpha\\:#000000)", 1+train.tarvelocity*11) end local lzb = train.lzb if lzb and lzb.checkpoints then local oc = lzb.checkpoints for i = 1, #oc do local spd = oc[i].speed local c = not spd and "lime" or (type(spd) == "number" and (spd == 0) and "red" or "orange") or nil if c then ht[#ht+1] = sformat("130,10=(advtrains_hud_bg.png^[resize\\:30x5^[colorize\\:%s)",c) ht[#ht+1] = sformat("130,35=(advtrains_hud_bg.png^[resize\\:30x5^[colorize\\:%s)",c) if spd and spd~=0 then ht[#ht+1] = sformat("%d,50=(advtrains_hud_arrow.png^[multiply\\:red^[makealpha\\:#000000)", 1+spd*11) end local floor = math.floor local dist = floor(((oc[i].index or train.index)-train.index)) dist = math.max(0, math.min(999, dist)) for j = 1, 3, 1 do sevenseg(floor((dist/10^(3-j))%10), 119+j*11, 18, 4, 2, "[colorize\\:"..c) end break end end end if res and res == 0 then st[#st+1] = attrans("OVERRUN RED SIGNAL! Examine situation and reverse train to move again.") end if train.atc_command then st[#st+1] = sformat("ATC: %s%s", train.atc_delay and advtrains.abs_ceil(train.atc_delay).."s " or "", train.atc_command or "") end return table.concat(st,"\n"), table.concat(ht,":") end local _, texture = advtrains.hud_train_format { -- dummy train object to demonstrate the train hud max_speed = 15, speed_restriction = 15, velocity = 15, tarvelocity = 12, active_control = true, lever = 3, ctrl = {lzb = true}, is_shunt = true, door_open = 1, lzb = {oncoming = {{spd=6, idx=125.7}}}, index = 0, } minetest.register_node("advtrains:hud_demo",{ description = "Train HUD demonstration", tiles = {texture}, groups = {cracky = 3, not_in_creative_inventory = 1} }) minetest.register_craft { output = "advtrains:hud_demo", recipe = { {"default:paper", "default:paper", "default:paper"}, {"default:paper", "advtrains:trackworker", "default:paper"}, {"default:paper", "default:paper", "default:paper"}, } }