
/** expend.c **********************************/
/*                                            */
/* Copyright © 1988 by Digital Artists (DgA). */
/* All Rights reserved.                       */
/*                                            */
/**********************************************/

/*
Firma   : Digital Artist (DgA)
Objekt  : reederei/expend.c
Version : 1.0
Autor   : [RK]
Datum   : 09-09-1988
Status  : geheim
*/

#include <exec/types.h>
#include <intuition/intuition.h>
#include <graphics/text.h>
#include "reederei.h"

extern struct IntuiMessage *GetMsg();
extern struct Window *Window;
extern struct TextAttr font[2];
extern struct Spieler Spieler[4];
extern struct Quartal Quartal[8];
extern struct Hafen Hafen[14];
extern USHORT *box2;
extern float rnd();

UBYTE cash[6][13];

USHORT expts[2][18] =
 {
  {0,0,599,0,599,179,1,179,1,0,598,0,598,179,0,179,0,0},
  {0,0,599,0,599,14,1,14,1,0,598,0,598,14,0,14,0,0}
 };

struct IntuiText exggtxt =
 {1,13,JAM2,17,2,&font[0],"Weiter",NULL};

struct Image exggim =
 {-2,-1,96,15,4,NULL,0xf,0x0,NULL};

struct Gadget exgg =
 {NULL,484,160,92,13,GADGIMAGE|GADGHCOMP,GADGIMMEDIATE,BOOLGADGET|REQGADGET,&exggim,NULL,&exggtxt,0L,NULL,0,NULL};

struct Border exbo[2] =
 {
  {0,0,13,0,JAM2,9,&expts[1][0],&exbo[1]},
  {0,0,13,0,JAM2,9,&expts[0][0],NULL}
 };

struct IntuiText extxt[15] =
 {
  {1,0,JAM2,505,3,&font[0],"Ausgaben",&extxt[1]},
  {1,0,JAM2,10,3,&font[0],"Reeder",&extxt[2]},
  {1,0,JAM2,85,3,&font[0],NULL,&extxt[3]},
  {12,0,JAM2,25,25,&font[0],"Transport- und Hafengebühren",&extxt[4]},
  {4,0,JAM2,500,25,&font[0],&cash[0][0],&extxt[5]},
  {12,0,JAM2,25,45,&font[0],"Wareneinkäufe",&extxt[6]},
  {4,0,JAM2,500,45,&font[0],&cash[1][0],&extxt[7]},
  {12,0,JAM2,25,65,&font[0],"Lagerkosten",&extxt[8]},
  {4,0,JAM2,500,65,&font[0],&cash[2][0],&extxt[9]},
  {12,0,JAM2,25,85,&font[0],"Arbeitslöhne",&extxt[10]},
  {4,0,JAM2,500,85,&font[0],&cash[3][0],&extxt[11]},
  {12,0,JAM2,25,105,&font[0],"Wartungskosten",&extxt[12]},
  {4,0,JAM2,500,105,&font[0],&cash[4][0],&extxt[13]},
  {11,0,JAM2,25,135,&font[0],"Ausgaben",&extxt[14]},
  {4,0,JAM2,500,135,&font[0],&cash[5][0],NULL}
 };

struct Requester expd =
 {NULL,20,5,600,180,0,0,&exgg,&exbo[0],&extxt[0],0,0,NULL,NULL,NULL,NULL,NULL};

Expend(pl)
int pl;
 {
  struct IntuiMessage *exmsg = NULL;

  exggim.ImageData = box2;
  extxt[2].IText = Spieler[pl].Name;
  ActualCosts(pl);

  Request(&expd,Window);

  while (exmsg->Class != GADGETDOWN)
   {
    while((exmsg=(struct IntuiMessage *)GetMsg(Window->UserPort))==NULL);
    ReplyMsg(exmsg);
   }

  EndRequest(&expd,Window);

  return;
 }

ActualCosts(pl)
int pl;
 {
  int i,j;
  int Haf;
  USHORT Lad,Kab;
  USHORT Ent;
  UBYTE Ind;
  float Kosten[6];

  for (i=0;i<6;i++)
   Kosten[i] = 0;

  for (i=0;i<Spieler[pl].Schiffsanzahl;i++)
   {
    if(Spieler[pl].Schiffsdaten[i].Alter >= 0)
     {
      for (j=0;j<3;j++)
       {
        Haf = Spieler[pl].Routen[i][j];
        if ((Haf != 0) && (Haf != 5471))
         {
          Haf--;
          Lad = Spieler[pl].Schiffsdaten[i].Ladung;
          Kab = Spieler[pl].Schiffsdaten[i].Kabinen;
          Ent = Hafen[Haf].Entfernung;
          Ind = Hafen[Haf].HafenIndex;

          Kosten[1] += (int)(Lad*Hafen[Haf].WarenKaufPreis);
          Kosten[0] += ((int)(Ent*Lad/500+Ent*Kab/8)*((float)rnd()/2.4+.8))+Lad*Ind*8+Kab*80*Ind;
          Kosten[3] += Kab*200+Lad*12;
          Kosten[4] += 8000*Spieler[pl].Schiffsdaten[i].Alter;
         }
        else if (Haf == 0)
         Kosten[0] += (int)Lad*24+Kab*240;
       }
     }
   }
  if (Quartal[7].Aktienwert[pl] > 0)
   Kosten[3] += Quartal[7].Aktienwert[pl]*800;
  for (i=0;i<6;i++)
   Kosten[2] += 10*Spieler[pl].WarenBesitz[i];
  for (i=0;i<5;i++)
   {
    Kosten[5] += Kosten[i];
    Kosten[i] = (float)((LONG)Kosten[i]/10000)/100;
   }
  Spieler[pl].Geld -= (LONG)Kosten[5]/1000;

  Kosten[5] = (float)((LONG)Kosten[5]/10000)/100;

  for (i=0;i<6;i++)
   sprintf(&cash[i][0],"%-3.2f Mio",Kosten[i]);
 }
