101 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			Lua
		
	
	
	
	
	
			
		
		
	
	
			101 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			Lua
		
	
	
	
	
	
| function tms_toggle(event)
 | |
|     local player = game.players[event.player_index]
 | |
| 
 | |
|     if not player or not player.valid then
 | |
|         return
 | |
|     end
 | |
| 
 | |
|     if player.selected then
 | |
|         if player.selected.train and player.selected.train.valid then
 | |
|             local train = player.selected.train
 | |
| 
 | |
|             if train.manual_mode == true then
 | |
|                 train.manual_mode = false
 | |
|             else
 | |
|                 train.manual_mode = true
 | |
|             end
 | |
|         end
 | |
|     else
 | |
|         tms_provide_selectiontool(event)
 | |
|     end
 | |
| end
 | |
| 
 | |
| function tms_provide_selectiontool(event)
 | |
|     local player = game.players[event.player_index]
 | |
| 
 | |
|     if not player or not player.valid then
 | |
|         return
 | |
|     end
 | |
| 
 | |
|     if player.cursor_stack and player.cursor_stack.valid and player.cursor_stack.valid_for_read and player.cursor_stack.name == "tms-switcher" then
 | |
|         return
 | |
|     end
 | |
| 
 | |
|     if not player.clear_cursor() then
 | |
|         return
 | |
|     end
 | |
| 
 | |
|     player.cursor_stack.set_stack({
 | |
|         name = "tms-switcher",
 | |
|         count = 1
 | |
|     })
 | |
| end
 | |
| 
 | |
| function tms_enact(player, event, alt)
 | |
|     local config = settings.get_player_settings(player)
 | |
| 
 | |
|     local trains_switched = {}
 | |
|     for _, ent in pairs(event.entities) do
 | |
|         if ent.valid then
 | |
|             if ent.train and ent.train.valid then
 | |
|                 local train = ent.train
 | |
| 
 | |
|                 if not trains_switched[train.id] then
 | |
|                     if config['tms-alt-mode'].value then
 | |
|                         if alt then
 | |
|                             train.manual_mode = true
 | |
|                         else
 | |
|                             train.manual_mode = false
 | |
|                         end
 | |
|                     elseif train.manual_mode == true then
 | |
|                         train.manual_mode = false
 | |
|                     else
 | |
|                         train.manual_mode = true
 | |
|                     end
 | |
| 
 | |
|                     trains_switched[train.id] = true
 | |
|                 end
 | |
|             end
 | |
|         end
 | |
|     end
 | |
| end
 | |
| 
 | |
| function tms_selectiontool(event)
 | |
|     local player = game.players[event.player_index]
 | |
| 
 | |
|     if not player or not player.valid or not event.entities or event.item ~= "tms-switcher" then
 | |
|         return
 | |
|     end
 | |
| 
 | |
|     tms_enact(player, event, false)
 | |
| end
 | |
| 
 | |
| function tms_selectiontool_alt(event)
 | |
|     local player = game.players[event.player_index]
 | |
| 
 | |
|     if not player or not player.valid or not event.entities or event.item ~= "tms-switcher" then
 | |
|         return
 | |
|     end
 | |
| 
 | |
|     tms_enact(player, event, true)
 | |
| end
 | |
| 
 | |
| function tms_shortcut(event)
 | |
|     local player = game.players[event.player_index]
 | |
| 
 | |
|     if not player or not player.valid or not event.prototype_name or event.prototype_name ~= "tms-toggle" then
 | |
|         return
 | |
|     end
 | |
| 
 | |
|     tms_toggle(event)
 | |
| end |