>
> > Well, I opened up olc.h and looked at the defines, such as NUM_ROOMFLAGS,
> > etc. Now this doesn't make a lot of sense for them to be here. Why not
> > have them be in structs.h instead (since it appears BEFORE olc.h in the
> > defines at the top of the files). This way you can avoid questions about
> > adding in new flags and them not showing up on the Oasis Menu. What I mean
> > is like below the room flag defines, have this:
>
> I think even this is unneccessary. Since the flag text in constants.c
> uses a linefeed to end the list, why not use that to determine how many
> flags you have? Incrementing NUM_ROOMFLAGS doesn't do any good if you
> forget to add the new flag(s) to constants.c anyway.
>
Have to agree with you there. Though it shouldn't be a problem one
has to deal with, it would be nice to have the code more coder-friendly.
For example, in many sections of oasis within the case statements, if you
break or return causes a very different effect, and the incorrect one
eventually may lead you to the "reached default case in blahblah..".
Shortly thereafter, the mud crashes. It's a stupid mistake, but since
some of the main parts of oasis are counter-intuitive, you really have to
know how to _not_ make it. It would be nice to see Oasis more
modularized, and not based on some huge obscene mess of an event handler.
Proposal:
Instead of using the single large messy switching
statements, have sub modes. Example:
mediting a mob, at the MEDIT_MAIN_MENU for OLC_MODE(d). I want to change
the level. OLC_MODE(d) is changed to MEDIT_LEVEL or what ever. Instead of
dealing with it in the large function, just have something like:
case MEDIT_LEVEL:
deal_with_medit_level();
break;
}
OLC_MODE(d)=MEDIT_MAIN_MENU;
Basically have the sub-functions deal with the exact function, and
leave it up to that. If you have multiple cases, fine, have a submode..
OLC_MODE(d) = OEDIT_VALUES;
OLC_SUBMODE(d)=OEDIT_SUB_VALUE_ONE;
deal_with_oedit_values()
within..
switch (OLC_SUBMODE()) {
case OEDIT_SUB_VALUE_ONE:
/*do stuff here*/
OLC_SUBMODE(d)=OEDIT_SUB_VALUE_TWO;
break;
case OEDIT_SUB_VALUE_TWO:
.
.
.
}
return;
You can still treat the handler the same way, with the main loop
doing the continual character grabbing, but it will be easier to integrate
new functions.
PjD
+------------------------------------------------------------+
| Ensure that you have read the CircleMUD Mailing List FAQ: |
| http://democracy.queensu.ca/~fletcher/Circle/list-faq.html |
+------------------------------------------------------------+
This archive was generated by hypermail 2b30 : 12/15/00 PST