Up to Main Index Up to Journal for June, 2012 JOURNAL FOR WEDNESDAY 20TH JUNE, 2012 ______________________________________________________________________________ SUBJECT: Moving locations DATE: Wed Jun 20 21:53:46 BST 2012 Once again I'm finding myself changing the structure of packages in WolfMUD. I know! I know! - It's just a prototype, get it out there already! It's also supposed to be a solid platform to move forward with. The issue was I had something like this: wolfmud.org `-- entities `-- location `-- location.go Typically I've been using the following conventions: location.Interface - Location Interface location.Location - Default Location type implementation location.New - Creates a new *Location This produced 'stutter' only on the type. Then I added the starting location under the location package: startingLocation.Interface startingLocation.startingLocation startingLocation.New Bleugh! :( So what to do? Well what I finally (currently) descided on was: wolfmud.org `-- entities `-- location |-- location.go |-- basic.go `-- start.go Now I have: location.Interface - a location interface location.Basic - Basic location type location.NewBasic - Creates a new *Basic location.Start - Starting location type location.NewStart - Creates a new *Start I think these read better than before? Then it's a case of cleanup and fixup the documentation - again. Still it's easier to make sweeping structural changes like this now than six months down the road. -- Diddymus ______________________________________________________________________________ SUBJECT: Tim Toady visits DATE: Wed Jun 20 22:13:31 BST 2012 Ouch! Argh! Bugger it... I've just had a TMTOWTDI moment *sigh* - pronounced 'Tim Toady'[1] I currently have a Broadcast interface that allows messages to be sent to a group of Responders: type Broadcaster interface { Broadcast(omit []Responder, format string, any ...interface{}) } Currently it's implemented by: Location - send messages to all players at a location PlayerList - send messages to all players Command - shortcut for current Location However I'm now wondering if this should actually be implemented as: func (list []messaging.Responder) Broadcast(format string, any ...interface{}) In other words should Broadcast be to a slice of Responders? Means we could drop the omit slice and only put Responders we are interested in into the list slice - hrm... Now I'm going to have to work out the pros and cons to see which would give the simplest and most elegant/natural solution. -- Diddymus [1] It's a Perl thing - There's more than one way to do it https://en.wikipedia.org/wiki/TIMTOWTDI Up to Main Index Up to Journal for June, 2012