56independent_actual wrote: ↑Sat Dec 17, 2022 10:46
Clearly the codebase is not designed to be begginer-friendly so i will seek alternative codebases to contribute to. The developers also seem overworked for their teamsize so i will find a codebase with a larger team more willing to guide begginers.
Mouthwork is easy. Asking for
other people to implement some is easy: just demand something and have others do the work of actually implementing it; proposals can be written without thinking through it in terms of implications in various aspects, and these can be written to make it appear as if you had an idea of how things work even when your actual knowledge does not (fundamentally) extend beyond creating one hype after another.
Then things turn out to be not so simple. (From hindsight, there is the keyword
h137 for me), and, unlike other people working on Advtrains (by the way, they also started without much knowledge of the codebase, and I also started out this way), instead of spending time figuring out how things work and how to improve things, you seem to expect people to tell you everything even for some of the simplest things:
Code: Select all
$ git -C .minetest/mods/advtrains grep -rn -C3 door_open | cat
advtrains/atc.lua-240- ["O([LRC])"]=function(id, train, match)
advtrains/atc.lua-241- local tt={L=-1, R=1, C=0}
advtrains/atc.lua-242- local arr=train.atc_arrow and 1 or -1
advtrains/atc.lua:243: train.door_open = tt[match]*arr
advtrains/atc.lua-244- return 2
advtrains/atc.lua-245- end,
advtrains/atc.lua-246- ["K"] = function(id, train)
advtrains/atc.lua:247: if train.door_open == 0 then
advtrains/atc.lua-248- atwarn(sid(id), attrans("ATC Kick command warning: Doors closed"))
advtrains/atc.lua-249- return 1
advtrains/atc.lua-250- end
--
advtrains/init.lua-467- local v=advtrains.save_keys(train, {
advtrains/init.lua-468- "last_pos", "last_connid", "last_frac", "velocity", "tarvelocity",
advtrains/init.lua-469- "trainparts", "recently_collided_with_env",
advtrains/init.lua:470: "atc_brake_target", "atc_wait_finish", "atc_command", "atc_delay", "door_open",
advtrains/init.lua-471- "text_outside", "text_inside", "line", "routingcode",
advtrains/init.lua-472- "il_sections", "speed_restriction", "speed_restrictions_t", "is_shunt",
advtrains/init.lua-473- "points_split", "autocouple", "atc_wait_autocouple", "ars_disable",
--
advtrains/trainhud.lua-68- end
advtrains/trainhud.lua-69- end
advtrains/trainhud.lua-70- if pc.left then
advtrains/trainhud.lua:71: if train.door_open ~= 0 then
advtrains/trainhud.lua:72: train.door_open = 0
advtrains/trainhud.lua-73- else
advtrains/trainhud.lua:74: train.door_open = -1
advtrains/trainhud.lua-75- end
advtrains/trainhud.lua-76- end
advtrains/trainhud.lua-77- if pc.right then
advtrains/trainhud.lua:78: if train.door_open ~= 0 then
advtrains/trainhud.lua:79: train.door_open = 0
advtrains/trainhud.lua-80- else
advtrains/trainhud.lua:81: train.door_open = 1
advtrains/trainhud.lua-82- end
advtrains/trainhud.lua-83- end
advtrains/trainhud.lua-84- if not act then
--
advtrains/trainhud.lua-257- -- door
advtrains/trainhud.lua-258- ht[#ht+1] = "187,10=(advtrains_hud_bg.png^[resize\\:26x30^[colorize\\:white)"
advtrains/trainhud.lua-259- ht[#ht+1] = "189,12=(advtrains_hud_bg.png^[resize\\:22x11)"
advtrains/trainhud.lua:260: ht[#ht+1] = sformat("170,10=(advtrains_hud_bg.png^[resize\\:15x30^[colorize\\:%s)", train.door_open==-1 and "white" or "darkslategray")
advtrains/trainhud.lua-261- ht[#ht+1] = "172,12=(advtrains_hud_bg.png^[resize\\:11x11)"
advtrains/trainhud.lua:262: ht[#ht+1] = sformat("215,10=(advtrains_hud_bg.png^[resize\\:15x30^[colorize\\:%s)", train.door_open==1 and "white" or "darkslategray")
advtrains/trainhud.lua-263- ht[#ht+1] = "217,12=(advtrains_hud_bg.png^[resize\\:11x11)"
advtrains/trainhud.lua-264- -- speed indication(s)
advtrains/trainhud.lua-265- sevenseg(math.floor(vel/10), 320, 10, 30, 10, "[colorize\\:red\\:255")
--
advtrains/trainhud.lua-315-local _, texture = advtrains.hud_train_format { -- dummy train object to demonstrate the train hud
advtrains/trainhud.lua-316- max_speed = 15, speed_restriction = 15, velocity = 15, tarvelocity = 12,
advtrains/trainhud.lua-317- active_control = true, lever = 3, ctrl = {lzb = true}, is_shunt = true,
advtrains/trainhud.lua:318: door_open = 1, lzb = {oncoming = {{spd=6, idx=125.7}}}, index = 0,
advtrains/trainhud.lua-319-}
advtrains/trainhud.lua-320-
advtrains/trainhud.lua-321-minetest.register_node("advtrains:hud_demo",{
--
advtrains/trainlogic.lua-1165-
advtrains/trainlogic.lua-1166- newtrain.velocity=train.velocity
advtrains/trainlogic.lua-1167- -- copy various properties from the old to the new train
advtrains/trainlogic.lua:1168: newtrain.door_open = train.door_open
advtrains/trainlogic.lua-1169- newtrain.text_outside = train.text_outside
advtrains/trainlogic.lua-1170- newtrain.text_inside = train.text_inside
advtrains/trainlogic.lua-1171- newtrain.line = train.line
--
advtrains/trainlogic.lua-1191- advtrains.path_setrestore(train, true)
advtrains/trainlogic.lua-1192-
advtrains/trainlogic.lua-1193- -- rotate some other stuff
advtrains/trainlogic.lua:1194: if train.door_open then
advtrains/trainlogic.lua:1195: train.door_open = - train.door_open
advtrains/trainlogic.lua-1196- end
advtrains/trainlogic.lua-1197- if train.atc_command then
advtrains/trainlogic.lua-1198- train.atc_arrow = not train.atc_arrow
--
advtrains/wagons.lua-339- else
advtrains/wagons.lua-340- -- If on a passenger seat and doors are open, get off when W or D pressed.
advtrains/wagons.lua-341- local pass = data.seatp[seatno] and minetest.get_player_by_name(data.seatp[seatno])
advtrains/wagons.lua:342: if pass and self:train().door_open~=0 then
advtrains/wagons.lua-343- local pc=pass:get_player_control()
advtrains/wagons.lua-344- if pc.up or pc.down then
advtrains/wagons.lua-345- self:get_off(seatno)
--
advtrains/wagons.lua-374- --door animation
advtrains/wagons.lua-375- if self.doors then
advtrains/wagons.lua-376- if (self.door_anim_timer or 0)<=0 then
advtrains/wagons.lua:377: local dstate = (train.door_open or 0) * fct
advtrains/wagons.lua-378- if dstate ~= self.door_state then
advtrains/wagons.lua-379- local at
advtrains/wagons.lua:380: --meaning of the train.door_open field:
advtrains/wagons.lua-381- -- -1: left doors (rel. to train orientation)
advtrains/wagons.lua-382- -- 0: closed
advtrains/wagons.lua-383- -- 1: right doors
--
advtrains/wagons.lua-444-
advtrains/wagons.lua-445- --automatic get_on
advtrains/wagons.lua-446- --needs to know index and path
advtrains/wagons.lua:447: if train.velocity==0 and self.door_entry and train.door_open and train.door_open~=0 then
advtrains/wagons.lua-448- --using the mapping created by the trainlogic globalstep
advtrains/wagons.lua-449- for i, ino in ipairs(self.door_entry) do
advtrains/wagons.lua-450- --fct is the flipstate flag from door animation above
--
advtrains/wagons.lua-452- local ix1, ix2 = advtrains.path_get_adjacent(train, aci)
advtrains/wagons.lua-453- -- the two wanted positions are ix1 and ix2 + (2nd-1st rotated by 90deg)
advtrains/wagons.lua-454- -- (x z) rotated by 90deg is (-z x) (http://stackoverflow.com/a/4780141)
advtrains/wagons.lua:455: local add = { x = (ix2.z-ix1.z)*train.door_open, y = 0, z = (ix1.x-ix2.x)*train.door_open }
advtrains/wagons.lua-456- local pts1=vector.round(vector.add(ix1, add))
advtrains/wagons.lua-457- local pts2=vector.round(vector.add(ix2, add))
advtrains/wagons.lua-458- if minetest.get_item_group(minetest.get_node(pts1).name, "platform")>0 then
--
advtrains/wagons.lua-654- if data.owner==pname then
advtrains/wagons.lua-655- poss[#poss+1]={name=attrans("Wagon properties"), key="prop"}
advtrains/wagons.lua-656- end
advtrains/wagons.lua:657: if not self.seat_groups[sgr].require_doors_open or self:train().door_open~=0 then
advtrains/wagons.lua-658- poss[#poss+1]={name=attrans("Get off"), key="off"}
advtrains/wagons.lua-659- else
advtrains/wagons.lua-660- if clicker:get_player_control().sneak then
--
advtrains/wagons.lua-688- return
advtrains/wagons.lua-689- end
advtrains/wagons.lua-690-
advtrains/wagons.lua:691: local doors_open = self:train().door_open~=0 or clicker:get_player_control().sneak
advtrains/wagons.lua-692- local allow, rsn=false, "Wagon has no seats!"
advtrains/wagons.lua-693- for _,sgr in ipairs(self.assign_to_seat_group) do
advtrains/wagons.lua-694- allow, rsn = self:check_seat_group_access(pname, sgr)
--
advtrains/wagons.lua-776- clicker:set_eye_offset({x=0,y=0,z=0}, {x=0,y=0,z=0})
advtrains/wagons.lua-777- local train=self:train()
advtrains/wagons.lua-778- --code as in step - automatic get on
advtrains/wagons.lua:779: if self.door_entry and train.door_open and train.door_open~=0 and train.velocity==0 and train.index and train.path then
advtrains/wagons.lua-780- local index = advtrains.path_get_index_by_offset(train, train.index, -data.pos_in_train)
advtrains/wagons.lua-781- for i, ino in ipairs(self.door_entry) do
advtrains/wagons.lua-782- --atdebug("using door-based",i,ino)
advtrains/wagons.lua-783- local fct=data.wagon_flipped and -1 or 1
advtrains/wagons.lua-784- local aci = advtrains.path_get_index_by_offset(train, index, ino*fct)
advtrains/wagons.lua-785- local ix1, ix2 = advtrains.path_get_adjacent(train, aci)
advtrains/wagons.lua:786: local d = train.door_open
advtrains/wagons.lua-787- if self.wagon_width then
advtrains/wagons.lua-788- d = d * math.floor(self.wagon_width/2)
advtrains/wagons.lua-789- end
advtrains/wagons.lua-790- -- the two wanted positions are ix1 and ix2 + (2nd-1st rotated by 90deg)
advtrains/wagons.lua-791- -- (x z) rotated by 90deg is (-z x) (http://stackoverflow.com/a/4780141)
advtrains/wagons.lua-792- local add = { x = (ix2.z-ix1.z)*d, y = 0, z = (ix1.x-ix2.x)*d }
advtrains/wagons.lua:793: local oadd = { x = (ix2.z-ix1.z)*(d+train.door_open), y = 1, z = (ix1.x-ix2.x)*(d+train.door_open)}
advtrains/wagons.lua-794- local platpos=vector.round(vector.add(ix1, add))
advtrains/wagons.lua-795- local offpos=vector.round(vector.add(ix1, oadd))
advtrains/wagons.lua-796-
And anyone who points out this matter is then labeled as being unfriendly to beginners.
And any piece of code that involves some level of thinking is then labeled as spaghetti code.
And to answer your original question: no, there is no "door system" like LZB or interlocking.