summaryrefslogtreecommitdiff
path: root/src/main.cpp
Commit message (Expand)AuthorAge
...
* Add redis database backendSfan52014-04-16
* Fix all warnings reported by clangSfan52014-04-15
* Infer ipv6_server from bind_address; fix client connect to IN(6)ADDR_ANYKahrl2014-04-10
* Replace pause and message menu by formspec onessapier2014-03-05
* Fix memory leak in database migrationSelat2014-02-07
* Add the option to bind to a specific addressShadowNinja2014-02-05
* Revert "Fix settings to honor numeric conversion errors"kwolekr2014-02-05
* Fix settings to honor numeric conversion errorssapier2014-02-04
* Add alpha setting to font shadowBlockMen2013-12-14
* Don't call curl_global_init twiceKahrl2013-12-13
* Implement httpfetch module and initialize it from main()Kahrl2013-12-13
* Add configurable font shadow.Ilya Zhuravlev2013-12-12
* Cleanup jthread and fix win32 buildsapier2013-12-01
* Fix modstore/favourites hang by adding asynchronous lua job supportsapier2013-11-29
* Split server/client port setting to avoid port number clashes in mainmenusapier2013-11-28
* Fix invalid escape sequence in database migration codeKahrl2013-11-23
* Fix win32/msvc i18n (quite UGLY version, blame Microsoft)sapier2013-11-11
* Add --version optionKahrl2013-09-28
* Show git hash in version string at top left corner of windowKahrl2013-09-28
* Fix some warnings and other minor detailskwolekr2013-09-16
* Handle --migrate even when compiled without leveldb supportKahrl2013-09-10
* Fix broken build due to missing mapsector.h includeKahrl2013-09-10
* Make --migrate update world.mt tooSfan52013-09-09
* Add note about --migrate only working with minetestserver or --serverSfan52013-09-09
* Make it compileSfan52013-09-09
* Add dummy and LevelDB database backendsIlya Zhuravlev2013-09-09
* Add fallback font support for some languages.Ilya Zhuravlev2013-09-08
* Add a setting for HighPrecisionFPU (fixes #763).Ilya Zhuravlev2013-08-25
* Allow SIGINT to kill mainmenu againKahrl2013-08-19
* GUIFormSpecMenu focus fixesKahrl2013-08-19
* Omnicleanup: header cleanup, add ModApiUtil shared between game and mainmenuKahrl2013-08-14
* Make freetype usage configureable by a settingPilzAdam2013-08-04
* Weather backward compatibilityproller2013-08-02
* Play sounds/main_menu.ogg in menuPilzAdam2013-07-28
* Randomly choose singleplayer portPilzAdam2013-07-16
* fix crash on play/start with empty world listsapier2013-07-08
* Replace C++ mainmenu by formspec powered onesapier2013-07-02
* Save settings after dropping main menuelagin2013-05-20
* Only create SoundManager in main menu if USE_SOUND is truePilzAdam2013-05-18
* Dont drop fonts with ENABLE_FREETYPE=0PilzAdam2013-05-16
* Only use game filter in singleplayer tab; use menu_{background, overlay, head...PilzAdam2013-05-13
* Add code to play main_menu.ogg in main menuRealBadAngel2013-05-11
* Fix memory leaks: delete font in main and GUIChatConsolePilzAdam2013-05-10
* Add clouds to all loading screens and better progress handlingZeg92013-05-10
* Add --videomodes option to show available video modesKahrl2013-05-09
* Drop IrrlichtDevice when running --speedtestsKahrl2013-05-09
* Add header.png and footer.png support for games, and support texture packs vi...Perttu Ahola2013-05-04
* Show game name instead of game ID of selected gamePilzAdam2013-05-02
* Switch menu to game selected in world creation dialogPerttu Ahola2013-05-02
* Get menu background image from selected gamePerttu Ahola2013-05-02
ard is empty."); return end clipboard = minetest.deserialize(clipboard) if (clipboard.wagons == nil) then minetest.chat_send_player(pname, "The clipboard is empty."); return end local wagons = {} local n = 1 for _, wagonProto in pairs(clipboard.wagons) do local wagon = advtrains.create_wagon(wagonProto.type, pname) advtrains.wagons[wagon].wagon_flipped = wagonProto.wagon_flipped wagons[n] = wagon n = n + 1 end local id=advtrains.create_new_train_at(pointed_thing.under, plconnid, 0, wagons) local train = advtrains.trains[id] train.off_track = train.end_index<train.path_trk_b if (train.off_track) then minetest.chat_send_player(pname, "Back of train would end up off track, cancelling.") advtrains.remove_train(id) return end train.text_outside = clipboard.text_outside train.text_inside = clipboard.text_inside train.routingcode = clipboard.routingcode train.line = clipboard.line return end) end, -- Copy: Take the pointed-at train and put it on the clipboard on_use = function(itemstack, user, pointed_thing) if not user:get_player_name() then return end if (pointed_thing.type ~= "object") then return end local le = pointed_thing.ref:get_luaentity() if (le == nil) then minetest.chat_send_player(user:get_player_name(), "No such lua entity!") return end local wagon = advtrains.wagons[le.id] if (not (le.id and advtrains.wagons[le.id])) then minetest.chat_send_player(user:get_player_name(), string.format("No such wagon: %s", le.id)) return end local train = advtrains.trains[wagon.train_id] if (not train) then minetest.chat_send_player(user:get_player_name(), string.format("No such train: %s", wagon.train_id)) return end -- Record the train length. The paste operation should require this much free space. local clipboard = { trainlen = math.ceil(train.trainlen), text_outside = train.text_outside, text_inside = train.text_inside, routingcode = train.routingcode, line = train.line, wagons = {} } local trainLength = math.ceil(train.trainlen) local n = 1 for _, wagonid in pairs(train.trainparts) do local wagon = advtrains.wagons[wagonid] clipboard.wagons[n] = { wagon_flipped = wagon.wagon_flipped, type = wagon.type } n = n + 1 end local function flip_clipboard(wagon_clipboard) local flipped = {} local numWagons = #wagon_clipboard for k, v in ipairs(wagon_clipboard) do local otherSide = (numWagons-k)+1 flipped[otherSide] = v local wagon = flipped[otherSide] wagon.wagon_flipped = not wagon.wagon_flipped end return flipped end local function is_loco(wagon_id) local wagon = advtrains.wagons[wagon_id] if (not wagon) then return false end local wagon_proto = advtrains.wagon_prototypes[wagon.type or wagon.entity_name] if wagon_proto and wagon_proto.is_locomotive then return true end return false end -- Decide on a new 'front of train' and possibly flip the train. -- Locomotive on one end = loco-hauled, that end is front; -- if (advtrains.wagons[train.trainparts[1]].is_locomotive) then -- do nothing, train is already in right order local numWagons = #train.trainparts local backLoco = train.trainparts[numWagons] backLoco = is_loco(backLoco) local frontLoco = train.trainparts[1] frontLoco = is_loco(frontLoco) if ((backLoco) and (not frontLoco)) then clipboard.wagons = flip_clipboard(clipboard.wagons) --minetest.chat_send_player(user:get_player_name(), "Flipped train: Loco-hauled") end -- locomotives on both ends = train is push-pull / multi-unit, has no front, do nothing -- no locomotives on ends = rake of wagons, front is end closest to where player copied. if ((not frontLoco) and (not backLoco)) then if (wagon.pos_in_trainparts / numWagons > 0.5) then -- towards the end of the rain clipboard.wagons = flip_clipboard(clipboard.wagons) --minetest.chat_send_player(user:get_player_name(), "Flipped train: Rake") end end local meta = itemstack:get_meta() if not meta then minetest.chat_send_player(pname, attrans("The clipboard couldn't access the metadata. Copy failed.")) return end meta:set_string("clipboard", minetest.serialize(clipboard)) minetest.chat_send_player(user:get_player_name(), attrans("Train copied!")) return itemstack end })