Not logged inOpenClonk Forum
Up Topic Development / Developer's Corner / Controls Branch - State
1 2 3 4 Previous Next
- - By Zapper [de] Date 2015-01-14 17:09 Edited 2015-04-13 21:29
This is a checklist of stuff that is needed for the Controls branch.

Things that are necessary for a merge into master are marked with [!].

[!] Test everything. The controls branch messes with a lot of different things. Make sure that there are no major bugs.
[!] Evaluate the interaction menu for user-friendlyness. What could be improved?
- Implement drag&drop for the new gui system + script interface.
- Make the Clonk icons (top of screen) use the new gui system.
- People have complained about "soft" controls in OC before. As in, the Clonk does not react instantly. This might be the time to mess with the acceleration values if necessary?
- fix backwards throw when running hitting you in the face
- Possibly add an old-school HP bar at the left of the screen?!
- Add "Transfer all" button to the interaction menu
- Add a "material piles" to interaction menu of producers. (Pyrit)
       This would need some additional work in the interaction menu, though. (Being able to show custom menu entries instead of just lists of objects, which is planned anyway).

- Add settings for the menu and font size to the options.
        Font size is clear. Menu size should however say how much space of the screen a default menu covers.
        I can imagine that a fullscreen menu with a huge screen usually looks pretty stupid, while on a small screen it should cover everything -> make available to user and give sensible defaults.

- Remove the new features of the now bloated CustomMessage, which are not used anyway.
- Add support (aka "display") for the "extra slot" functionality (bow, musket, etc..)
- Add some more abstraction for standard menus that favour ease of scripting over custom layouts?
- Get rid of old menu libraries (CircleMenu.ocd) as they are not used anymore or reimplement them with the new GUI system.
- Possibly remove throw-on-leftclick and make left-click only Use the item (or do nothing) and rightclick always throw the item?
[!] Make sure that the production menu works correctly.
    - production is broken? (Pyrit)

- Make sure all items use the new RejectUse callback.
- Add a "current queue" to interaction menu of producers.
    - Add "infinite production" and "cancel production" to production-queue of producers.
- Add a "your environment" to interaction menu to be able to pick up stuff from the ground.
[!] Make other structures (flag/rope tower/pump) use the new interaction menu. Depending on the aspired final layout this is either extremely trivial or could require messing with the interaction menu itself.

I am posting this now not only because someone asked, but also because I want to keep track of it for myself. I will most likely not have much time until after the exams again (even though there definitely was progress over christmas!).
This list is certainly not complete.
Parent - By Newton [de] Date 2015-01-14 18:46
Thanks for that overview!
Parent - By Maikel Date 2015-01-14 19:46
Indeed good to have a list!

I think some basic testing on the controls branch (playing at least a few multiplayer melees and settlement rounds) is essential before merging.
Parent - - By Maikel Date 2015-01-15 12:18
Something which crossed my mind which is nice to have is also implement the scoreboard with the new menu functionality. It gives the developer more freedom, but it is probably good to have a library for this before everyone tries his own way.
Parent - - By Marky [de] Date 2015-01-15 18:14
Oh yes, definitely. It was one of the most annoying features to use :D
Parent - By Zapper [de] Date 2015-01-15 19:53
Since some years, there is an easy-to-use abstraction layer around the scoreboard.
Parent - By Zapper [de] Date 2015-01-15 19:53
True, that might be worth it. But I think we should have a really good usecase for what is needed and why before someone starts to blindly (re)implement some random scoreboard functionality.
Parent - - By Maikel Date 2015-01-15 19:34
Could you merge master again into controls? I can't compile currently due to some annoying difference between optional CMake options which lead to compilation errors.
Parent - By Zapper [de] Date 2015-01-15 19:56
Oh, yes. I did the work yesterday already but didn't commit and push it yet.
Parent - - By Caesar [jp] Date 2015-01-16 05:20
Do you somewhere have an overview text of how the controls work now? E.g, how do I stop a construction? How do I pick up stuff without standing in front of it and scrolling? Is it possible to rearrange the item order in the menu?

Also: Do you prefer If I file bugs for stuff like "The mouse position detection in the interaction menu is broken, you have to click lower than the item is displayed.", or should I just tell you?
Parent - - By Zapper [de] Date 2015-01-17 15:30
There is no overview at the moment.

And I think that posting the bugs here is better for now. At least if the bugs are not in the master branch and/or until Controls is very close to be merged

>how do I stop a construction?


Didn't change anything there yet

>How do I pick up stuff without standing in front of it and scrolling?


I plan to add an "environment" tab to the inventory menu; also maybe allowing collection with [down] into any slot might make sense?

> Is it possible to rearrange the item order in the menu?


No. That's not planned at the moment
Parent - By Caesar [jp] Date 2015-01-18 03:40

> also maybe allowing collection with [down] into any slot might make sense?


In terms of quick melee play… I think so.
Parent - - By Maikel Date 2015-01-17 10:29
openclonk: /home/maikel/openclonk/repos/src/gui/C4ScriptGuiWindow.cpp:978: bool C4ScriptGuiWindow::CreateFromPropList(C4PropList*, bool, bool, bool): Assertion `key && "PropList returns non-string as key"' failed.
6.0: Caught signal SIGABRT
/home/maikel/openclonk/repos/build/openclonk[0x7be995]
/lib/x86_64-linux-gnu/libc.so.6(+0x36d40)[0x7f2d40196d40]
/lib/x86_64-linux-gnu/libc.so.6(gsignal+0x39)[0x7f2d40196cc9]
/lib/x86_64-linux-gnu/libc.so.6(abort+0x148)[0x7f2d4019a0d8]
/lib/x86_64-linux-gnu/libc.so.6(+0x2fb86)[0x7f2d4018fb86]
/lib/x86_64-linux-gnu/libc.so.6(+0x2fc32)[0x7f2d4018fc32]
/home/maikel/openclonk/repos/build/openclonk(_ZN17C4ScriptGuiWindow18CreateFromPropListEP10C4PropListbbb+0x10f)[0x8fa215]
/home/maikel/openclonk/repos/build/openclonk(_ZN17C4ScriptGuiWindow18CreateFromPropListEP10C4PropListbbb+0x721)[0x8fa827]
/home/maikel/openclonk/repos/build/openclonk(_ZN17C4ScriptGuiWindow18CreateFromPropListEP10C4PropListbbb+0x721)[0x8fa827]
/home/maikel/openclonk/repos/build/openclonk(_ZN17C4ScriptGuiWindow18CreateFromPropListEP10C4PropListbbb+0x721)[0x8fa827]
/home/maikel/openclonk/repos/build/openclonk(_ZN17C4ScriptGuiWindow18CreateFromPropListEP10C4PropListbbb+0x721)[0x8fa827]
/home/maikel/openclonk/repos/build/openclonk[0x88716d]
/home/maikel/openclonk/repos/build/openclonk(_ZN13C4AulDefFunc1IiP10C4PropListE4ExecES1_P7C4Valueb+0x42)[0x8979b6]
/home/maikel/openclonk/repos/build/openclonk(_ZN9C4AulExec4CallEP9C4AulFuncP7C4ValueS3_P10C4PropList+0x52c)[0xb5cf04]
/home/maikel/openclonk/repos/build/openclonk(_ZN9C4AulExec4ExecEP8C4AulBCCb+0xc7c9)[0xb5b18b]
/home/maikel/openclonk/repos/build/openclonk(_ZN9C4AulExec4ExecEP15C4AulScriptFuncP10C4PropListP7C4Valueb+0x268)[0xb4e97a]
/home/maikel/openclonk/repos/build/openclonk(_ZN15C4AulScriptFunc4ExecEP10C4PropListP7C4Valueb+0x63)[0xb5d795]
/home/maikel/openclonk/repos/build/openclonk(_ZN9C4AulFunc4ExecEP10C4PropListP11C4AulParSetb+0x43)[0x7f5947]
/home/maikel/openclonk/repos/build/openclonk(_ZN10C4PropList4CallEPKcP11C4AulParSetb+0xad)[0xb71abf]
/home/maikel/openclonk/repos/build/openclonk(_ZN8C4Effect6DoCallEP8C4ObjectPKcRK7C4ValueS6_S6_S6_S6_S6_S6_+0x1a1)[0x874be7]
/home/maikel/openclonk/repos/build/openclonk[0x885e0d]
/home/maikel/openclonk/repos/build/openclonk(_ZN12C4AulDefFunc4ExecEP10C4PropListP7C4Valueb+0x65)[0xb77dab]
/home/maikel/openclonk/repos/build/openclonk(_ZN9C4AulExec4CallEP9C4AulFuncP7C4ValueS3_P10C4PropList+0x52c)[0xb5cf04]
/home/maikel/openclonk/repos/build/openclonk(_ZN9C4AulExec4ExecEP8C4AulBCCb+0xc7c9)[0xb5b18b]
/home/maikel/openclonk/repos/build/openclonk(_ZN9C4AulExec4ExecEP15C4AulScriptFuncP10C4PropListP7C4Valueb+0x268)[0xb4e97a]
/home/maikel/openclonk/repos/build/openclonk(_ZN15C4AulScriptFunc4ExecEP10C4PropListP7C4Valueb+0x63)[0xb5d795]
/home/maikel/openclonk/repos/build/openclonk(_ZN9C4AulFunc4ExecEP10C4PropListP11C4AulParSetb+0x43)[0x7f5947]
/home/maikel/openclonk/repos/build/openclonk(_ZN8C4Effect3NewEP8C4ObjectP8C4StringiiS1_4C4IDRK7C4ValueS7_S7_S7_+0x33f)[0x8729e1]
/home/maikel/openclonk/repos/build/openclonk[0x88596f]
/home/maikel/openclonk/repos/build/openclonk(_ZN14C4AulDefFunc10I7C4ValueP8C4StringP8C4ObjectiiS4_4C4IDRKS0_S7_S7_S7_E4ExecEP10C4PropListPS0_b+0x156)[0x89688a]
/home/maikel/openclonk/repos/build/openclonk(_ZN9C4AulExec4CallEP9C4AulFuncP7C4ValueS3_P10C4PropList+0x52c)[0xb5cf04]
/home/maikel/openclonk/repos/build/openclonk(_ZN9C4AulExec4ExecEP8C4AulBCCb+0xc7c9)[0xb5b18b]
/home/maikel/openclonk/repos/build/openclonk(_ZN9C4AulExec4ExecEP15C4AulScriptFuncP10C4PropListP7C4Valueb+0x268)[0xb4e97a]
/home/maikel/openclonk/repos/build/openclonk(_ZN15C4AulScriptFunc4ExecEP10C4PropListP7C4Valueb+0x63)[0xb5d795]
/home/maikel/openclonk/repos/build/openclonk(_ZN9C4AulFunc4ExecEP10C4PropListP11C4AulParSetb+0x43)[0x7f5947]
/home/maikel/openclonk/repos/build/openclonk(_ZN10C4PropList4CallEPKcP11C4AulParSetb+0xad)[0xb71abf]
/home/maikel/openclonk/repos/build/openclonk(_ZN15C4PlayerControl20ExecuteControlScriptEi4C4IDbRK14C4KeyEventDatab+0x394)[0x80eaec]
/home/maikel/openclonk/repos/build/openclonk(_ZN15C4PlayerControl20ExecuteControlActionEiN18C4PlayerControlDef7ActionsE4C4IDbRK14C4KeyEventDatab+0x12e)[0x80e1a6]
/home/maikel/openclonk/repos/build/openclonk(_ZN15C4PlayerControl14ExecuteControlEibRK14C4KeyEventDataibb+0x2e1)[0x80e013]
/home/maikel/openclonk/repos/build/openclonk(_ZN15C4PlayerControl20ExecuteControlPacketEPK22C4ControlPlayerControl+0xe9)[0x80dcbb]
/home/maikel/openclonk/repos/build/openclonk(_ZNK22C4ControlPlayerControl7ExecuteEv+0x66)[0x7ec3d4]
/home/maikel/openclonk/repos/build/openclonk(_ZNK9C4Control7ExecuteEv+0x66)[0x7ea710]
/home/maikel/openclonk/repos/build/openclonk(_ZN13C4GameControl7ExecuteEv+0x1c4)[0x7fe4a2]
/home/maikel/openclonk/repos/build/openclonk(_ZN6C4Game7ExecuteEv+0x79)[0x851d9d]
/home/maikel/openclonk/repos/build/openclonk(_ZN13C4Application8GameTickEv+0x2a5)[0x84dfa9]
/home/maikel/openclonk/repos/build/openclonk(_ZN22C4ApplicationGameTimer7ExecuteEiP6pollfd+0x204)[0x84e7a2]
/home/maikel/openclonk/repos/build/openclonk(_ZN12StdScheduler15DoScheduleProcsEi+0x46c)[0xbb7eb0]
/home/maikel/openclonk/repos/build/openclonk(_ZN13C4AbstractApp15DoScheduleProcsEi+0x33)[0xb28481]
/home/maikel/openclonk/repos/build/openclonk(_ZN12StdScheduler13ScheduleProcsEi+0x239)[0xbb64f1]
/home/maikel/openclonk/repos/build/openclonk(_ZN13C4AbstractApp3RunEv+0x1f)[0xb2843d]
/home/maikel/openclonk/repos/build/openclonk(main+0x18f)[0x7bebe9]
/lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xf5)[0x7f2d40181ec5]
/home/maikel/openclonk/repos/build/openclonk[0x7be60d]

I can move it to the bugtracker if preferred (happened when pressing E in front of Lorry)
Parent - - By Zapper [de] Date 2015-01-17 11:01 Edited 2015-01-17 11:03
that's weird.

You did not tamper with any of the menus or anything like that?

PS: it seems to work for me
PPS: and that is one of the assertions I thought could never ever fail. At least not without breaking the implementation of proplists.
Parent - - By Maikel Date 2015-01-17 11:09
It seems to only happen after reloading objects.
Parent - By Zapper [de] Date 2015-01-17 11:15
Oh D:

I guess I'd need Guenther to debug that as I suspect the problem is somewhere in the proplist code
Parent - - By Sven2 [de] Date 2015-01-17 11:40
Do you mean "reloading objects" as in scenario sections, or reloading object definitions when changing a file in editor mode?
Parent - - By Maikel Date 2015-01-17 11:41
As in changing a file while being in editor mode.
Parent - By Sven2 [de] Date 2015-01-17 11:58
Ah, yes, that crashes for me all the time.

I think one thing that breaks is function pointers. I.e. var foo = Firestone.Hit;, then reload a definition and foo will point to garbage.
Parent - - By Maikel Date 2015-01-18 10:14
A crash where OC hangs, the backtrace of the interrupt gives this:

Program received signal SIGINT, Interrupt.
StdStrBuf::Grow (this=0x7fffffffbc20, iGrow=1)
    at /home/maikel/openclonk/repos/src/lib/StdBuf.h:519
519    }
(gdb) bt
#0  StdStrBuf::Grow (this=0x7fffffffbc20, iGrow=1)
    at /home/maikel/openclonk/repos/src/lib/StdBuf.h:519
#1  0x00000000007c55fa in StdStrBuf::AppendChars (this=0x7fffffffbc20,
    cChar=100 'd', iCnt=1) at /home/maikel/openclonk/repos/src/lib/StdBuf.h:601
#2  0x00000000007c5670 in StdStrBuf::AppendChar (this=0x7fffffffbc20,
    cChar=100 'd') at /home/maikel/openclonk/repos/src/lib/StdBuf.h:607
#3  0x0000000000b76fe0 in FnStringFormat (_this=0x12de0740,
    szFormatPar=0xb03ffc0, Pars=0x10bafc0 <AulExec+28864>, ParCount=9)
    at /home/maikel/openclonk/repos/src/script/C4Script.cpp:41
#4  0x0000000000b79d15 in FnFormat (_this=0x12de0740,
    Pars=0x10bafa8 <AulExec+28840>)
    at /home/maikel/openclonk/repos/src/script/C4Script.cpp:371
#5  0x0000000000b77dab in C4AulDefFunc::Exec (this=0x1a12e80, p=0x12de0740,
    pPars=0x10bafa8 <AulExec+28840>, fPassErrors=true)
    at /home/maikel/openclonk/repos/src/script/C4Script.cpp:152
#6  0x0000000000b5cf04 in C4AulExec::Call (this=0x10b3f00 <AulExec>, pFunc=
    0x1a12e80, pReturn=0x10bafa8 <AulExec+28840>,
    pPars=0x10bafa8 <AulExec+28840>, pContext=0x12de0740)
    at /home/maikel/openclonk/repos/src/script/C4AulExec.cpp:891
#7  0x0000000000b5b18b in C4AulExec::Exec (this=0x10b3f00 <AulExec>,
    pCPos=0xb0438b0, fPassErrors=false)
    at /home/maikel/openclonk/repos/src/script/C4AulExec.cpp:673
#8  0x0000000000b4e97a in C4AulExec::Exec (this=0x10b3f00 <AulExec>, pSFunc=
---Type <return> to continue, or q <return> to quit---
    0x827eee0, p=0x12de0740, pnPars=0x7fffffffcef0, fPassErrors=false)
    at /home/maikel/openclonk/repos/src/script/C4AulExec.cpp:166
#9  0x0000000000b5d795 in C4AulScriptFunc::Exec (this=0x827eee0, p=0x12de0740,
    pPars=0x7fffffffcef0, fPassErrors=false)
    at /home/maikel/openclonk/repos/src/script/C4AulExec.cpp:1030
#10 0x00000000007f5947 in C4AulFunc::Exec (this=0x827eee0, p=0x12de0740,
    pPars=0x7fffffffcef0, fPassErrors=false)
    at /home/maikel/openclonk/repos/src/script/C4AulFunc.h:82
#11 0x0000000000b71abf in C4PropList::Call (this=0x12de0740,
    s=0xa147640 "OnPlayerClick", Pars=0x7fffffffcef0, fPassErrors=false)
    at /home/maikel/openclonk/repos/src/script/C4PropList.cpp:594
#12 0x00000000008f6f69 in C4ScriptGuiWindowAction::ExecuteCommand (
    this=0x12debf20, actionID=6, parent=0x12deab60, player=0)
    at /home/maikel/openclonk/repos/src/gui/C4ScriptGuiWindow.cpp:259
#13 0x00000000008f6fc4 in C4ScriptGuiWindowAction::ExecuteCommand (
    this=0x12debed0, actionID=6, parent=0x12deab60, player=0)
    at /home/maikel/openclonk/repos/src/gui/C4ScriptGuiWindow.cpp:263
#14 0x00000000008fe6cf in C4ScriptGuiWindow::ExecuteCommand (this=0x12deab60,
    actionID=6, player=0, subwindowID=101, actionType=21, target=0x12de0740)
    at /home/maikel/openclonk/repos/src/gui/C4ScriptGuiWindow.cpp:2090
#15 0x00000000008fe5d7 in C4ScriptGuiWindow::ExecuteCommand (this=0x12de53f0,
    actionID=6, player=0, subwindowID=101, actionType=21, target=0x12de0740)
    at /home/maikel/openclonk/repos/src/gui/C4ScriptGuiWindow.cpp:2074
---Type <return> to continue, or q <return> to quit---
#16 0x00000000007ed438 in C4ControlMenuCommand::Execute (this=0x12dfd00)
    at /home/maikel/openclonk/repos/src/control/C4Control.cpp:572

#17 0x00000000007ea710 in C4Control::Execute (this=0x7fffffffd430)
    at /home/maikel/openclonk/repos/src/control/C4Control.cpp:126

#18 0x00000000007fe4a2 in C4GameControl::Execute (this=0x107f980 <Control>)
    at /home/maikel/openclonk/repos/src/control/C4GameControl.cpp:318
#19 0x0000000000851d9d in C4Game::Execute (this=0x1036c60 <Game>)
    at /home/maikel/openclonk/repos/src/game/C4Game.cpp:729
#20 0x000000000084dfa9 in C4Application::GameTick (
    this=0x102bbe0 <Application>)
    at /home/maikel/openclonk/repos/src/game/C4Application.cpp:709
#21 0x000000000084e7a2 in C4ApplicationGameTimer::Execute (this=0x1437710,
    iTimeout=0) at /home/maikel/openclonk/repos/src/game/C4Application.cpp:905
#22 0x0000000000bb7eb0 in StdScheduler::DoScheduleProcs (this=
    0x102bbe0 <Application>, iTimeout=27)
    at /home/maikel/openclonk/repos/src/platform/StdSchedulerPoll.cpp:166
#23 0x0000000000b28481 in C4AbstractApp::DoScheduleProcs (this=
    0x102bbe0 <Application>, iTimeout=27)
    at /home/maikel/openclonk/repos/src/platform/C4App.cpp:37
#24 0x0000000000bb64f1 in StdScheduler::ScheduleProcs (
    this=0x102bbe0 <Application>, iTimeout=27)
    at /home/maikel/openclonk/repos/src/platform/StdScheduler.cpp:153
#25 0x0000000000b2843d in C4AbstractApp::Run (this=0x102bbe0 <Application>)
---Type <return> to continue, or q <return> to quit---
    at /home/maikel/openclonk/repos/src/platform/C4App.cpp:25
#26 0x00000000007bebe9 in main (argc=3, argv=0x7fffffffd928)
    at /home/maikel/openclonk/repos/src/game/ClonkMain.cpp:237
Parent - - By Zapper [de] Date 2015-01-18 15:40
Is there a way to reproduce it? I guess that's a little harder to debug without being able to reproduce it, as it seems to be somewhere in FnStringFormat
Parent - - By Maikel Date 2015-01-18 17:30 Edited 2015-01-18 17:39
Pull the basemelee folder from here: https://github.com/MDT-Maikel/basemelees

Then apply the attached patch to that repository and run Labyrinth.ocs. Then in the command line type "/medals" and in the opened menu click on you player/clonk entry.

EDIT: It seems to just be an infinite script loop I created!!
Attachment: bug.patch (1k)
Parent - By Zapper [de] Date 2015-01-18 18:27
That sounds plausible: the string buffer can not grow any ore because you are out of memory and then crashes
Parent - - By Maikel Date 2015-01-18 10:15
I always have problems when updating sub entries of menus. For example a grid menu with 10 entries I want to replace with 8 entries, how do I kill the last two entries for example?
Parent - By Zapper [de] Date 2015-01-18 15:45
You will have to be able to identify your 10 entries. For example by ID (+Target). I guess you are managing the entries somehow in your script - maybe they are even items in an array? When creating the entries, you'll have to assign them an ID (which could for example be your array index or something).

To remove them you can simply call
GuiClose(int32_t guiID, int32_t subwindowID, C4Object *target)
where subwindowID is the ID you assigned to the entry. guiID is the "main ID" that your call to GuiOpen returned.

You cannot close/update items by index as in "the last two entries".
Parent - - By Maikel Date 2015-01-19 10:56
If use margins for a menu item inside a GUI_GridLayout parent like this: Margin = ["0.5em", "0.5em", "0.5em", "0.5em"], I only get margins on the right and bottom of the element, I would have expected them everywhere and the items appearing to be "centered".
Parent - By Zapper [de] Date 2015-01-19 14:00
I can reproduce it and I think I found the reason. I will verify and push that later today or tomorrow, I guess.

Thanks!
Parent - By Zapper [de] Date 2015-01-20 20:44
Should be fixed now!
Parent - - By Pyrit Date 2015-01-19 20:33
I love the controls branch. Feels more and more suitable for the mass! :)
Especially with scroll to select items.

Yes, picking up objects by pressing DOWN would be really convenient, having to scroll to a free spot really isn't.
Shift + throw for laying down objects would be cool, too.

I think the inventory and production menues are really big now, they fill the whole screen and there is a lot blank space on them.

>Possibly add an old-school HP bar at the left of the screen?!


I'm all for it! :)

I also tried to use a producer and couldn't figure out how.
The production menue is now the same as the inventory, right? But clicking on producable items didn't do anything it seems, even if I had the required materials in the foundry.

Speaking of producers, I would find it cool that if the produces uses landscape pixels it would have an own reservoir for them. So buckets/barrels get always emptied into the foundryand you can re-use them right away. This would be cnice to have if you need to produce a lot of loam and have only 1 bucket. You could even pump water into the foundry then.

By clicking on the resevoir it could also transfer water back into a barrel, if you are holding one. If the pump had a reservoir, you could use that for nicely filling barrels with it.
Parent - By Zapper [de] Date 2015-01-20 20:49

>Yes, picking up objects by pressing DOWN would be really convenient, having to scroll to a free spot really isn't.
>Shift + throw for laying down objects would be cool, too.


Mh, I guess I will eventually implement drag & drop for the custom GUIs. Then items could be dropped from the inventory menu by dragging them outside of the menu

PS: Oh, you meant directly ingame and not from the menu? Mh, I'll think about that... once I remember why I threw out [down] for collecting... I know I did that deliberately. I just can't remember why.

>The production menue is now the same as the inventory, right? But clicking on producable items didn't do anything it seems, even if I had the required materials in the foundry.


Mh, could be that there are bugs (even though I tested that at some point... I think?). Will check/fix when I have time™

>Speaking of producers, I would find it cool that if the produces uses landscape pixels it would have an own reservoir for them. So buckets/barrels get always emptied into the foundryand you can re-use them right away. This would be cnice to have if you need to produce a lot of loam and have only 1 bucket. You could even pump water into the foundry then.


I like that idea. With the new menu there could even be a nice way to represent that (just show an image of a material pile below "Inventory")
Parent - - By Caesar [jp] Date 2015-01-21 02:58

>But clicking on producable items didn't do anything it seems, even if I had the required materials in the foundry.


It worked for me. Do you have a reproducing record?

Hmm, we might want to drop the requirement that the items are in the foundry and allow quick and direct prouction by just clicking when the clonk has the items.
Parent - - By Zapper [de] Date 2015-01-22 11:28

>Hmm, we might want to drop the requirement that the items are in the foundry and allow quick and direct prouction by just clicking when the clonk has the items.


Sounds very sensible, watchlist'd!

Should the producer first consume contents of the Clonk or own contents? Probably of the Clonk as this is why you are there in the first place..?
Parent - By Maikel Date 2015-01-22 11:39
Sounds a bit messy to me, I could also imagine walking around with wood, which I don't want to use as fuel for the foundry, because coal is much more effective and can't be used to produce items.
Parent - - By Zapper [de] Date 2015-01-22 11:26
PS: @ Everyone

What about introducing a material object for "loose earth" or "water"? When a bucket is brought into a production building, it would empty its "loose earth" contents into the building which would then be shown in the inventory of the producer.

Advantages:
* you could store material in buildings without a bucket (you'd get the empty bucket back)
* you could also fill the material back into the bucket; you could not carry it without a bucket however
* construction requirements would not need a special case for materials; loam would just use "3 x earth objects + 2 x water objects", for example
* the bucket could just use the HasExtraSlot library and contain material objects like a bow contains arrows
        -> this would need less special cases in the inventory menu etc.
* it would be obvious for the players that a loam needs less earth than a bucket yields (aka "you can make multiple loams with one bucket")
Parent - - By Maikel Date 2015-01-22 11:37
What about sand? Is it a single object definition which can do all materials? (via changing graphics)
Parent - By Zapper [de] Date 2015-01-22 11:41
Then the production requirements would need special code again. I really don't think it would hurt to have distinct IDs for the materials.

That would be very little overhead and probably save coding and compatibility work in the future
Parent - - By Armin [de] Date 2015-01-22 11:40
Maybe it could empty the (already existing) earth chunk objects. I miss them somehow. :/
Parent - - By Zapper [de] Date 2015-01-22 11:41
You wouldn't be able to take an earth chunk into your hands without a bucket, though
Parent - - By Maikel Date 2015-01-22 11:49
I don't see how that is obvious to the player when he opens a menu.
Parent - - By Zapper [de] Date 2015-01-22 13:28
You put a bucket into a workshop and an empty bucket and 10 earth appear. You produce a loam and 5 earth remain :)

Ideally, the inventory menu would show the extra slot in a nice way. So you would fill a bucket with earth and it would directly show you "contains 10 earth" (like a bow would show "contains 5 arrows"). That way you wouldn't even need to put the bucket into the producer before you could make the mental connection.
Parent - - By Maikel Date 2015-01-22 13:35
And getting the earth back into the bucket?

Btw, I feel more for cleaning up the chaos which are the controls currently than introducing all kinds of fancy features.
Parent - - By Zapper [de] Date 2015-01-22 14:00

>And getting the earth back into the bucket?


Would need one click on the earth object. It would then check in RejectEntrance whether it can be stacked into a bucket in the Clonk. Just like it (hopefully?) works right now with arrows and the bow and Library_HasExtraSlot.

>Btw, I feel more for cleaning up the chaos which are the controls currently than introducing all kinds of fancy features.


Sure, that has priority. There are many things, however, only I will be able (and motivated) to do: messing with the interaction menu, for example.
Things like the bucket are so decoupled that someone else could do that without problems.

Also, if I decide to show the material in the interaction menu of producers (like Pyrit suggested and it's a really good idea imo), I'd need to think about this anyway.
Parent - - By Maikel Date 2015-01-22 14:04
True @ everything you wrote.

Reading this, do you have an idea on how to fix the arrow problem on the Controls branch? I.e. changing the type of arrow in the bow.
Parent - - By Zapper [de] Date 2015-01-22 14:56 Edited 2015-01-22 15:06

>Reading this, do you have an idea on how to fix the arrow problem on the Controls branch? I.e. changing the type of arrow in the bow.


Yes, I thought about that yesterday or so. I believe the best solution would be to show the contained object as an icon in the bow description window and then somehow*) allow the player to click it.
Once drag & drop is implemented, you could also just drag your arrows into/onto your bow in the inventory.

I'll do a mock-up...

PS: that's also how the bucket would then show "contains 10 earth"



I hereby license the file ExtraSlotMockup.jpg under the CC-BY license
Parent - By Pyrit Date 2015-01-22 19:38

>Yes, I thought about that yesterday or so. I believe the best solution would be to show the contained object as an icon in the bow description window and then somehow*) allow the player to click it.


Idk if it's good to click on the items, if you are in the middle of a battle. The mouse is the thing you have to aim with, and I wouldn't like to drive the mouse cursor all over the screen just to change the firemode of a weapon. In most shooters you have a key on the keyboard assigned to it. That's how EKE and Hazard did it, right? I think it was V or something to change firemode.
Parent - - By Zapper [de] Date 2015-01-22 15:09
PS: there is one problem left:

The current interaction menu shows the description box when you hover over an item. I don't see how you would move the mouse into the description box if it contains buttons ("take arrows out"). Ideas?
I can't really make the description stay when you click an item, as clicking means "put into other container".
Parent - - By Pyrit Date 2015-01-22 20:13

>take arrows out


In the clonk inventory, have a little button superimposed items that are containers. (E.g. the bow). That button would jump from the clonk's inventory to the "bow's inventory"

It's like having a container in an container.

Another example of this:
You could have a flint in a lorry in a wagon. Go with a clonk in front of the wagon and open the inventory. It shows the wagon's contents. And it also shows the lorry, because it is a content of the wagon. On the lorry is a little button. Clicking the button would change from the wagon's inventory to the lorry's inventory.

_____________________________________________________
Or some other idea I just came up with:

This case: Clonk Vaccer holds a bow that holds arrows. How do we access Vaccers arrows (wich are in the bow she's holding)? Just show the bow (or any container that's inside another container) on the right side along with all the "normal" containers. So On your mockup (ExtraSlotMockup.jpg) the right side would just have another tab added, wich is called maybe "Vaccer's bow". So you could acces the bows inventory easily.

I see a downside though: if you had many containers to interact with, some could have the same name. E.g. 2 lorrys wich hold a bow with arrows each. You wouldn't know how to take out the arrows from the bow in the first lorry, because both additional tabs would be called lorry's bow.

____________________________
Hmmm all this stuff doesn't address the issue of clicking buttons inside the description box... Just how to take out arrows from bows...

But yea, I wouldn't make special case buttons like "take arrows out". Instead just treat the bow like another container that only accepts arrows...
Parent - By Zapper [de] Date 2015-01-26 10:44
I wouldn't want to automatically add all extra-slot items to the right, but being able to click a little button on top of such an item to open its inventory (or allow for extra interaction) might be worth a try.
Parent - By Sven2 Date 2015-01-22 14:15
I like this. The current guessing situation when you want to build loam is horrible and very intransparent.
Parent - - By Pyrit Date 2015-01-22 20:44
I wouldn't like earth/sand/water represented as objects. Then I always would want to click them and pic up as the objects as they are represented.

I'm still in favor of seeing that's actually a pixely material and have it also measured in pixels.

See image:
The buttons are for transfering stuff back into bucket, barrel. Greyed out, or not shown, when clonk doesn't hold bucket/barrel.
Up Topic Development / Developer's Corner / Controls Branch - State
1 2 3 4 Previous Next

Powered by mwForum 2.29.7 © 1999-2015 Markus Wichitill