I'm writing a GUI editor, as you all know. It just needs some save routines written and I'll put out a room-editing only system. The problem (as will be pointed out by many) is that I am unused to o-o programming in a visual environment. So I need suggestions by people who have actually done this. Example; I have a form for room editing. It has several dialog boxes on it - one is for 'jump to room'. Currently, it works quite nicely. It looks horrendous in code though. Here's what it does; The room-edit form calls an 'OnJumpToRoomButtonPress' type of function. This function creates a new class (jumpbox) based off of the dialog box class, and causes it to be modal (ie, is active while the app is not, among other things). The box has rudimentary checking on the room target's validity (the world is global exactly like in circlemud, this I know how to make more OO, so ignore) and when it's done, it grabs the room editor form by way of the the main app (theApp)-> the room editor class -> the current room, sets that, and hten calls the room editor's loadroom function. All in all, it looks something like this; m_jump_string is the warning message, and m_new_room is the inputted new room. They're validated & displayed via DDX/DDV. void JumpBox::OnOk() extern CCbreakApp theApp; if(m_new_room > 32699 || m_new_room < 0) { m_jump_string = "Out of Range"; UpdateData(FALSE); return; } if(real_zone_by_thing(m_new_room) == NOWHERE) { m_jump_string = "That zone DNE"; UpdateData(FALSE); return; } if(real_room(m_new_room) == NOWHERE) { m_jump_string = "That room DNE"; UpdateData(FALSE); return; } theApp.dlg->current_room = real_room(m_new_room); theApp.dlg->m_redit.LoadRoom(); CDialog::OnOK(); } So, in the end, I have to make most of the major parts of my room forms accessable to this dialog, public in this case. This is not how it ought to be. What is the standard way of dealing with this? Should I just write annoying accessor functions for setting the current room, or, _what_ ? Not that I'm unaware of OO design, mind you, just that it's easier when you don't have to instantiate a new class each time you want to make modifications to members within a pre-existing class with other sorts.. ObCircle: I can't help it. Here's an ObCircle; the creators of Dikumud (at least those who I could contact) have been talking about, and generally positive towards GPL'ing the code. Nothing's fixed yet, just like last time I brought up this subject, but this time it sounds positive, instead of shot-in-the-dark. If you don't know what I'm talking about, that's okay. *bonks you on the head* Maybe I should write RMS for advice? PjD +------------------------------------------------------------+ | Ensure that you have read the CircleMUD Mailing List FAQ: | | http://qsilver.queensu.ca/~fletchra/Circle/list-faq.html | +------------------------------------------------------------+
This archive was generated by hypermail 2b30 : 04/11/01 PDT