View Issue Details

IDProjectCategoryView StatusLast Update
0006658The Dark ModCodingpublic18.01.2026 10:20
ReporterSTiFU Assigned ToSTiFU  
PrioritynormalSeveritynormalReproducibilityN/A
Status feedbackResolutionopen 
Product VersionTDM 2.13 
Target VersionTDM 2.14 
Summary0006658: Refactor frob handling to better support different frob control styles
DescriptionThe PerformFrob*() methods accumulated some technical debt over time. A refactor is long overdue, especially considering there was a lot of debate on how frob actions should be controlled and the current implementation does not easily allow switch different control styles.
TagsNo tags attached.

Relationships

related to 0006316 resolvedDaft Mugi Add Hold Frob for Alternate Interaction 

Activities

STiFU

STiFU

18.01.2026 10:18

developer   ~0017133

I have refactored the frob handling code in my /branches/STiFU_FrobRefactor. The main changes are:
- Short or long press frob is determined first and independently of entity type
- Each frob action is handled in its own function to make state a bit more clear.
- The input triggers and additional conditions needed for a certain action to occur are checked in a single function, allowing for easy switching of controls styles.
- An inheritence based code path has been removed because that was only used by one entity type for an experimental feature.

There is now a new cvar for setting the control style, called tdm_frob_control_style. The original TDM control style has been extended with long frob functionality that can optionally be disabled. There is also a new control style TDM_inverted, which I had proposed back in 2.12.
- 0 -- TDM-style
    - short frob = grabber,
    - long frob = Directly use world item (shortcut for grabber and then "use", long frob can optionally be disabled by setting tdm_holdfrob_delay = 0 )
- 1 -- Thief-style (Daft Mugis 2.12)
    - Like TDM-style, with the exception that the behaviour for shoulderable bodies is flipped
- 2 -- TDM_inverted-style
    - short frob = Directly use world item
    - long frob = grabber (Depending on cv_holdfrob_drag_entity_behavior the grabber is released upon keyup or next frob keydown)

Issue History

Date Modified Username Field Change
18.01.2026 10:09 STiFU New Issue
18.01.2026 10:09 STiFU Status new => assigned
18.01.2026 10:09 STiFU Assigned To => STiFU
18.01.2026 10:10 STiFU Relationship added related to 0006316
18.01.2026 10:18 STiFU Note Added: 0017133
18.01.2026 10:20 STiFU Status assigned => feedback