share/hedgewars/Data/Scripts/Multiplayer/HedgeEditor.lua
changeset 14751 430c90fa6062
parent 14742 2e8213c0951f
child 15088 9aa1ab824ec7
equal deleted inserted replaced
14750:ab7bf5036314 14751:430c90fa6062
   295 local shoppaPY = {}
   295 local shoppaPY = {}
   296 local shoppaPR = {}
   296 local shoppaPR = {}
   297 
   297 
   298 -- Misc. state variables
   298 -- Misc. state variables
   299 local hedgeEditorMissionPanelShown = false
   299 local hedgeEditorMissionPanelShown = false
   300 local tagGears = {}
       
   301 local showGearTags = true
       
   302 
   300 
   303 local tagCursorX, tagCursorY
   301 local tagCursorX, tagCursorY
   304 
   302 
   305 ---------------------------------
   303 ---------------------------------
   306 -- crates are made of this stuff
   304 -- crates are made of this stuff
  2538 				loc("Bouncy Girder: [4]") .. "|" ..
  2536 				loc("Bouncy Girder: [4]") .. "|" ..
  2539 				" " .. "|" ..
  2537 				" " .. "|" ..
  2540 				loc("Deletion Mode: [5]") .. "|" ..
  2538 				loc("Deletion Mode: [5]") .. "|" ..
  2541 				" " .. "|" ..
  2539 				" " .. "|" ..
  2542 				loc("Toggle Help: [Precise]+[1]") .. "|" ..
  2540 				loc("Toggle Help: [Precise]+[1]") .. "|" ..
  2543 				loc("Toggle Gear Information: [Precise]+[3]") .. "|" ..
       
  2544 				"", -amGirder, 60000, not helpDisabled
  2541 				"", -amGirder, 60000, not helpDisabled
  2545 				)
  2542 				)
  2546 		hedgeEditorMissionPanelShown = false
  2543 		hedgeEditorMissionPanelShown = false
  2547 
  2544 
  2548 	elseif cat[cIndex] == loc("Rubber Placement Mode") then
  2545 	elseif cat[cIndex] == loc("Rubber Placement Mode") then
  2556 				loc("Normal Rubber: [1]") .. "|" ..
  2553 				loc("Normal Rubber: [1]") .. "|" ..
  2557 				" " .. "|" ..
  2554 				" " .. "|" ..
  2558 				loc("Deletion Mode: [5]") .. "|" ..
  2555 				loc("Deletion Mode: [5]") .. "|" ..
  2559 				" " .. "|" ..
  2556 				" " .. "|" ..
  2560 				loc("Toggle Help: [Precise]+[1]") .. "|" ..
  2557 				loc("Toggle Help: [Precise]+[1]") .. "|" ..
  2561 				loc("Toggle Gear Information: [Precise]+[3]") .. "|" ..
       
  2562 				"", -amRubber, 60000, not helpDisabled
  2558 				"", -amRubber, 60000, not helpDisabled
  2563 				)
  2559 				)
  2564 		hedgeEditorMissionPanelShown = false
  2560 		hedgeEditorMissionPanelShown = false
  2565 
  2561 
  2566 	elseif cat[cIndex] == loc("Barrel Placement Mode") then
  2562 	elseif cat[cIndex] == loc("Barrel Placement Mode") then
  2571 				loc("Place Object: [Left Click]") .. "|" ..
  2567 				loc("Place Object: [Left Click]") .. "|" ..
  2572 				loc("Change Health: [Left], [Right]") .. "|" ..
  2568 				loc("Change Health: [Left], [Right]") .. "|" ..
  2573 				" " .. "|" ..
  2569 				" " .. "|" ..
  2574 				loc("Change Placement Mode: [Up], [Down]") .. "|" ..
  2570 				loc("Change Placement Mode: [Up], [Down]") .. "|" ..
  2575 				loc("Toggle Help: [Precise]+[1]") .. "|" ..
  2571 				loc("Toggle Help: [Precise]+[1]") .. "|" ..
  2576 				loc("Toggle Gear Information: [Precise]+[3]") .. "|" ..
       
  2577 				"", 8, 60000, not helpDisabled
  2572 				"", 8, 60000, not helpDisabled
  2578 				)
  2573 				)
  2579 		hedgeEditorMissionPanelShown = false
  2574 		hedgeEditorMissionPanelShown = false
  2580 
  2575 
  2581 	elseif cat[cIndex] == loc("Cleaver Placement Mode") then
  2576 	elseif cat[cIndex] == loc("Cleaver Placement Mode") then
  2585 				loc("Place cleavers"),
  2580 				loc("Place cleavers"),
  2586 				loc("Place Object: [Left Click]") .. "|" ..
  2581 				loc("Place Object: [Left Click]") .. "|" ..
  2587 				" " .. "|" ..
  2582 				" " .. "|" ..
  2588 				loc("Change Placement Mode: [Up], [Down]") .. "|" ..
  2583 				loc("Change Placement Mode: [Up], [Down]") .. "|" ..
  2589 				loc("Toggle Help: [Precise]+[1]") .. "|" ..
  2584 				loc("Toggle Help: [Precise]+[1]") .. "|" ..
  2590 				loc("Toggle Gear Information: [Precise]+[3]") .. "|" ..
       
  2591 				"", -amKnife, 60000, not helpDisabled
  2585 				"", -amKnife, 60000, not helpDisabled
  2592 				)
  2586 				)
  2593 		hedgeEditorMissionPanelShown = false
  2587 		hedgeEditorMissionPanelShown = false
  2594 
  2588 
  2595 	elseif cat[cIndex] == loc("Target Placement Mode") then
  2589 	elseif cat[cIndex] == loc("Target Placement Mode") then
  2599 				loc("Place targets"),
  2593 				loc("Place targets"),
  2600 				loc("Place Object: [Left Click]") .. "|" ..
  2594 				loc("Place Object: [Left Click]") .. "|" ..
  2601 				" " .. "|" ..
  2595 				" " .. "|" ..
  2602 				loc("Change Placement Mode: [Up], [Down]") .. "|" ..
  2596 				loc("Change Placement Mode: [Up], [Down]") .. "|" ..
  2603 				loc("Toggle Help: [Precise]+[1]") .. "|" ..
  2597 				loc("Toggle Help: [Precise]+[1]") .. "|" ..
  2604 				loc("Toggle Gear Information: [Precise]+[3]") .. "|" ..
       
  2605 				"", 1, 60000, not helpDisabled
  2598 				"", 1, 60000, not helpDisabled
  2606 				)
  2599 				)
  2607 		hedgeEditorMissionPanelShown = false
  2600 		hedgeEditorMissionPanelShown = false
  2608 
  2601 
  2609 	elseif cat[cIndex] == loc("Waypoint Editing Mode") then
  2602 	elseif cat[cIndex] == loc("Waypoint Editing Mode") then
  2614 				loc("Place/Delete Waypoint: [Left Click]") .. "|" ..
  2607 				loc("Place/Delete Waypoint: [Left Click]") .. "|" ..
  2615 				loc("Toggle Placement/Deletion: [Left], [Right]") .. "|" ..
  2608 				loc("Toggle Placement/Deletion: [Left], [Right]") .. "|" ..
  2616 				" " .. "|" ..
  2609 				" " .. "|" ..
  2617 				loc("Change Placement Mode: [Up], [Down]") .. "|" ..
  2610 				loc("Change Placement Mode: [Up], [Down]") .. "|" ..
  2618 				loc("Toggle Help: [Precise]+[1]") .. "|" ..
  2611 				loc("Toggle Help: [Precise]+[1]") .. "|" ..
  2619 				loc("Toggle Gear Information: [Precise]+[3]") .. "|" ..
       
  2620 				"", -amCMGearPlacementTool, 60000, not helpDisabled
  2612 				"", -amCMGearPlacementTool, 60000, not helpDisabled
  2621 				)
  2613 				)
  2622 		hedgeEditorMissionPanelShown = false
  2614 		hedgeEditorMissionPanelShown = false
  2623 
  2615 
  2624 	elseif cat[cIndex] == loc("Mine Placement Mode") then
  2616 	elseif cat[cIndex] == loc("Mine Placement Mode") then
  2629 				loc("Place Object: [Left Click]") .. "|" ..
  2621 				loc("Place Object: [Left Click]") .. "|" ..
  2630 				loc("Change Timer: [Left], [Right]") .. "|" ..
  2622 				loc("Change Timer: [Left], [Right]") .. "|" ..
  2631 				" " .. "|" ..
  2623 				" " .. "|" ..
  2632 				loc("Change Placement Mode: [Up], [Down]") .. "|" ..
  2624 				loc("Change Placement Mode: [Up], [Down]") .. "|" ..
  2633 				loc("Toggle Help: [Precise]+[1]") .. "|" ..
  2625 				loc("Toggle Help: [Precise]+[1]") .. "|" ..
  2634 				loc("Toggle Gear Information: [Precise]+[3]") .. "|" ..
       
  2635 				"", -amMine, 60000, not helpDisabled
  2626 				"", -amMine, 60000, not helpDisabled
  2636 				)
  2627 				)
  2637 		hedgeEditorMissionPanelShown = false
  2628 		hedgeEditorMissionPanelShown = false
  2638 
  2629 
  2639 	elseif cat[cIndex] == loc("Dud Mine Placement Mode") then
  2630 	elseif cat[cIndex] == loc("Dud Mine Placement Mode") then
  2644 				loc("Place Object: [Left Click]") .. "|" ..
  2635 				loc("Place Object: [Left Click]") .. "|" ..
  2645 				loc("Change Health: [Left], [Right]") .. "|" ..
  2636 				loc("Change Health: [Left], [Right]") .. "|" ..
  2646 				" " .. "|" ..
  2637 				" " .. "|" ..
  2647 				loc("Change Placement Mode: [Up], [Down]") .. "|" ..
  2638 				loc("Change Placement Mode: [Up], [Down]") .. "|" ..
  2648 				loc("Toggle Help: [Precise]+[1]") .. "|" ..
  2639 				loc("Toggle Help: [Precise]+[1]") .. "|" ..
  2649 				loc("Toggle Gear Information: [Precise]+[3]") .. "|" ..
       
  2650 				"", 9, 60000, not helpDisabled
  2640 				"", 9, 60000, not helpDisabled
  2651 				)
  2641 				)
  2652 		hedgeEditorMissionPanelShown = false
  2642 		hedgeEditorMissionPanelShown = false
  2653 
  2643 
  2654 	elseif cat[cIndex] == loc("Sticky Mine Placement Mode") then
  2644 	elseif cat[cIndex] == loc("Sticky Mine Placement Mode") then
  2659 				loc("Place Object: [Left Click]") .. "|" ..
  2649 				loc("Place Object: [Left Click]") .. "|" ..
  2660 				loc("Change Timer: [Left], [Right]") .. "|" ..
  2650 				loc("Change Timer: [Left], [Right]") .. "|" ..
  2661 				" " .. "|" ..
  2651 				" " .. "|" ..
  2662 				loc("Change Placement Mode: [Up], [Down]") .. "|" ..
  2652 				loc("Change Placement Mode: [Up], [Down]") .. "|" ..
  2663 				loc("Toggle Help: [Precise]+[1]") .. "|" ..
  2653 				loc("Toggle Help: [Precise]+[1]") .. "|" ..
  2664 				loc("Toggle Gear Information: [Precise]+[3]") .. "|" ..
       
  2665 				"", -amSMine, 60000, not helpDisabled
  2654 				"", -amSMine, 60000, not helpDisabled
  2666 				)
  2655 				)
  2667 		hedgeEditorMissionPanelShown = false
  2656 		hedgeEditorMissionPanelShown = false
  2668 
  2657 
  2669 	elseif cat[cIndex] == loc("Air Mine Placement Mode") then
  2658 	elseif cat[cIndex] == loc("Air Mine Placement Mode") then
  2674 				loc("Place Object: [Left Click]") .. "|" ..
  2663 				loc("Place Object: [Left Click]") .. "|" ..
  2675 				loc("Change Timer: [Left], [Right]") .. "|" ..
  2664 				loc("Change Timer: [Left], [Right]") .. "|" ..
  2676 				" " .. "|" ..
  2665 				" " .. "|" ..
  2677 				loc("Change Placement Mode: [Up], [Down]") .. "|" ..
  2666 				loc("Change Placement Mode: [Up], [Down]") .. "|" ..
  2678 				loc("Toggle Help: [Precise]+[1]") .. "|" ..
  2667 				loc("Toggle Help: [Precise]+[1]") .. "|" ..
  2679 				loc("Toggle Gear Information: [Precise]+[3]") .. "|" ..
       
  2680 				"", -amAirMine, 60000, not helpDisabled
  2668 				"", -amAirMine, 60000, not helpDisabled
  2681 				)
  2669 				)
  2682 		hedgeEditorMissionPanelShown = false
  2670 		hedgeEditorMissionPanelShown = false
  2683 
  2671 
  2684 	elseif cat[cIndex] == loc("Weapon Crate Placement Mode") then
  2672 	elseif cat[cIndex] == loc("Weapon Crate Placement Mode") then
  2689 				loc("Place Object: [Left Click]") .. "|" ..
  2677 				loc("Place Object: [Left Click]") .. "|" ..
  2690 				loc("Change Content: [Left], [Right]") .. "|" ..
  2678 				loc("Change Content: [Left], [Right]") .. "|" ..
  2691 				" " .. "|" ..
  2679 				" " .. "|" ..
  2692 				loc("Change Placement Mode: [Up], [Down]") .. "|" ..
  2680 				loc("Change Placement Mode: [Up], [Down]") .. "|" ..
  2693 				loc("Toggle Help: [Precise]+[1]") .. "|" ..
  2681 				loc("Toggle Help: [Precise]+[1]") .. "|" ..
  2694 				loc("Toggle Gear Information: [Precise]+[3]") .. "|" ..
       
  2695 				"", 7, 60000, not helpDisabled
  2682 				"", 7, 60000, not helpDisabled
  2696 				)
  2683 				)
  2697 		hedgeEditorMissionPanelShown = false
  2684 		hedgeEditorMissionPanelShown = false
  2698 
  2685 
  2699 	elseif cat[cIndex] == loc("Utility Crate Placement Mode") then
  2686 	elseif cat[cIndex] == loc("Utility Crate Placement Mode") then
  2704 				loc("Place Object: [Left Click]") .. "|" ..
  2691 				loc("Place Object: [Left Click]") .. "|" ..
  2705 				loc("Change Content: [Left], [Right]") .. "|" ..
  2692 				loc("Change Content: [Left], [Right]") .. "|" ..
  2706 				" " .. "|" ..
  2693 				" " .. "|" ..
  2707 				loc("Change Placement Mode: [Up], [Down]") .. "|" ..
  2694 				loc("Change Placement Mode: [Up], [Down]") .. "|" ..
  2708 				loc("Toggle Help: [Precise]+[1]") .. "|" ..
  2695 				loc("Toggle Help: [Precise]+[1]") .. "|" ..
  2709 				loc("Toggle Gear Information: [Precise]+[3]") .. "|" ..
       
  2710 				"", 5, 60000, not helpDisabled
  2696 				"", 5, 60000, not helpDisabled
  2711 				)
  2697 				)
  2712 		hedgeEditorMissionPanelShown = false
  2698 		hedgeEditorMissionPanelShown = false
  2713 
  2699 
  2714 	elseif cat[cIndex] == loc("Health Crate Placement Mode") then
  2700 	elseif cat[cIndex] == loc("Health Crate Placement Mode") then
  2719 				loc("Place Object: [Left Click]") .. "|" ..
  2705 				loc("Place Object: [Left Click]") .. "|" ..
  2720 				loc("Change Health Boost: [Left], [Right]") .. "|" ..
  2706 				loc("Change Health Boost: [Left], [Right]") .. "|" ..
  2721 				" " .. "|" ..
  2707 				" " .. "|" ..
  2722 				loc("Change Placement Mode: [Up], [Down]") .. "|" ..
  2708 				loc("Change Placement Mode: [Up], [Down]") .. "|" ..
  2723 				loc("Toggle Help: [Precise]+[1]") .. "|" ..
  2709 				loc("Toggle Help: [Precise]+[1]") .. "|" ..
  2724 				loc("Toggle Gear Information: [Precise]+[3]") .. "|" ..
       
  2725 				"", 6, 60000, not helpDisabled
  2710 				"", 6, 60000, not helpDisabled
  2726 				)
  2711 				)
  2727 		hedgeEditorMissionPanelShown = false
  2712 		hedgeEditorMissionPanelShown = false
  2728 
  2713 
  2729 	elseif cat[cIndex] == loc("Repositioning Mode") then
  2714 	elseif cat[cIndex] == loc("Repositioning Mode") then
  2734 				loc("Select/Place/Delete Gear: [Left Click]") .. "|" ..
  2719 				loc("Select/Place/Delete Gear: [Left Click]") .. "|" ..
  2735 				loc("Choose Selection/Placement/Deletion: [Left], [Right]") .. "|" ..
  2720 				loc("Choose Selection/Placement/Deletion: [Left], [Right]") .. "|" ..
  2736 				" " .. "|" ..
  2721 				" " .. "|" ..
  2737 				loc("Change Placement Mode: [Up], [Down]") .. "|" ..
  2722 				loc("Change Placement Mode: [Up], [Down]") .. "|" ..
  2738 				loc("Toggle Help: [Precise]+[1]") .. "|" ..
  2723 				loc("Toggle Help: [Precise]+[1]") .. "|" ..
  2739 				loc("Toggle Gear Information: [Precise]+[3]") .. "|" ..
       
  2740 				"", -amCMGearPlacementTool, 60000, not helpDisabled
  2724 				"", -amCMGearPlacementTool, 60000, not helpDisabled
  2741 				)
  2725 				)
  2742 		hedgeEditorMissionPanelShown = false
  2726 		hedgeEditorMissionPanelShown = false
  2743 
  2727 
  2744 	elseif cat[cIndex] == loc("Sprite Modification Mode") then
  2728 	elseif cat[cIndex] == loc("Sprite Modification Mode") then
  2755 				loc("Icy Land: [3]") .. "|" ..
  2739 				loc("Icy Land: [3]") .. "|" ..
  2756 				loc("Bouncy Land: [4]") .. "|" ..
  2740 				loc("Bouncy Land: [4]") .. "|" ..
  2757 				" " .. "|" ..
  2741 				" " .. "|" ..
  2758 				loc("Change Placement Mode: [Up], [Down]") .. "|" ..
  2742 				loc("Change Placement Mode: [Up], [Down]") .. "|" ..
  2759 				loc("Toggle Help: [Precise]+[1]") .. "|" ..
  2743 				loc("Toggle Help: [Precise]+[1]") .. "|" ..
  2760 				loc("Toggle Gear Information: [Precise]+[3]") .. "|" ..
       
  2761 				"", 2, 60000, not helpDisabled
  2744 				"", 2, 60000, not helpDisabled
  2762 				)
  2745 				)
  2763 		hedgeEditorMissionPanelShown = false
  2746 		hedgeEditorMissionPanelShown = false
  2764 
  2747 
  2765 	elseif cat[cIndex] == loc("Sprite Placement Mode") then
  2748 	elseif cat[cIndex] == loc("Sprite Placement Mode") then
  2776 				loc("Icy Land: [3]") .. "|" ..
  2759 				loc("Icy Land: [3]") .. "|" ..
  2777 				loc("Bouncy Land: [4]") .. "|" ..
  2760 				loc("Bouncy Land: [4]") .. "|" ..
  2778 				" " .. "|" ..
  2761 				" " .. "|" ..
  2779 				loc("Change Placement Mode: [Up], [Down]") .. "|" ..
  2762 				loc("Change Placement Mode: [Up], [Down]") .. "|" ..
  2780 				loc("Toggle Help: [Precise]+[1]") .. "|" ..
  2763 				loc("Toggle Help: [Precise]+[1]") .. "|" ..
  2781 				loc("Toggle Gear Information: [Precise]+[3]") .. "|" ..
       
  2782 				"", -amCMGearPlacementTool, 60000, not helpDisabled
  2764 				"", -amCMGearPlacementTool, 60000, not helpDisabled
  2783 				)
  2765 				)
  2784 		hedgeEditorMissionPanelShown = false
  2766 		hedgeEditorMissionPanelShown = false
  2785 
  2767 
  2786 	elseif cat[cIndex] == loc("Goal Definition Mode") then
  2768 	elseif cat[cIndex] == loc("Goal Definition Mode") then
  2791 				loc("Mark/unmark gear: [Left Click]") .. "|" ..
  2773 				loc("Mark/unmark gear: [Left Click]") .. "|" ..
  2792 				loc("Select win/lose condition: [Left], [Right]") .. "|" ..
  2774 				loc("Select win/lose condition: [Left], [Right]") .. "|" ..
  2793 				" " .. "|" ..
  2775 				" " .. "|" ..
  2794 				loc("Change Placement Mode: [Up], [Down]") .. "|" ..
  2776 				loc("Change Placement Mode: [Up], [Down]") .. "|" ..
  2795 				loc("Toggle Help: [Precise]+[1]") .. "|" ..
  2777 				loc("Toggle Help: [Precise]+[1]") .. "|" ..
  2796 				loc("Toggle Gear Information: [Precise]+[3]") .. "|" ..
       
  2797 				"", 0, 60000, not helpDisabled
  2778 				"", 0, 60000, not helpDisabled
  2798 				)
  2779 				)
  2799 		hedgeEditorMissionPanelShown = false
  2780 		hedgeEditorMissionPanelShown = false
  2800 	elseif cat[cIndex] == loc("Hog Identity Mode") then
  2781 	elseif cat[cIndex] == loc("Hog Identity Mode") then
  2801 
  2782 
  2805 				loc("Set Identity: [Left Click]") .. "|" ..
  2786 				loc("Set Identity: [Left Click]") .. "|" ..
  2806 				loc("[Left], [Right]: Change between identities.") .. "|" ..
  2787 				loc("[Left], [Right]: Change between identities.") .. "|" ..
  2807 				" " .. "|" ..
  2788 				" " .. "|" ..
  2808 				loc("Change Placement Mode: [Up], [Down]") .. "|" ..
  2789 				loc("Change Placement Mode: [Up], [Down]") .. "|" ..
  2809 				loc("Toggle Help: [Precise]+[1]") .. "|" ..
  2790 				loc("Toggle Help: [Precise]+[1]") .. "|" ..
  2810 				loc("Toggle Gear Information: [Precise]+[3]") .. "|" ..
       
  2811 				"", 3, 60000, not helpDisabled
  2791 				"", 3, 60000, not helpDisabled
  2812 				)
  2792 				)
  2813 		hedgeEditorMissionPanelShown = false
  2793 		hedgeEditorMissionPanelShown = false
  2814 
  2794 
  2815 	elseif cat[cIndex] == loc("Team Identity Mode") then
  2795 	elseif cat[cIndex] == loc("Team Identity Mode") then
  2820 				loc("Set Identity: [Left Click]") .. "|" ..
  2800 				loc("Set Identity: [Left Click]") .. "|" ..
  2821 				loc("[Left], [Right]: Change between identities.") .. "|" ..
  2801 				loc("[Left], [Right]: Change between identities.") .. "|" ..
  2822 				" " .. "|" ..
  2802 				" " .. "|" ..
  2823 				loc("Change Placement Mode: [Up], [Down]") .. "|" ..
  2803 				loc("Change Placement Mode: [Up], [Down]") .. "|" ..
  2824 				loc("Toggle Help: [Precise]+[1]") .. "|" ..
  2804 				loc("Toggle Help: [Precise]+[1]") .. "|" ..
  2825 				loc("Toggle Gear Information: [Precise]+[3]") .. "|" ..
       
  2826 				"", 3, 60000, not helpDisabled
  2805 				"", 3, 60000, not helpDisabled
  2827 				)
  2806 				)
  2828 		hedgeEditorMissionPanelShown = false
  2807 		hedgeEditorMissionPanelShown = false
  2829 
  2808 
  2830 	elseif cat[cIndex] == loc("Health Modification Mode") then
  2809 	elseif cat[cIndex] == loc("Health Modification Mode") then
  2835 				loc("Set Health: [Left Click]") .. "|" ..
  2814 				loc("Set Health: [Left Click]") .. "|" ..
  2836 				loc("[Left], [Right]: Change health value.") .. "|" ..
  2815 				loc("[Left], [Right]: Change health value.") .. "|" ..
  2837 				" " .. "|" ..
  2816 				" " .. "|" ..
  2838 				loc("Change Placement Mode: [Up], [Down]") .. "|" ..
  2817 				loc("Change Placement Mode: [Up], [Down]") .. "|" ..
  2839 				loc("Toggle Help: [Precise]+[1]") .. "|" ..
  2818 				loc("Toggle Help: [Precise]+[1]") .. "|" ..
  2840 				loc("Toggle Gear Information: [Precise]+[3]") .. "|" ..
       
  2841 				"", 2, 60000, not helpDisabled
  2819 				"", 2, 60000, not helpDisabled
  2842 				)
  2820 				)
  2843 		hedgeEditorMissionPanelShown = false
  2821 		hedgeEditorMissionPanelShown = false
  2844 
  2822 
  2845 	end
  2823 	end
  3107 	end
  3085 	end
  3108 
  3086 
  3109 	-- Show cursor coords
  3087 	-- Show cursor coords
  3110 	updateCursorCoords()
  3088 	updateCursorCoords()
  3111 
  3089 
  3112 	-- Barrel health tags, mine timer tags and health crate health tags
       
  3113 	if GameTime % 20 == 0 then
       
  3114 		local actualValue	-- internal value
       
  3115 		local printedValue	-- value exposed to HUD
       
  3116 		for g, v in pairs(tagGears) do
       
  3117 			local gt = GetGearType(g)
       
  3118 			if v == -1 then
       
  3119 				if gt == gtCase then
       
  3120 					if(band(GetGearPos(g), 0x2) ~= 0) and (band(GetState(g), gstFrozen) == 0) then
       
  3121 						v = AddVisualGear(0, 0, vgtHealthTag, GetHealth(g), true)
       
  3122 						SetVisualGearValues(v, nil, nil, 0, 0, nil, 0, 1, nil, 240000, 0x808080FF)
       
  3123 						tagGears[g] = v
       
  3124 					else
       
  3125 						tagGears[g] = nil
       
  3126 					end
       
  3127 				else
       
  3128 					if gt == gtMine and GetHealth(g) == 0 then
       
  3129 						local _, damage, health
       
  3130 						_, _, _, _, _, _, _, _, _, _, _, damage = GetGearValues(g)
       
  3131 						health = 36 - damage
       
  3132 						v = AddVisualGear(0, 0, vgtHealthTag, health, true)
       
  3133 						SetVisualGearValues(v, nil, nil, 0, 0, nil, 0, 1, nil, 240000, 0x808080FF)
       
  3134 						tagGears[g] = v
       
  3135 					end
       
  3136 				end
       
  3137 			end
       
  3138 			-- Delete tag for drowning gears
       
  3139 			if(band(GetState(g), gstDrowning) ~= 0) then
       
  3140 				DeleteVisualGear(v)
       
  3141 				tagGears[g] = nil
       
  3142 			-- Delete tag for frozen sticky mines, air mines and crates
       
  3143 			elseif(band(GetState(g), gstFrozen) ~= 0 and (gt == gtAirMine or gt == gtSMine or gt == gtCase)) then
       
  3144 				DeleteVisualGear(v)
       
  3145 				tagGears[g] = nil
       
  3146 			elseif(tagGears[g] ~= nil and tagGears[g] ~= -1) then
       
  3147 				local tag, actualvalue, offset_x, offset_y
       
  3148 				tag = GetState(v)
       
  3149 				if(gt == gtExplosives) then
       
  3150 					actualValue = GetHealth(g)
       
  3151 					printedValue = actualValue
       
  3152 					offset_y = -20
       
  3153 					offset_x = 0
       
  3154 				elseif(gt == gtAirMine) then
       
  3155 					if(band(GetState(g), gstAttacking) ~= 0) then
       
  3156 						actualValue = GetTimer(g)
       
  3157 						printedValue = actualValue
       
  3158 					else
       
  3159 						local _
       
  3160 						_, _, actualValue = GetGearValues(g)
       
  3161 						printedValue = actualValue
       
  3162 					end
       
  3163 					offset_y = 28
       
  3164 					offset_x = 16
       
  3165 				elseif(gt == gtCase) then
       
  3166 					actualValue = GetHealth(g)
       
  3167 					printedValue = actualValue
       
  3168 					offset_y = -20
       
  3169 					offset_x = 1
       
  3170 				elseif(gt == gtMine) then
       
  3171 					if(GetHealth(g) ~= 0) then
       
  3172 						-- Non-dud: Show timer
       
  3173 						actualValue = GetTimer(g)
       
  3174 						printedValue = actualValue
       
  3175 						offset_y = 28
       
  3176 						offset_x = 16
       
  3177 					else
       
  3178 						-- Dud: Show health
       
  3179 						local _
       
  3180 						_, _, _, _, _, _, _, _, _, _, _, actualValue = GetGearValues(g)
       
  3181 						printedValue = 36 - actualValue
       
  3182 						offset_y = -12
       
  3183 						offset_x = 0
       
  3184 					end
       
  3185 				elseif(gt == gtSMine) then
       
  3186 					actualValue = GetTimer(g)
       
  3187 					printedValue = actualValue
       
  3188 					offset_y = 28
       
  3189 					offset_x = 16
       
  3190 				end
       
  3191 				local tint
       
  3192 				if(not showGearTags) then
       
  3193 					-- Hide the tags
       
  3194 					tint = 0x00000000
       
  3195 				elseif(gt == gtCase) then
       
  3196 					tint = 0x80FF80FF
       
  3197 				elseif(gt == gtExplosives or (gt == gtMine and GetHealth(g) == 0)) then
       
  3198 					tint = 0x808080FF
       
  3199 				elseif(band(GetState(g), gstAttacking) ~= 0) then
       
  3200 					if(actualValue % 1000 > 500) then
       
  3201 						tint = 0xFFA0A0FF
       
  3202 					else
       
  3203 						tint = 0xFF4040FF
       
  3204 					end
       
  3205 				else
       
  3206 					tint = 0xFFFFFFFF
       
  3207 				end
       
  3208 				if(actualValue ~= tag) then
       
  3209 					--[[ If timer/health changed, delete visual gear and add it again.
       
  3210 					Changing the visual gear state does not have any effect, so we need this hack ]]
       
  3211 					DeleteVisualGear(v)
       
  3212 					v = AddVisualGear(GetX(g)+offset_x, GetY(g)+offset_y, vgtHealthTag, printedValue, true)
       
  3213 					SetVisualGearValues(v, nil, nil, 0, 0, nil, 0, 1, nil, 240000, tint)
       
  3214 					tagGears[g] = v
       
  3215 				else
       
  3216 					-- Just update position if the health did not change
       
  3217 					SetVisualGearValues(v, GetX(g)+offset_x, GetY(g)+offset_y, 0, 0, nil, 0, 1, nil, 240000, tint)
       
  3218 				end
       
  3219 			end
       
  3220 		end
       
  3221 	end
       
  3222 end
  3090 end
  3223 
  3091 
  3224 --------------------------------------------------
  3092 --------------------------------------------------
  3225 -- EVENT HANDLERS
  3093 -- EVENT HANDLERS
  3226 --------------------------------------------------
  3094 --------------------------------------------------
  3252 			AddCaption(loc("Help Disabled"), colorInfoMessage, capgrpVolume)
  3120 			AddCaption(loc("Help Disabled"), colorInfoMessage, capgrpVolume)
  3253 		else
  3121 		else
  3254 			AddCaption(loc("Help Enabled"), colorInfoMessage, capgrpVolume)
  3122 			AddCaption(loc("Help Enabled"), colorInfoMessage, capgrpVolume)
  3255 		end
  3123 		end
  3256 		updateHelp()
  3124 		updateHelp()
  3257 	elseif (preciseOn == true) and (s == 3) then
       
  3258 		showGearTags = not(showGearTags)
       
  3259 		if showGearTags then
       
  3260 			AddCaption(loc("Gear information shown"), colorInfoMessage, capgrpVolume)
       
  3261 		else
       
  3262 			AddCaption(loc("Gear information hidden"), colorInfoMessage, capgrpVolume)
       
  3263 		end
       
  3264 
       
  3265 	elseif (cat[cIndex] == loc("Sprite Placement Mode")) or (cat[cIndex] == loc("Girder Placement Mode")) or (cat[cIndex] == loc("Rubber Placement Mode")) or (cat[cIndex] == loc("Sprite Modification Mode")) then
  3125 	elseif (cat[cIndex] == loc("Sprite Placement Mode")) or (cat[cIndex] == loc("Girder Placement Mode")) or (cat[cIndex] == loc("Rubber Placement Mode")) or (cat[cIndex] == loc("Sprite Modification Mode")) then
  3266 
  3126 
  3267 		if (cat[cIndex] == loc("Rubber Placement Mode")) then
  3127 		if (cat[cIndex] == loc("Rubber Placement Mode")) then
  3268 			if s == 1 then
  3128 			if s == 1 then
  3269 				landType = lfBouncy
  3129 				landType = lfBouncy
  3505 		" " .. "|" ..
  3365 		" " .. "|" ..
  3506 		loc("Place Girder: Girder") .. "|" ..
  3366 		loc("Place Girder: Girder") .. "|" ..
  3507 		loc("Place Rubber: Rubber") .. "|" ..
  3367 		loc("Place Rubber: Rubber") .. "|" ..
  3508 		loc("Place Gears (and more): Gear Placement Tool") .. "|" ..
  3368 		loc("Place Gears (and more): Gear Placement Tool") .. "|" ..
  3509 		loc("Toggle Help: [Precise]+[1]") .. "|" ..
  3369 		loc("Toggle Help: [Precise]+[1]") .. "|" ..
  3510 		loc("Toggle Gear Information: [Precise]+[3]") .. "|" ..
       
  3511 		" " .. "|" ..
  3370 		" " .. "|" ..
  3512 		loc("Editing Commands: (Use while no weapon is selected)") .. "|" ..
  3371 		loc("Editing Commands: (Use while no weapon is selected)") .. "|" ..
  3513 		loc("Save Level: [Precise]+[4]") .. "|" ..
  3372 		loc("Save Level: [Precise]+[4]") .. "|" ..
  3514 		loc("Toggle Editing Weapons and Tools: [Precise]+[2]")
  3373 		loc("Toggle Editing Weapons and Tools: [Precise]+[2]")
  3515 		, 4, 5000
  3374 		, 4, 5000
  3841 		cGear = gear
  3700 		cGear = gear
  3842 		cGearPlacementDone = false
  3701 		cGearPlacementDone = false
  3843 	end
  3702 	end
  3844 
  3703 
  3845 	local tagTint
  3704 	local tagTint
  3846 	if showGearTags then
       
  3847 		tagTint = 0xFFFFFFFF
       
  3848 	else
       
  3849 		tagTint = 0x00000000
       
  3850 	end
       
  3851 	if ((GetGearType(gear) == gtMine and GetHealth(gear) ~= 0) or (GetGearType(gear) == gtSMine and band(GetState(gear), gstFrozen) == 0)) then
       
  3852 		local v = AddVisualGear(0, 0, vgtHealthTag, GetTimer(gear), true)
       
  3853 		SetVisualGearValues(v, nil, nil, 0, 0, nil, 0, 1, nil, 240000, tagTint)
       
  3854 		tagGears[gear] = v
       
  3855 	elseif ((GetGearType(gear) == gtMine and GetHealth(gear) == 0)) then
       
  3856 		local _, dmg
       
  3857 		_, _, _, _, _, _, _, _, _, _, dmg = GetGearValues(gear)
       
  3858 		local v = AddVisualGear(0, 0, vgtHealthTag, 36 - dmg, true)
       
  3859 		SetVisualGearValues(v, nil, nil, 0, 0, nil, 0, 1, nil, 240000, tagTint)
       
  3860 		tagGears[gear] = v
       
  3861 	elseif (GetGearType(gear) == gtAirMine and band(GetState(gear), gstFrozen) == 0) then
       
  3862 		local _, wdTimer
       
  3863 		_, _, wdTimer = GetGearValues(gear)
       
  3864 		local v = AddVisualGear(0, 0, vgtHealthTag, wdTimer, true)
       
  3865 		SetVisualGearValues(v, nil, nil, 0, 0, nil, 0, 1, nil, 240000, tagTint)
       
  3866 		tagGears[gear] = v
       
  3867 	elseif (GetGearType(gear) == gtCase) then
       
  3868 		tagGears[gear] = -1
       
  3869 	elseif (GetGearType(gear) == gtExplosives) then 
       
  3870 		local v = AddVisualGear(0, 0, vgtHealthTag, GetHealth(gear), true)
       
  3871 		SetVisualGearValues(v, nil, nil, 0, 0, nil, 0, 1, nil, 240000, tagTint)
       
  3872 		tagGears[gear] = v
       
  3873 	end
       
  3874 
  3705 
  3875 	if isATrackedGear(gear) then
  3706 	if isATrackedGear(gear) then
  3876 		trackGear(gear)
  3707 		trackGear(gear)
  3877 
  3708 
  3878 		if GetGearType(gear) == gtPortal then
  3709 		if GetGearType(gear) == gtPortal then
  3891 	end
  3722 	end
  3892 
  3723 
  3893 	if (gt == gtAirAttack and GetGearPos(gear) == 0) or gt == gtGirder then
  3724 	if (gt == gtAirAttack and GetGearPos(gear) == 0) or gt == gtGirder then
  3894 		cGear = nil
  3725 		cGear = nil
  3895 	end
  3726 	end
  3896 
       
  3897 	if (gt == gtMine or gt == gtSMine or gt == gtAirMine or gt == gtExplosives or gt == gtCase) then 
       
  3898 		if(tagGears[gear] ~= -1) then
       
  3899 			DeleteVisualGear(tagGears[gear])
       
  3900 		end
       
  3901 		tagGears[gear] = nil
       
  3902 	end
       
  3903 
       
  3904 
  3727 
  3905 	if isATrackedGear(gear) then
  3728 	if isATrackedGear(gear) then
  3906 
  3729 
  3907 		if getGearValue(gear, "tCirc") ~= nil then
  3730 		if getGearValue(gear, "tCirc") ~= nil then
  3908 			DeleteVisualGear(getGearValue(gear, "tCirc"))
  3731 			DeleteVisualGear(getGearValue(gear, "tCirc"))