From: Erik V. <eri...@hc...> - 2008-11-13 21:13:09
|
It is interesting that, just having had a discussion about Company types, I'm for the first time hitting the need for a game-specific company subclass. 1856 public companies need (at least) two per-company attributes that, I believe, are unique to this game and should not be included in the generic PublicCompany class: - the next available train from the bank when the presidency was bought (which determines the company capitalization rules at floating time and later), and - the amount of treasury money held in escrow by the bank in some cases. So I think I'm going to create a subclass PublicCompany_1856 to hold these values. The destination hex and the destination-reached condition are common enough to be put into PublicCompany itself (the hex has in fact always been there). Setting destination-reached will be a menu action, for the time being. Comments? Erik |
From: Mark S. <mar...@gm...> - 2008-11-14 01:11:47
|
I happen to have 1856 Rulebook at hand and I see a few items just to clarify the points brought up: STARTING CAPITALIZATION (Page 13) 1. If the President Certificate bought BEFORE a 5 Train is available, company receives cash for each of the first five (5) shares sold. If shares after the fifth is sold, the extra cash goes into escrow. 2. If the President Certificate bought when a 5 Train is available, cash for each share sold goes to company (no escrow) 3. If the President Certificate bought when a 6 or Diesel is available, cash for all 10 shares goes to company INITIAL SHARES NEEDED TO OPERATE (Page 14) # of Shares sold equal to or greater than the number of current train type available. This is determined at the time when the company "may be able to operate", not based upon when the President's certificate is bought. EXAMPLE: If a 2 train available, only the President share needed, if a 3 train available, 3 shares must be sold. The rules have a very clear example of when this odd situation occurs. There is no concept of "floating" a company like in the other games. What may also be necessary for this 1856 subclass is a count of the number of loans the company has out. Mark On Thu, Nov 13, 2008 at 4:13 PM, Erik Vos <eri...@hc...> wrote: > It is interesting that, just having had a discussion about Company types, > I'm for the first time hitting the need for a game-specific company > subclass. 1856 public companies need (at least) two per-company attributes > that, I believe, are unique to this game and should not be included in the > generic PublicCompany class: > > - the next available train from the bank when the presidency was bought > (which determines the company capitalization rules at floating time and > later), and > > - the amount of treasury money held in escrow by the bank in some cases. > > So I think I'm going to create a subclass PublicCompany_1856 to hold these > values. > > The destination hex and the destination-reached condition are common enough > to be put into PublicCompany itself (the hex has in fact always been there). > Setting destination-reached will be a menu action, for the time being. > > Comments? > > Erik > > > ------------------------------------------------------------------------- > This SF.Net email is sponsored by the Moblin Your Move Developer's challenge > Build the coolest Linux based applications with Moblin SDK & win great prizes > Grand prize is a trip for two to an Open Source event anywhere in the world > http://moblin-contest.org/redirect.php?banner_id=100&url=/ > _______________________________________________ > Rails-devel mailing list > Rai...@li... > https://lists.sourceforge.net/lists/listinfo/rails-devel > |
From: John A. T. <ja...@ja...> - 2008-11-14 02:59:39
|
Erik Vos wrote: > - the next available train from the bank when the presidency was bought > (which determines the company capitalization rules at floating time and > later), and > No, 1856 cares about the available train type at the point it first tries to operate. It is a common error to only buy 2 shares at the beginning and find that by the time your company comes up in the operating order, a 3 is available so you do not operate. 18GL also cares about this, but slightly different -- if a company is started after a 10H has been bought, capitalization rules are totally different. Many other games have similar dependencies on the phase or available train for starting companies, such as what initial stock prices are available, possible starting locations, train purchase restrictions, etc. > - the amount of treasury money held in escrow by the bank in some cases. > Many games have a similar aspect, typically tied to achieving connectivity to or actually running to a destination, or upon hitting a particular area of the stock market, or upon conversion. There are enough 18xx games out there and enough interest in making something new and different, that you can find all sorts of rules which have been combined in novel ways in each new game you encounter. If you create new infrastructure code for each one, you will never be able to extend the set of games supported by Rails separately from modifying Rails itself. If instead all the base functionality is in Rails, and then the games simply specify how to combine them, then it becomes much more extensible. I think that feeds directly into the decision to make general-purpose vs. custom infrastructure. -- John A. Tamplin ja...@ja... 770/436-5387 HOME 4116 Manson Ave Smyrna, GA 30082-3723 |
From: Erik V. <eri...@hc...> - 2008-11-14 20:55:19
|
> Erik Vos wrote: > > - the next available train from the bank when the > presidency was bought > > (which determines the company capitalization rules at > floating time and > > later), and > > > No, 1856 cares about the available train type at the point it first > tries to operate. It is a common error to only buy 2 shares at the > beginning and find that by the time your company comes up in the > operating order, a 3 is available so you do not operate. In fact, both is true, as Mark has correctly pointed out. The train type available at company starting time (= buying the presidency) determines the capitalization rules, so it must be remembered, and I think this is unique to 1856, unless someone has counterexamples. Mark is also correct that "floating" in its usual meaning does not exist in 1856. Nevertheless it is a central concept in Rails, that in this case needs to be implemented differently: a company "floats" when it has the turn to operate for the first time, and the train available at that time is not larger than the number of shares sold. So it really "floats" during the Operating Round. However, in Rails "floating" also means that companies are included in the list of companies appearing in the OR (map) window. So I think I'll leave StockRound_1856 as it is now, and add an extra condition for getting a turn (for the first time) to OperatingRound_1856. > 18GL also cares about this, but slightly different -- if a company is > started after a 10H has been bought, capitalization rules are totally > different. Many other games have similar dependencies on the > phase or > available train for starting companies, such as what initial stock > prices are available, possible starting locations, train purchase > restrictions, etc. Phase dependencies are common, and have so far (I think) all been defined in XML, although perhaps not yet in a very consistent way. I'm not aware of other games of which the rules depend on available trains at different times in the game, but I may think again when confronted with counterexamples. I own a lot more 18xx games than I have played, which makes remembering the details of all of them not so easy. > There are enough 18xx games out there and enough interest in making > something new and different, that you can find all sorts of > rules which > have been combined in novel ways in each new game you > encounter. If you > create new infrastructure code for each one, you will never > be able to > extend the set of games supported by Rails separately from modifying > Rails itself. If instead all the base functionality is in Rails, and > then the games simply specify how to combine them, then it > becomes much > more extensible. I think that feeds directly into the > decision to make > general-purpose vs. custom infrastructure. This seems to call for making everything configurable in XML, but I don't think that is an achievable goal. Well, perhaps in theory. On the other hand, should it turn out that some feature once thought game-specific is common enough for inclusion in the generic code: refactoring is pretty simple in Eclipse. BTW the use of game-specific classes is also configured in XML, not hardcoded in any way. Should PublicCompany_1856 turn out to be useful in some other game 18ABC, well, use (and possibly extend and/or rename) it. Erik. |
From: John D. G. <jd...@di...> - 2008-11-15 05:20:43
|
John A. Tamplin wrote: > Erik Vos wrote: >> - the next available train from the bank when the presidency was bought >> (which determines the company capitalization rules at floating time and >> later), and >> > No, 1856 cares about the available train type at the point it first > tries to operate. It is a common error to only buy 2 shares at the > beginning and find that by the time your company comes up in the > operating order, a 3 is available so you do not operate. You're both right. The available train type at the point your company first "tries to operate" determines whether the company has floated, but the available train type when the president's share is purchased determines which of the three capitalization schemes applies to the company (and, therefore, whether it ever needs to destinate). |
From: Erik V. <eri...@hc...> - 2008-11-15 14:42:31
|
> So I think I'll leave StockRound_1856 as it is now, > and add an extra condition for getting a turn (for the first time) > to OperatingRound_1856. Done, by overriding a new OperatingRound method setNextOperatingCompany(), factored out of the existing start() and finishTurn() methods. A message is displayed if a company that seems eligible for operating at the OR start appears to be not so when it's turn would start. Also: - Removed the isLayableNow() method from Tile (as discussed a while ago). - Added destinationReached attribute and related methods to PublicCompany. Erik. |