home *** CD-ROM | disk | FTP | other *** search
/ The Fred Fish Collection 1.5 / ffcollection-1-5-1992-11.iso / ff_progs / prog_oth / monopoly.lzh / monopoly_source.LZH / f8.c < prev    next >
Encoding:
C/C++ Source or Header  |  1992-01-06  |  8.2 KB  |  341 lines

  1. /* f8.c contains these functions for monopoly:
  2.         buildhouse(),  sellhouse(),  makemortgage(), 
  3.     liftmortgage(),   fixtransmenu(),   cktransactmsg(),       */
  4.  
  5. #include "mono:defines"
  6. #include "mono:xvariables"
  7.  
  8. VOID cktransactmsg()
  9. {
  10. ULONG tclass;
  11. USHORT tcode;
  12. tclass=0;
  13. tcode=0;
  14.  
  15. while (transactmsg=(struct IntuiMessage *)GetMsg(transactwindow->UserPort))
  16.    {
  17.    tclass = transactmsg->Class;
  18.    tcode  = transactmsg->Code;
  19.    ReplyMsg(transactmsg);
  20.    }
  21. if ( (tclass == RAWKEY) && (tcode == HELP) ) instruction();
  22. if (tclass == GADGETUP)  donetransact=TRUE;
  23. if ( (tclass == MENUPICK) && (tcode != MENUNULL) )
  24.    {
  25.    property = servicetransmenu(MENUNUM(tcode), ITEMNUM(tcode), SUBNUM(tcode));
  26.    donetransact=TRUE;
  27.    }
  28. }
  29.  
  30. VOID buildhouse(who)
  31. USHORT who;
  32. {
  33. USHORT buildprop, hold_line;
  34. struct IntuiText name;
  35.  
  36. name.BackPen=black;
  37. name.DrawMode=JAM1;
  38. name.TopEdge=cname.TopEdge;
  39. name.LeftEdge=cname.LeftEdge;
  40. name.ITextFont=NULL;
  41. name.NextText=NULL;
  42. if (who == 0)
  43.    {
  44.    name.IText=&name0[0];
  45.    name.FrontPen=25;
  46.    }
  47. if (who == 1)
  48.    {
  49.    name.IText=&name1[0];
  50.    name.FrontPen=26;
  51.    }
  52. if (who == 2)
  53.    {
  54.    name.IText=&name2[0];
  55.    name.FrontPen=27;
  56.    }
  57. if (who == 3)
  58.    {
  59.    name.IText=&name3[0];
  60.    name.FrontPen=28;
  61.    }
  62. transactnote0.IText=(UBYTE *)"Use the menu to choose";
  63. transactnote1.IText=(UBYTE *)"a property upon which";
  64. transactnote2.IText=(UBYTE *)"to BUILD a house.";
  65. transactnote3.IText=(UBYTE *)"NOTE:  A hotel is";
  66. transactnote4.IText=(UBYTE *)"simply FIVE houses.";
  67. ntransactw.Screen=screen1;
  68. if ((transactwindow=(struct Window *)OpenWindow(&ntransactw))==NULL) cleanup();
  69. rporttransact=transactwindow->RPort;
  70. SetMenuStrip(transactwindow, &Menu5);
  71. fixtransmenu(BUILD, who);
  72. PrintIText(rporttransact, &name, 0, 0);
  73. PrintIText(rporttransact, &transactnote0, 0, 0); 
  74. PrintIText(rporttransact, &transactnote1, 0, 0); 
  75. PrintIText(rporttransact, &transactnote2, 0, 0);
  76. PrintIText(rporttransact, &transactnote3, 0, 10);
  77. PrintIText(rporttransact, &transactnote4, 0, 10);
  78. pickedprop=FALSE;
  79.  
  80. line0_text=48;
  81. for (j=0, hold_line=line0_text; j<SHOW_LINES; j++)
  82.    instructIT[j].IText=instructline[hold_line++];
  83.  
  84. donetransact=FALSE;
  85. while (!donetransact)
  86.    {
  87.    if (1<<transactwindow->UserPort->mp_SigBit)  cktransactmsg();
  88.    }
  89. ClearMenuStrip(transactwindow);
  90. CloseWindow(transactwindow);
  91. if (pickedprop)
  92.    {
  93.    buildprop=property;
  94.    building=TRUE;
  95.    eft(owner[buildprop], BANK, housecost[buildprop]);
  96.    if (!building)  goto exbuildhouse;      
  97.    numhouses[buildprop]++;
  98.    if (numhouses[buildprop] < 5)
  99.       drawhouse(buildprop, TRUE);
  100.    else
  101.       {
  102.       drawhouse(buildprop, FALSE);
  103.       drawhotel(buildprop, TRUE);
  104.       }
  105.    pickedprop=FALSE;
  106.    }
  107. exbuildhouse:
  108. building=FALSE;
  109. fixmenu();
  110. }
  111.  
  112. VOID sellhouse(who)
  113. USHORT who;
  114. {
  115. USHORT sellprop, hold_line;
  116. struct IntuiText name;
  117.  
  118. name.BackPen=black;
  119. name.DrawMode=JAM1;
  120. name.TopEdge=cname.TopEdge;
  121. name.LeftEdge=cname.LeftEdge;
  122. name.ITextFont=NULL;
  123. name.NextText=NULL;
  124. if (who == 0)
  125.    {
  126.    name.IText=&name0[0];
  127.    name.FrontPen=25;
  128.    }
  129. if (who == 1)
  130.    {
  131.    name.IText=&name1[0];
  132.    name.FrontPen=26;
  133.    }
  134. if (who == 2)
  135.    {
  136.    name.IText=&name2[0];
  137.    name.FrontPen=27;
  138.    }
  139. if (who == 3)
  140.    {
  141.    name.IText=&name3[0];
  142.    name.FrontPen=28;
  143.    }
  144. transactnote0.IText=(UBYTE *)"Use the menu to choose";
  145. transactnote1.IText=(UBYTE *)"a property from which";
  146. transactnote2.IText=(UBYTE *)"to REMOVE a house.";
  147. transactnote3.IText=(UBYTE *)"NOTE:  A hotel is";
  148. transactnote4.IText=(UBYTE *)"simply FIVE houses.";
  149. ntransactw.Screen=screen1;
  150. if ((transactwindow=(struct Window *)OpenWindow(&ntransactw))==NULL) cleanup();
  151. rporttransact=transactwindow->RPort;
  152. SetMenuStrip(transactwindow, &Menu5);
  153. fixtransmenu(SELL, who);
  154. PrintIText(rporttransact, &name, 0, 0); 
  155. PrintIText(rporttransact, &transactnote0, 0, 0); 
  156. PrintIText(rporttransact, &transactnote1, 0, 0); 
  157. PrintIText(rporttransact, &transactnote2, 0, 0);
  158. PrintIText(rporttransact, &transactnote3, 0, 10);
  159. PrintIText(rporttransact, &transactnote4, 0, 10);
  160. pickedprop=FALSE;
  161.  
  162. line0_text=59;
  163. for (j=0, hold_line=line0_text; j<SHOW_LINES; j++)
  164.    instructIT[j].IText=instructline[hold_line++];
  165.  
  166. donetransact=FALSE;
  167. while (!donetransact)
  168.    {
  169.    if (1<<transactwindow->UserPort->mp_SigBit)  cktransactmsg();
  170.    }
  171. ClearMenuStrip(transactwindow);
  172. CloseWindow(transactwindow);
  173. if (pickedprop)
  174.    {
  175.    sellprop=property;
  176.    eft(BANK, owner[sellprop], (housecost[sellprop]/2) );   
  177.    numhouses[sellprop]--;
  178.    if (numhouses[sellprop] == 4)  drawhotel(sellprop, FALSE);
  179.    else drawhouse(sellprop, FALSE);
  180.    pickedprop=FALSE;
  181.    drawhouse(sellprop, TRUE);
  182.    }
  183. fixmenu();
  184. }
  185.  
  186. VOID makemortgage(who)
  187. USHORT who;
  188. {
  189. USHORT morgprop, hold_line;
  190. struct IntuiText name;
  191.  
  192. name.BackPen=black;
  193. name.DrawMode=JAM1;
  194. name.TopEdge=cname.TopEdge;
  195. name.LeftEdge=cname.LeftEdge;
  196. name.ITextFont=NULL;
  197. name.NextText=NULL;
  198. if (who == 0)
  199.    {
  200.    name.IText=&name0[0];
  201.    name.FrontPen=25;
  202.    }
  203. if (who == 1)
  204.    {
  205.    name.IText=&name1[0];
  206.    name.FrontPen=26;
  207.    }
  208. if (who == 2)
  209.    {
  210.    name.IText=&name2[0];
  211.    name.FrontPen=27;
  212.    }
  213. if (who == 3)
  214.    {
  215.    name.IText=&name3[0];
  216.    name.FrontPen=28;
  217.    }
  218. transactnote0.IText=(UBYTE *)"Use the menu to choose";
  219. transactnote1.IText=(UBYTE *)"the property which you";
  220. transactnote2.IText=(UBYTE *)"wish to mortgage.";
  221. transactnote3.IText=(UBYTE *)"NOTE:  the property may";
  222. transactnote4.IText=(UBYTE *)"NOT be improved.  Sell";
  223. transactnote5.IText=(UBYTE *)"hotel or houses first!";
  224. ntransactw.Screen=screen1;
  225. if ((transactwindow=(struct Window *)OpenWindow(&ntransactw))==NULL) cleanup();
  226. rporttransact=transactwindow->RPort;
  227. SetMenuStrip(transactwindow, &Menu5);
  228. fixtransmenu(MAKE, who);
  229. PrintIText(rporttransact, &name, 0, 0); 
  230. PrintIText(rporttransact, &transactnote0, 0, 0); 
  231. PrintIText(rporttransact, &transactnote1, 0, 0); 
  232. PrintIText(rporttransact, &transactnote2, 0, 0);
  233. PrintIText(rporttransact, &transactnote3, 0, 10);
  234. PrintIText(rporttransact, &transactnote4, 0, 10);
  235. PrintIText(rporttransact, &transactnote5, 0, 10);
  236. pickedprop=FALSE;
  237.  
  238. line0_text=65;
  239. for (j=0, hold_line=line0_text; j<SHOW_LINES; j++)
  240.    instructIT[j].IText=instructline[hold_line++];
  241.  
  242. donetransact=FALSE;
  243. while (!donetransact)
  244.    {
  245.    if (1<<transactwindow->UserPort->mp_SigBit)  cktransactmsg();
  246.    }
  247. ClearMenuStrip(transactwindow);
  248. CloseWindow(transactwindow);
  249. if (pickedprop)
  250.    {
  251.    morgprop=property;
  252.    eft(BANK, owner[morgprop], (propcost[morgprop]/2));
  253.    ismorg[morgprop]=TRUE;
  254.    em(morgprop, TRUE);
  255.    pickedprop=FALSE;
  256.    }
  257. fixmenu();
  258. }
  259.  
  260. VOID liftmortgage(who)
  261. USHORT who;
  262. {
  263. USHORT liftprop, hold_line;
  264. struct IntuiText name;
  265.  
  266. name.BackPen=black;
  267. name.DrawMode=JAM1;
  268. name.TopEdge=cname.TopEdge;
  269. name.LeftEdge=cname.LeftEdge;
  270. name.ITextFont=NULL;
  271. name.NextText=NULL;
  272. if (who == 0)
  273.    {
  274.    name.IText=&name0[0];
  275.    name.FrontPen=25;
  276.    }
  277. if (who == 1)
  278.    {
  279.    name.IText=&name1[0];
  280.    name.FrontPen=26;
  281.    }
  282. if (who == 2)
  283.    {
  284.    name.IText=&name2[0];
  285.    name.FrontPen=27;
  286.    }
  287. if (who == 3)
  288.    {
  289.    name.IText=&name3[0];
  290.    name.FrontPen=28;
  291.    }
  292. transactnote0.IText=(UBYTE *)"Use the menu to choose";
  293. transactnote1.IText=(UBYTE *)"the property from which";
  294. transactnote2.IText=(UBYTE *)"to REMOVE the mortgage.";
  295. ntransactw.Screen=screen1;
  296. if ((transactwindow=(struct Window *)OpenWindow(&ntransactw))==NULL) cleanup();
  297. rporttransact=transactwindow->RPort;
  298. SetMenuStrip(transactwindow, &Menu5);
  299. fixtransmenu(LIFT, who);
  300. PrintIText(rporttransact, &name, 0, 0); 
  301. PrintIText(rporttransact, &transactnote0, 0, 0); 
  302. PrintIText(rporttransact, &transactnote1, 0, 0); 
  303. PrintIText(rporttransact, &transactnote2, 0, 0);
  304. pickedprop=FALSE;
  305.  
  306. line0_text=72;
  307. for (j=0, hold_line=line0_text; j<SHOW_LINES; j++)
  308.    instructIT[j].IText=instructline[hold_line++];
  309.  
  310. donetransact=FALSE;
  311. while (!donetransact)
  312.    {
  313.    if (1<<transactwindow->UserPort->mp_SigBit)  cktransactmsg();
  314.    }
  315. ClearMenuStrip(transactwindow);
  316. CloseWindow(transactwindow);
  317. if (pickedprop)
  318.    {
  319.    liftprop=property;
  320.    if ( (liftprop == 12) || (liftprop ==28) )
  321.       {
  322.       mortgaging=TRUE;
  323.       eft(owner[liftprop], BANK, (75+7) ); 
  324.       if (!mortgaging)  goto exliftmorg;
  325.       } 
  326.    else
  327.       {
  328.       mortgaging=TRUE;
  329.       eft(owner[liftprop], BANK, (propcost[liftprop]/2));
  330.       if (!mortgaging)  goto exliftmorg;
  331.       }
  332.    ismorg[liftprop]=FALSE;
  333.    em(liftprop, FALSE);
  334.    pickedprop=FALSE;
  335.    }
  336. exliftmorg:
  337. mortgaging=FALSE;
  338. fixmenu();
  339. }
  340.  
  341.