Jump to content

Alphathon

Members
  • Posts

    66
  • Joined

  • Last visited

Everything posted by Alphathon

  1. Hi all. Here's what I've been up to over the past few weeks: I have implemented custom categories (the pale brown ones you can add in the editors by clicking the +). I have added custom subcategories to the subassemblies list. I have added a separate craft file loader which is accessed using the button directly underneath the subassemblies button (see screenshots). The list can be filtered by VAB, SPH or both. (The graphics for these toggles are non-final.) At the moment it lists all stock/expansion craft and those in the current active save. In future I plan to add subcategory buttons for other saves and subfolders. Stock craft and the auto-saved ships have [Stock]/[Auto-Saved Ship] appended to their name as they do in the editors' load craft window. Where present, a rendering of the craft is shown in place of the subassembly icon. If a craft or subassembly contains unprintable parts (that is parts which are blacklisted from the workshop for technical reasons or which have not yet been unlocked) a warning icon is now displayed in the corner of the button, much like with parts which won't fit in a container or which are too resource-expensive. I have done a fair amount of work on the craft/subassembly loader which you can see in the screenshots. The icons under the part names currently show the selected inventory type (which can be toggled on a per-part basis) and the part's variant if it has one. In future this will also include B9 subtypes, module variables (motor mass etc), resources etc. Unwanted parts will in future also be disableable, probably via a toggle to the left of the part icon, but this is not yet implemented. Any parts which are added using symmetry are added as a stack (e.g. the batteries in the screenshot below). I have added support for cross-section profile names/icons added by taniwha's Custom Bulkhead Profiles to the Filter by Cross-Section Profile supercategory. I have added variant and B9 subtype icons to the "queued item"* tooltip/hover window and made its box blue (so it matches those in the editors). I have been playing around with the "new" Unity UI system (that is uGUI/Unity UI rather than the older IMGUI system) with some success. Using that system has a number of advantages: it is much easier to do UI scaling and I can use the same font the game uses (Noto Sans rather than Arial). It is supposedly also much better performance-wise as it doesn't redraw/recalculate everything in OnGUI() (which can run several times per frame) but without actually converting the whole UI over I don't know how big of an impact it will actually have. It is however a little trickier to build the UI in code (although not as difficult as some posts I've seen would lead you to believe). At the moment my plan is to convert over the App Launcher app and maybe the tooltip renderer and "queued item"* tooltip/hover window to uGUI as they should be relatively straightforward. The workshop and recycler UIs will probably take longer though (a lot of the logic would have to be changed) so will probably be in a later release. I have also added a few (mostly) workshop-related "hints" to the main loading screen. *"Queued item" here refers to a specific type of object (a class in coding terms) which is used by the queues of both the workshop and the recycler, but also by the craft/subassembly loader. Here are some screenshots: These are some craft/subassebly tooltips: This is the "queued item" tooltip/hover window at the moment:
  2. Here are some screenshots of the different "supercategories"/"advanced mode" categories, as well as the current state of the sub-assembly loader:
  3. Well, it's been quite a productive week! I have added the standard "supercategories" to the workshop: Filter by Cross-Section Profile, Module, Resource, Manufacturer and Tech Level. Like in the editors the different "supercategories" are accessed using buttons to the left of the main list and each has its own specific button colour. There is still some UI work to do to them but they are all fully functional. I haven't decided yet whether to have them expandable/hideable like in the editors as I don't really see the need to do so. (It's barely useful in the editors and TBH I don't know why they aren't just always visible.) I have developed most of a rudimentary .craft file loader, which is capable of loading an entire .craft file's part list into the queue. Since they use the same file format this also doubles as a subassembly loader. I haven't yet built a browser/interface so at the moment it isn't very functional but it mostly works when tested with hard-coded file paths. It also doesn't do any checks to see if parts are inventory compatible etc yet. I have made a fairly basic but functional app for the App Launcher (sidebar), which lists all craft with either a workshop or recycler (anywhere in the game world), displays their current location and allows the player to switch between them. If a craft is within load range of the current craft (≈ 2-3km radius I think) it also displays the current status (progress, current part etc, basically the same info as shown in the PAW) allows manufacturing/recycling to be paused/resumed and allows the player to open the workshop/recycler menu for any of the appropriate parts. When a part's name is moused-over in the app its model is highlighted. The app's button is positioned alongside the stock apps and behaves in a similar manner, rather than opening a window like most other mods' apps. (The only other mod I know of which does something similar is Kerbalism.) The UI and functionality of the app are still WIP. I have also made some small alterations to the code for the part list which improves performance greatly when dealing with large categories.
  4. Finally got the screenshots done. Here's the main recycler menu in its current state. As you can see each inventory is listed separately and can be collapsed/expanded at will using the arrow/triangle on the right. There are icons next to the inventory names indicating whether they are stock or KIS. Kerbals' inventories display the part the Kerbal is in in small brackets/parentheses after the name. (If a KIS inventory has been named it does something similar, although there are no named inventories in the screenshot.) In future I may add a way to show/hide all the Kerbal inventories at once (so that you don't have to scroll through loads of parachutes and jet packs on larger vessels). I may also add a collapse/expand all button. Stacks are displayed in the same manner as their respective inventory system (i.e. white ×N in the bottom right for KIS; gold N in the top right with a green bar on the far right for stock; where N is the stack size). The stack size is also listed at the top of the part details (above Mass). To the right of the part info is a list of the resources that will be recovered if the part is recycled, along with the time it will take and its (packed) volume. As you can see this vessel has no free space to deposit Material Kits. The Add paused toggle in the bottom right is functional (if it is "on" any part added to the recycler queue will be paused automatically) but is graphically unfinished (i.e. it won't look like that when I'm done, although I haven't decided yet how exactly it will look). The add to queue button is currently off-centre; this will be fixed before release. The width of the window may also change. Since I have added Waste Material as a resource I have also updated the Material Extractor to process and store it. I have also updated the labels for the converters/buttons to make it clearer what each one does. (The Hitpoints and Armor Thickness are added by BDArmory and have nothing to do with this mod.) EDIT: Here are some more. This is how the right-click menu for the Recycler queue currently looks. The icon for the "return to container" button changes depending on whether the part came from a KIS or stock container. I have also been playing around with how the Workshop shows "insufficient space". I have added an icon in the bottom right which shows the details when hovered over. When there is a large enough container available but which currently hasn't enough free space an orange warning is shown in both the recipe and the icon. A red critical warning is shown if there is no container with a max. capacity large enough to hold it even when empty. (I also notice that currently the Licenced from text is able to extend beyond the container box. This is not supposed to happen – it is supposed to shrink the text if it is too long – so I will be looking into that.)
  5. I'm afraid not. I am planning to post some screenshots of the recycler soon though. (In fact I had planned to do so before now but I just haven't had the time. Thankfully it isn't work getting in the way atm, just real life in general.) TBH I hadn't realised it had been quite so long since my last post. (Time seems to have lost all meaning at the moment.)
  6. Good news everyone! Over the last few weeks I've had some more time to work on the mod and have made some good progress, especially on the recycler: All parts, from both KIS and stock containers, can now be recycled. Parts are now recycled based on their actual state – formerly they were recycled based on the AvailablePart (for non-modders this is basically the base/source/default version of the part used by all instances of the part), so they would use whatever state that happened to be in at the time, rather than taking into account things like variants or motor mass. The recycler's queue now functions like the workshop's (with dragging, stacking, right-click menu etc). If a part contains resources they are now drained before it is recycled. If they cannot be drained (e.g. there isn't enough space on the vessel to store them) they can be dumped. Otherwise, recycling of the part stalls (the part is paused) until capacity becomes available or they are dumped. At the moment, "dumping" basically just erases the resources from existence, but in future I plan to make this function like a drain valve, i.e. it exerts a force on the part when ejected. Similarly, if a part is finished recycling and there isn't enough space for the resources the player must either dump them or have the recycler wait for space to become available. If a part is in the queue but hasn't yet begun recycling (including if it is stalled due to having (an) undrained resource(s)) it can now be returned to an inventory via an option in the right-click menu. Where possible this will be the inventory it originated from, but if it is full or unavailable it will use other inventories instead. It currently will not try to add it to containers of the other type (i.e. parts from a KIS inventory will not be "returned" to a stock one and vice versa) but I may implement this as a(n optional) fallback in future. As a side note this does not work for Kerbals' inventories. As far as I can tell there is no unique identifier for inventories themselves (or at least one that persists after quitting the game) so I have to use the host-part's PersistentID. Kerbals also do not seem to have a unique identifier, and since they can move from part-to-part and there can be more than one Kerbal per part the part's ID is not a good proxy. That said, all this means is that the part doesn't know where it came from – it can still be restored to a non-specific inventory – so it is hardly game-breaking. Items can be added to the recycler queue paused. This is not the same as the existing functionality of pausing the recycler as it only effects newly added parts – any already queued but non-paused parts remain non-paused, and any individual item can be unpaused at any time. I also plan to add this functionality to the workshop but haven't done so yet. Mass which is not converted to useful resources is now converted to a new Waste Material resource. This prevents mass from just magically disappearing. This acts just like other resources in that it must be transferred out or dumped. Currently this resource has no uses or containers but I intend to develop this further in future. (Possible uses: burn it to produce EC; reprocess it to extract additional useful materials). I may also add other by-products such as CO₂ (which could be vented or used in a greenhouse etc), although I won't go much further that that until I get to the resource overhaul mentioned at the bottom of the OP. Similarly, when a part is cancelled any as-yet unconverted material is also converted to Waste Material. If a part is being produced in the workshop and is cancelled it will now be transferred into a recycler if one is available. Otherwise it now also yields Waste Material equal to the mass of resources already processed. I may in future also implement a similar system in reverse (i.e. allow a partially recycled part to be returned to a workshop to be re-built) but I haven't done this yet. Oh, and I have also added the catch-all BDArmory category.
  7. I don't use BDArmory but I've had a quick look at how it works. I'm not sure how to handle their subcategories. I might try to replicate their extra column but that will require some more UI work; otherwise they'll probably just end up in the "main" list like normal categories. (That said, I'll have to do the same sort of thing for the "Advanced Mode" categories (cross-section profile, module, resource etc.) so it may be almost "free" in that respect.) As far as I can tell ammo is just treated as standard resources so it should work without any further intervention (although I may need to add recipes for them). Depending on how they do it I may have to specifically code support for the universal ammo boxes and possibly for any other pre-launch variables in other parts though. All of this will probably have to wait until after the initial release though. I'll probably add a temporary config-based category equivalent to the "all" subcategory in the meantime as that should be fairly trivial.
  8. I don't think it's the perspective – it looks like some parts of the model are overlapping others in a seemingly impossible manner. (Seems to be a characteristic of IVA modelling.)
  9. Whatever I end up naming it I intend to retain the "OSE Workshop" part in some form, if only out of respect to the original author. OSE does stand for ObiVanDamme Space Engineering after all. It also provides continuity with the previous versions of the mod. As such it will probably take the form OSE Workshop <something> (as with the previous continuations OSE Workshop Continued and OSE Workshop Reworked) or similar, although I haven't ruled out other formats (such as <Something>: an OSE Workshop mod/continuation). (Also, wouldn't "Bill's Workbench" be more appropriate? )
  10. @JUSTFoox I do not have a planned release date, so just "when it's done" I'm afraid.
  11. Oh absolutely. Rest assured there's no need to worry about me though. I'm far from overworked or anything; it's more of a time-management issue. (Most things in the mod need to be worked on several hours at a time since you really need to think them through to understand what's going on. The UI scaling is an exception as it is basically just finding all the values which need to be scaled and adding a multiplier.) Still, the concern and understanding are much appreciated .
  12. Hi all. Sorry for my longer-than-usual absence. Work is still keeping me quite busy so haven't had much time to devote to development. I have however got UI scaling working across both the Workshop and the Recycler, although it needs some refinement here and there. (Scaling a pixel-based layout by a non-round number results in numerous slight misalignments and such which need to be sorted.) Thankfully 1.12 doesn't seem to have caused any issues with the mod so at least I haven't had anything to deal with on that front.
  13. Thanks! I've just tested it with the UI scaling and it would seem KSP doesn't apply it automatically . Looks like I've got something to add to the to-do list. I don't know whether I'll do it before the initial release or not but it will come. On a more general note I haven't much progress to share. (I've been busy with work so haven't had a great deal of spare time.) I have done some work on the recycler though: the UI now resembles the Workshop's, inventory items are separated by container (rather than all just appearing in one long list) and the recycler lists items in stock inventories as well as KIS ones (although it cannot yet recycle them). I've also been playing around with sound effects when buttons are pressed etc although I'm not sure if they'll remain in the final version.
  14. Thanks! At the moment it's fixed, but I do plan to have at least some degree of resizability and I have coded it with that in mind. How exactly it will be implemented I don't know though. One thing I do plan to do though is to have a "large" mode: currently the parts list, category buttons etc are scaled to 75% of those in the editors (VAB/SPH) but in "large" mode they'd be 100%. From a coding POV that's fairly trivial to do, I just need to actually do it. I have also toyed with the idea of a minimal UI which only shows the queue and print progress without the part list etc. I haven't ruled out completely dynamic scaling (i.e. to any arbitrary size) but I haven't any specific plans for it either. The part preview is already the same scale as the editors' so that probably wouldn't change (although it could easily become taller without changing anything else). The progress bars etc are all at the same scale as the stock UI too. The queue can fairly easily be changed as long as it remains a multiple of the part icons. I would also assume it would respect the stock UI scale setting, as I think that applies automatically to all UI elements. (I haven't tested this though so I may be wrong.)
  15. Mine has attachRules = 1,1,1,0,0 which should be all it needs. The second number corresponds to SrfAttach, so if it is 1 it should work fine.
  16. Yeah, pressing R should cycle through all the available attachment points/modes, so it should go bottomNode → dockingNode → srfAttach (i.e. surface attach) → bottomNode (again). On some parts there may be many more attachment nodes to cycle through.
  17. KIS/KAS allows parts to be either attached by a particular node or surface (depending on the part). That part can either be surface-attached or node-attached. Unlike in the editor though you have to tell it which mode you want it in. Notice how in the screenshot it says Attach (bottomNode)? That means it is trying to attach its bottom node to a node on the craft. Hit R until it gets to surface and I think you should be good.
  18. This past week or so I've been mainly working on the queue system, and have made some fairly significant changes to it: Parts can now be added to the queue in stacks. Individual parts (or stacks of parts) can be paused. For items in the queue this means they will be ignored and not manufactured until unpaused. Parts which have already been started (i.e. are partially constructed) are moved back into the queue and display a small progress bar indicating their progress. Queue items can be dragged around to re-order the queue. Parts in the queue now have a radial menu which shows up when you right-click them. This has a short expansion animation similar to stock manoeuvre (maneuver) nodes. Currently this only has cancel and pause/resume buttons but will later allow things like stack size management. I have re-designed the bottom part of the interface and added individual progress bars for each resource. The part icon is now surrounded by six buttons, three of which are currently implemented: pause, cancel and switch target inventory type. Here are some screenshots showing how it currently looks. You can also see the cancel and resource transfer dialogue boxes, resource sliders, the updated recipe window (with dividers and warning icons) and some other minor UI tweaks. The radial menu for the queued items can be seen in the black box overlaid on the first screenshot, which was only added because you cannot both right-click and item and drag one at the same time.
  19. If you don't want that restriction in your game it looks like you can change the volume limit in the part config. For what it's worth I'm working on OSE Workshop and will probably be implementing some kind of similar volume restriction down the line too. It just doesn't make sense not to unless you head-canon it that the container expands the printer part.
  20. Thanks. I do try to be thorough but I'm certainly not infallible so if you do have any suggestions please feel free to make them. Different perspectives are always welcome. If you do make a redundant suggestion all that will happen is you will find out more about (my plans for) the mod, so it's no big deal. All I'd say is most of my short-to-medium term plans are in the OP so if you're not sure give it a quick read.
  21. Update time. I've done a fair amount of work on this since my last post, although most of it has been general structural and minor UI stuff rather than anything worth talking about specifically. Some of it is though: Standard categories added by USI tools (Rovers, Manufacturing, Logistics, Construction, Kolonization and LifeSupport) are now added automatically to the Workshop UI. As I understand it current USI mod versions use CCK but this is included for anyone using legacy versions. I wrote a Localiser method (which acts as a wrapper for the stock Localization.Format() method) which allows the player to use British English spellings/terminology if they wish. This is done via an option in the settings menu. Examples include motorised instead of motorized, anticlockwise instead of counterclockwise, cancelling instead of canceling etc. This applies to all Workshop UI elements (i.e. anything directly controlled by the mod) but does not apply to things like part descriptions and doesn't effect any other part of KSP's interface (so motors still say counterclockwise in the editors for example). The way the system works means that it will have no impact on users who don't have English selected, and in fact the option won't even show up in the menu. Although not implemented at the moment this could also be extended to allow for other regional language variants (e.g. Swiss German or European/Brazilian Portuguese). Cancelling a part which has already been started now pauses production and brings up a dialogue box letting the player know how many resources have already been used etc. This replaces the existing system which simply displayed an on-screen message telling the player to hit the button again to confirm. I have added the ability to modify the amount of resources added to a part. This is done through stock-like sliders, much like the variables for motorised parts. "Static" resources such as ablator and solid fuel, which can normally only be changed in the editors, are added as part of the manufacturing process. (This is how they already worked but the player couldn't choose how much to add – they always included 100% of their capacity.) For transferable resources such as liquid fuel or electric charge this is done at the end of the manufacturing process and is displayed in a dialogue box. If a resource is unavailable the transfer will obviously stall, but the player can cancel any or all of the planned transfers (either because they've stalled or because they changed their mind). A full tank/battery/container transfer takes exactly 20 seconds, just like when transferring resources between parts in-game. In future I plan to allow the player to change the amount to be added after they have added the part to the queue (both during the manufacturing process and the resource transfer phase) but this is not yet implemented. Some resources are blacklisted and cannot be added (some from stock, others from the Community Resource Pack): intake air, intake liquid, intake atmosphere, solar wind, and thermal power. EVA Propellant is always set to full as it is always refilled when a Kerbal enters a pod. Duct tape is currently also blacklisted but will at some point get a recipe and work like ablator etc. I have been working on a "pass-through" system for keyboard shortcuts. At the moment it only works for time warp. In an ideal world I'd like it to work for all or most (in-flight) shortcuts, but I've been having some issues getting pausing working. As far as I can tell each shortcut has to essentially be re-implemented by the workshop in order to work (I haven't found a way to truly let them just pass through to the main game without also sacrificing camera and mouse lock). Once this is set up I intend to add shortcuts of my own for Workshop functions. These will be selectable in the options menu. Warning icons now appear in the recipe box next to resources etc which are currently unavailable. These icons are the same ones used in the editor Engineer's Report (e.g. for ElectricCharge required but not generated). The recipe is also separated into sections (resources required, resources to be transferred, volume required and build time, although they aren't labelled as such) using horizontal lines as dividers.
  22. Screenshots! This is how the interface currently looks. Most of the elements shown here are as they will be once finished, but some changes are inevitable. Some almost guaranteed changes are that I intend to round off the top corners of the window (Edit: this is now done), and that the pause and cancel buttons will be changed at some point. The grey piece at the bottom left is also a placeholder and will probably change. Most of it should be pretty self-explanatory. The parts shown in red in the items list are those which are too large for to fit in any of the available containers, or are blocked from being put in containers for some other reason. None of the screenshots show any parts with B9 subtypes but they show up in exactly the same way as stock variants. If a part's mass varies based on its variant, B9 subtype or motor mass (or any other as-yet unimplemented variables) the mass in the description is highlighted in yellow/gold and has an asterisk after it, and has a tooltip explaining it. (Note that the in-game cursor does not show up on screenshots. The tooltip appears at approximately the same place as stock ones do.) Here you can see most of the variables available for robotic parts, as well as the numeric input for the hinge's Angle Limit. Also, the text in brackets/parentheses after the part name shows that this is a part added in the Breaking Ground expansion. For modded parts, this will show the mod folder's name (except for a few hard-coded exceptions; e.g. Infernal Robotics parts display as Infernal Robotics, not MagicSmokeIndustries.) This is how the mouseover widget for queued parts currently looks. This part is very much a WIP. Here is an example of switching between stock and KIS containers. As you can see, in stock mode several of the parts turn red. This is because they either lack a cargo part module, have a cargo part module but are blocked from being put in a container (examples of this are the stock containers themselves, which can be manipulated on EVA, but cannot be put in another container), or are too large for any of the available containers. Here is an example of search-as-you-type working. Finally, here is the current state of the PAW. Notice that there is now a progress bar at the top, and a pause/resume button underneath the close workbench button
  23. Hi all. Here's what I've been up to in the last two weeks. I implemented stock-like sliders and used them to implement variable Motor Size and Output(%) and Extension/Angle Limit for robotic parts. I also added stock-PAW-like toggles for Motorized, Allow Full Rotation for servos, Ratcheted for rotors, and Attach nodes for parts with a Dynamic Nodes module (such as the rotors). It should be fairly trivial to use these for the other variables (e.g. resources such as solid fuel for SRBs, ablator for heat shields). I have also implemented a text input mode (like the # button on stock PAWs) for the Extension/Angle Limit. This will be generalised and added to the other sliders later. The mass of the workshop module/part now increases as parts are manufactured, to simulate the part actually being built from the resources. This makes sure the total mass of the vessel doesn't change while manufacturing. (Previously it would decrease as the resources were used up, then increase again when the part was added to the container.) The workshop UI is now not drawn when the KSP UI is hidden (triggered by the F2 button by default). (I think) I have fixed the scrolling issue (or at least worked around it in a more robust manner). I did most of the remaining UI work Behind the scenes I built a new class for the queued items which uses ProtoPartSnapshots rather than the AvailableParts used before. This doesn't have much impact on the user but does mean a lot of hacky workarounds involving variables (variants/B9 subtypes, motor mass etc, basically anything that differentiates a part from its "base" version) can be avoided, and will allow me to implement things like item stacks and pausing of in-progress parts down the line. It has also allowed me to build a specific hover widget for the queued parts (similar to the part preview in the editor) which displays things like the selected variants, recipe, whether it is destined for a stock or KIS inventory, build time etc. It should also be useful for the recycler when I get to it. I have also just taken some screenshots of various features which I will post soon. (I need to properly crop them etc and get them uploaded somewhere.) Any part with a cargo module can be manufactured and placed in a stock container. The way the stock system works means that if it doesn't have a cargo module it cannot be added. At the moment this means any of the large or crewed stock parts and any modded parts which don't have one cannot be manufactured using a stock inventory. They can however still be put in a KIS inventory (as long as you have one big enough – some parts, such as the Rhino and Twin-Boar engines, are too large for the containers included with KIS but I'm pretty sure other mods add larger containers). Also, if you get another mod which adds a cargo module to them (like the one Hohmannson mentioned) they'll go into a stock container just fine. I plan to add the ability to add cargo modules to parts at some point down the line, but haven't done so yet (see the Planned features/ideas (for future releases) section of the OP). Thanks! Sort-of, in the sense that you can manufacture parts in the field. Any vessels would need to be built "manually" (piece-by-piece) using KAS or the new in-flight construction mode added in 1.11. In that sense it is no different than the previous iterations. The calculator needs to be identical to the KIS one as it is being used to test if there's enough space in KIS containers. If it's different that may introduce problems where the workshop and KIS calculate different volumes. If I were only using the stock inventory system it wouldn't be an issue as the volumes it uses are explicitly encoded in the cargo module. As I said though I suspect it's the implementation of it in the mod that's the issue rather than being an intrinsic part of KIS, and even if I can't fix it it isn't really a big issue unless you're using a lot of part mods.
  24. It is its own part, as are the recycler, ore processor etc. The mod is based on an existing mod – OSE Workshop Reworked – which is linked at the top of the thread (or click here), so you can take a look there if you want to see the part. The model for it will be changed at some point down the line but for now the part shown there is what will be included. At the moment the part holds 2 Kerbals and requires 2 Kerbals to operate. Engineers with the repair skill boost the speed by 1% per level (so level 3 Kerbal = 3%). The Kerbal's stupidity also acts as a negative multiplier to the speed if that option is enabled. Again, this is all carried over from OSE Workshop Reworked and may be changed later.
  25. New part models are on the planned features/ideas list (near the bottom). As for different workshop sizes/profiles it is certainly something I am considering but have no concrete plans as yet. I would say it's likely but not certain.
×
×
  • Create New...