RS3 Legacy Support

Discussion in 'Executive Blogs' started by Cloud, Jul 16, 2014.

  1. RuneMate will soon be supporting legacy in rs3, and with the support comes everything that's needed to go along with it. There's several design decisions that I'm still unsure about, and I would like your feedback. Much of the code can be reused from the osrs package, however there's enough differences that they're not drop in compatible and thus they will be branched.

    The main 3 classes that need to be included are Magic, Prayer, and potentially Tab.

    These are the decisions I'd like your feedback on
    a) Should the classes share the same name as their OSRS counter-parts? This could make imports confusing and I would rather avoid this. If you think they should change, please drop some suggestions.
    b) Should we bring in a separate Tab class for legacy support or should we make the ActionWindow class handle both? The naming wouldn't be accurate if we made it support both, and it may confuse some scripters, but I feel that separating it may also confuse them.
    c) Where should the method that detects EOC/Legacy be placed?

    TLDR: RuneScape is becoming increasingly fragmented, how should we go about handling this in the API?
  2. #2 Arbiter, Jul 16, 2014
    Last edited by a moderator: Jul 16, 2014
  3. a) Make them different. IMO, seasoned scriptwriters would most probably not get confused with regards to imports considering many combine OSRS and RS3 in one script bot , but if we are planning to make the API as new scripter friendly as possible, then different naming is the way to go, e.x LegacyMagic, LegacyPrayer etc etc (probz shitty names but you get the idea)
    b) Seperation in this case would be better than combination imo
    c)Environment cuz its technically an Environment :p
  4. I'm not home right now but pretty much exactly as Black Fire said.
  5. a) not same as osrs
    b) rename ActionWindow to something that works for both if possible
    c) environment
  6. a) Make names different
    b) I think ActionWindow should handle both
    c) Environment
  7. Everyone seems to agree that the legacy mode check should be included in the Environment class, however a good alternative in my opinion would be the GraphicsConfiguration class. Currently the Environment class mostly handles things related to RuneMate's environment, so I'm not entirely sure if placing the legacy check there would be appropriate.
  8. All 3 revisions are analogous. The API needs to represent this. The cheap method of bringing together all of these is just by implementing interfaces with all intersecting methods to give the sense of unification. is my recommendation.

    The point of creating an abstract base for your API is to unify your end product. Don't deviate from this design. Redesign your core if you have to, but don't just keep expanding it without having some linking nature.

    In parts where there is no possibility of connecting the separate modules, subclassing them and leaving it at that would be just fine.

    I do favor prepending OS, RS3, and Rev to the ending subclasses tho.
  9. A)Only share if the classes are similar and rename classes if needed.
    B)Rename ActionWindow and support both, they're too similar to split.
  10. Please suggest a name to rename it too.
  11. A shameless bump with some more information.

    My current plan is to rename the Tab class to OldschoolTab, create a LegacyTab class, and create an InterfaceWindows class that unifies all three where applicable. When things can't be easily unified because of design differences, you will have to use the respective classes to do your deeds.

    The one thing I haven't been able to figure out is where to place the isLegacyMode/isLegacy method. I know you guys thought the Environment class was perfect but the Environment class is designed to hold methods related to the client's environment, not the game's. Until either I figure out a decent place or you guys have a good suggestion (even if it's a new class...), I'm not going to include the method anywhere in the API.
  12. Probably a shitty suggestion but what about in the Runescape class?
  13. I'm not completely opposed to that but I feel like there's probably a better option.

Share This Page