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

/*
Firma   : Digital Artist (DgA)
Objekt  : reederei/income.c
Version : 1.0
Autor   : [RK]
Datum   : 09-04-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 Hafen Hafen[14];
extern USHORT *box2;
extern UBYTE cash[6][13];
extern float rnd();
extern SHORT FrachtG[4];

USHORT ipts[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 iggtxt =
 {1,13,JAM2,17,2,&font[0],"Weiter",NULL};

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

struct Gadget igg =
 {NULL,484,160,92,13,GADGIMAGE|GADGHNONE,GADGIMMEDIATE,BOOLGADGET|REQGADGET,&iggim,NULL,&iggtxt,0L,NULL,0,NULL};

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

struct IntuiText itxt[9] =
 {
  {1,0,JAM2,497,3,&font[0],"Einnahmen",&itxt[1]},
  {1,0,JAM2,10,3,&font[0],"Reeder",&itxt[2]},
  {1,0,JAM2,85,3,&font[0],NULL,&itxt[3]},
  {12,0,JAM2,25,25,&font[0],"Frachtgeschäftseinnahmen",&itxt[4]},
  {4,0,JAM2,500,25,&font[0],&cash[0][0],&itxt[5]},
  {12,0,JAM2,25,45,&font[0],"Passagiertickets",&itxt[6]},
  {4,0,JAM2,500,45,&font[0],&cash[1][0],&itxt[7]},
  {11,0,JAM2,25,75,&font[0],"Einnahmen",&itxt[8]},
  {4,0,JAM2,500,75,&font[0],&cash[2][0],NULL}
 };

struct Requester inc =
 {NULL,20,5,600,180,0,0,&igg,&ibo[0],&itxt[0],0,0,NULL,NULL,NULL,NULL,NULL};

Income(pl)
int pl;
 {
  struct IntuiMessage *imsg = NULL;

  iggim.ImageData = box2;
  itxt[2].IText = Spieler[pl].Name;
  ActualIncomes(pl);

  Request(&inc,Window);

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

  EndRequest(&inc,Window);

  return;
 }

ActualIncomes(pl)
int pl;
 {
  int i,j;
  int Haf;
  USHORT Lad,Kab;
  float Einnahmen[3];

  for (i=0;i<3;i++)
   Einnahmen[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 == 5471) && (j == 0))
         Einnahmen[0] += FrachtG[pl] * 1000000;
        else if ((Haf != 0) && (Haf != 5471))
         {
          Haf--;
          Lad = Spieler[pl].Schiffsdaten[i].Ladung;
          Kab = Spieler[pl].Schiffsdaten[i].Kabinen;
          if (Kab != 0)
           Einnahmen[1] += (float)((int)Hafen[Haf].Entfernung/15*Hafen[Haf].HafenIndex*Kab);
          Spieler[pl].WarenBesitz[Hafen[Haf].Ware-1] += Lad;
         }
        Spieler[pl].Routen[i][j] = 0;
       }
     }
   }

  Einnahmen[2] = Einnahmen[0]+Einnahmen[1];

  Spieler[pl].Geld += (LONG)Einnahmen[2] / 1000;

  for (i=0;i<3;i++)
   {
    Einnahmen[i] /= (USHORT) 10000;
    Einnahmen[i] /= 100;
    sprintf(&cash[i][0],"%-3.2f Mio",Einnahmen[i]);
   }
 }
