I want to create a graphical interface for inputing skill build orders for an RPG game. A skill build is **an ordered list of (skill, number) pairs**, like this: (A x1) -> (B *) -> (C x2) -> (A *) I want to create a graphical interface that can add items to this kind of list, preferably in any position of it. The main idea I am having now is to make some sort of drag-and-drop interface, with icons representing the skills current build = (A x1) -> (B *) -> ... ----------------------------------------- amount: [ 1 | 2 | 3 | 4 | * ] (radio buttons or drop-down selector) skills: +---+ +---+ +---+ | A | | B | | C | +---+ +---+ +---+ Clicking an icon would add the item-number combination to the end of the list (the most common place to add things to) and dragging it to a spot on the result list would cause it to be inserted there instead. But I imagine having to do multiple clicks to select the number and the icon would be awkward. An alternative might be having a button for each possible pair: +----+ +----+ +----+ |A *| |B *| |C *| +----+ +----+ +----+ +----+ +----+ +----+ |A x1| |B x1| |C x1| +----+ +----+ +----+ +----+ +----+ +----+ |A x2| |B x2| |C x2| +----+ +----+ +----+ //and so on But then I think it would get way too cluttered. **What is the best way to input such a list of pairs?** **Are there any places where a similar problem was solved and where I can take inspiration from?** Some design considerations: * I have 4-5 skills and the numbers range from 3-5 (and the * wildcard) * Some numbers (1 and *) will be selected more often then others (2,3,4). All skills are equally likely to be selected. * If we choose an asymmetrical design, skills should be prioritized over numbers. * I am primarily interested in obtaining a fast and clean workflow. It is OK if the final result ends up a little complicated or unintuitive. * (I'm planning on having a default interface that is really easy to use and just mimics the interface from the game the build describes. However, this is not optimized for entering a whole build at once so I want to provide a faster alternative.)