Excellent. Hope that works out. --le ----- Original Message ----- From: Andreas Stefik To: programmingblind@xxxxxxxxxxxxx Sent: Sunday, March 07, 2010 8:32 PM Subject: Re: embedding scripting into a program:a few questions Tyler, This is just a thought, and you can discount it if you wish, but are you familiar with the programming language LUA? LUA is a scripting language used all the time in commercial video games (e.g., world of warcraft). The reason it is used is because they have a fancy way of binding between C++ and the LUA scripts, which makes doing this kind of interface relatively straightforward. I'm hardly an expert on the details, but if it were me digging around in this area, I might consider using LUA scripts and basically using its internal system of binding between C++ and the scripts. Stefik On Sun, Mar 7, 2010 at 8:29 PM, Tyler Littlefield <tyler@xxxxxxxxxxxxx> wrote: Hello Laura, The idea is that the world class be able to be exposed to the language--I don't need to add methods to the world class. What I do need to do, and what seems to be causing the issue is the component setup; All components will be loaded at startup and as they're added, but I need to be able to inherit the c++ component class and add to it in order to create scripted components, then I can just register them with the world class. The issue is making the scripted components be usable. Obviously I can't access a scripted component from c++, or I could through it's basic functionality, but the idea is for the components to be able to be added to any object whether scripted or not. Thanks, Tyler Littlefield http://tds-solutions.net Twitter: sorressean On Mar 7, 2010, at 7:23 PM, qubit wrote: > Hi Ty -- > Did I read once that your base is implemented in C++? > Let me clarify what you are saying you want to do: > 1. class A in your scripting language needs to interface with class World in > your base, and use its methods, and also to add methods of its own, and to > do this dynamically. Right? > 2. These new methods need to access class World in some way. Do they need > to go so far as to touch private or protected data? Since you want dynamic > insertion/removal of methods in class A, these methods will need to be able > to work with World without being members of World. > 3. As an aside, you could of course dynamically create a new inherited class > C for each method m(), which is derived from World and therefore can use > World's protected and public data. m() can be a virtual or nonvirtual > method. But this all has to be done in the interface to your scripting > language. This is an interesting problem, as it almost requires that the > scripting language have the same inheritance structure as C++ to make the > implementation fall out cleanly. But who ever heard of a clean > implementation in the "real world"...*smile* > Now, if your implementation goes so far as to create derived classes with > their own virtual table for each function added to A, you will need some > dynamic linking to pull it off. > I'll have to think on this one for a while. > > Hey Ty, great job picking an interesting project. That should go really > well on a resumé. > Happy hacking. > --le > > ----- Original Message ----- > From: "Tyler Littlefield" <tyler@xxxxxxxxxxxxx> > To: <programmingblind@xxxxxxxxxxxxx> > Sent: Sunday, March 07, 2010 6:12 PM > Subject: embedding scripting into a program:a few questions > > > Hello all, > As some of you may know, I'm working on a custom mud base that I will be > releasing to the public and probably using for my own mud in the near > future. > I've got most of the stuff I want handled, except scripting; I was told to > use Angelscript and was taking a look at it, but it seems to not be to well > documented, so maybe someone has another idea. > > What I want, is to be able to make the world class (which stores a list of > players, rooms, mobs, etc) accessible to the scripting language I use. > Secondly, I want to expose events so that the language can attach it's own > functions to them. > Third and possibly more dificult, I want to expose my component system, > which I will explain. > > Rather than using a is-a setup (through inheritance), I decided to go with a > has-a setup. This provides some really cool ideas for design, such as being > able to let clothing use containers if you decide that your shorts need > pockets, without either moving container functionality up the inheritance, > or using a multiple-inheritance setup, which can become messy. So, the > components get loaded with the object from a list. I can easily use an > AddComponent function to add the component to the list, but I'd like to > allow builders and coders that I don't want using shell or that have an idea > for a component to be able to build one in the language of choice, then > register it with the dictionary that is used for holding components and > allowing other objects to use this setup. So, in short I need a sort of > transparent way to communicate back and forth, and not for the scripting > language of choice to just control the driver, etc. > > Thanks, > Tyler Littlefield > http://tds-solutions.net > Twitter: sorressean > > __________ > View the list's information and change your settings at > //www.freelists.org/list/programmingblind > > __________ > View the list's information and change your settings at > //www.freelists.org/list/programmingblind __________ View the list's information and change your settings at //www.freelists.org/list/programmingblind