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

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

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

extern struct Window *Window;
extern struct TextAttr font[2];
extern struct Spieler Spieler[4];
extern struct Quartal Quartal[8];
extern USHORT *box2;
extern USHORT *box3;

UBYTE Data[15][11];

USHORT aupts[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 auggtxt[7] =
 {
  {1,13,JAM2,17,2,&font[0],"Zurück",NULL},
  {1,13,JAM2,5,2,&font[0],"Verkaufen",NULL},
  {1,13,JAM2,11,2,&font[0],"1",NULL},
  {1,13,JAM2,10,2,&font[0],"2",NULL},
  {1,13,JAM2,10,2,&font[0],"3",NULL},
  {1,13,JAM2,9,2,&font[0],"4",NULL},
  {1,13,JAM2,9,2,&font[0],"5",NULL}
 };

struct Image auggim[2] =
 {
  {-2,-1,96,15,4,NULL,0xf,0x0,NULL},
  {-2,-1,32,15,4,NULL,0xf,0x0,NULL}
 };

struct Gadget augg[7] =
 {
  {&augg[1],15,160,92,13,GADGIMAGE|GADGHNONE,GADGIMMEDIATE,BOOLGADGET|REQGADGET,&auggim[0],NULL,&auggtxt[0],0L,NULL,6,NULL},
  {&augg[2],489,160,92,13,GADGIMAGE|GADGHNONE,GADGIMMEDIATE,BOOLGADGET|REQGADGET,&auggim[0],NULL,&auggtxt[1],0L,NULL,7,NULL},
  {&augg[3],15,38,28,13,GADGIMAGE|GADGHNONE,GADGIMMEDIATE,BOOLGADGET|REQGADGET,&auggim[1],NULL,&auggtxt[2],0L,NULL,1,NULL},
  {&augg[4],15,58,28,13,GADGIMAGE|GADGHNONE,GADGIMMEDIATE,BOOLGADGET|REQGADGET,&auggim[1],NULL,&auggtxt[3],0L,NULL,2,NULL},
  {&augg[5],15,78,28,13,GADGIMAGE|GADGHNONE,GADGIMMEDIATE,BOOLGADGET|REQGADGET,&auggim[1],NULL,&auggtxt[4],0L,NULL,3,NULL},
  {&augg[6],15,98,28,13,GADGIMAGE|GADGHNONE,GADGIMMEDIATE,BOOLGADGET|REQGADGET,&auggim[1],NULL,&auggtxt[5],0L,NULL,4,NULL},
  {NULL,15,118,28,13,GADGIMAGE|GADGHNONE,GADGIMMEDIATE,BOOLGADGET|REQGADGET,&auggim[1],NULL,&auggtxt[6],0L,NULL,5,NULL}
 };

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

struct IntuiText autxt[27] =
 {
  {1,0,JAM2,512,3,&font[0],"Auktion",&autxt[1]},
  {1,0,JAM2,10,3,&font[0],"Reeder",&autxt[2]},
  {1,0,JAM2,85,3,&font[0],NULL,&autxt[3]},

  {12,0,JAM2,65,20,&font[0],"Schiffstyp",&autxt[4]},
  {12,0,JAM2,270,20,&font[0],"Laderaum",&autxt[5]},
  {12,0,JAM2,390,20,&font[0],"Kabinen",&autxt[6]},
  {12,0,JAM2,480,20,&font[0],"Schätzpreis",&autxt[7]},

  {11,0,JAM2,65,40,&font[0],NULL,&autxt[8]},
  {12,0,JAM2,270,40,&font[0],&Data[0][0],&autxt[9]},
  {12,0,JAM2,390,40,&font[0],&Data[1][0],&autxt[10]},
  {4,0,JAM2,500,40,&font[0],&Data[2][0],&autxt[11]},

  {11,0,JAM2,65,60,&font[0],NULL,&autxt[12]},
  {12,0,JAM2,270,60,&font[0],&Data[3][0],&autxt[13]},
  {12,0,JAM2,390,60,&font[0],&Data[4][0],&autxt[14]},
  {4,0,JAM2,500,60,&font[0],&Data[5][0],&autxt[15]},

  {11,0,JAM2,65,80,&font[0],NULL,&autxt[16]},
  {12,0,JAM2,270,80,&font[0],&Data[6][0],&autxt[17]},
  {12,0,JAM2,390,80,&font[0],&Data[7][0],&autxt[18]},
  {4,0,JAM2,500,80,&font[0],&Data[8][0],&autxt[19]},

  {11,0,JAM2,65,100,&font[0],NULL,&autxt[20]},
  {12,0,JAM2,270,100,&font[0],&Data[9][0],&autxt[21]},
  {12,0,JAM2,390,100,&font[0],&Data[10][0],&autxt[22]},
  {4,0,JAM2,500,100,&font[0],&Data[11][0],&autxt[23]},

  {11,0,JAM2,65,120,&font[0],NULL,&autxt[24]},
  {12,0,JAM2,270,120,&font[0],&Data[12][0],&autxt[25]},
  {12,0,JAM2,390,120,&font[0],&Data[13][0],&autxt[26]},
  {4,0,JAM2,500,120,&font[0],&Data[14][0],NULL}
 };

struct Requester auktion =
 {NULL,20,5,600,180,0,0,&augg[0],&aubo[0],&autxt[0],0,0,NULL,NULL,NULL,NULL,NULL};

Auktion(pl)
SHORT pl;
 {
  int i,id;
  int count = 0;
  int ship = 0;
  struct IntuiMessage *aumsg = NULL;
  BOOL choosen = FALSE;
  static USHORT again[4] = NULL;

  if (again[pl] != Quartal[7].Quartal)
   {
    again[pl] = Quartal[7].Quartal;

    autxt[2].IText = Spieler[pl].Name;
    auggim[0].ImageData = box2;
    auggim[1].ImageData = box3;

    for(i=0;i<4;i++)
     {
      augg[2+i].NextGadget = &augg[3+i];
      autxt[10+i*4].NextText = &autxt[11+i*4];
     }

    for(i=0;i<5;i++)
     auggtxt[2+i].FrontPen = 1;

    for(i=0;i<Spieler[pl].Schiffsanzahl;i++)
     {
      if (Spieler[pl].Schiffsdaten[i].Alter >= 0)
       {
        autxt[7+count*4].IText = Spieler[pl].Schiffsdaten[i].Typ;
        if (Spieler[pl].Schiffsdaten[i].Ladung == 0)
         strcpy(&Data[count*3][0]," --");
        else
         sprintf(&Data[count*3][0],"%d t",Spieler[pl].Schiffsdaten[i].Ladung);
        if (Spieler[pl].Schiffsdaten[i].Kabinen == 0)
         strcpy(&Data[count*3+1][0]," --");
        else
         sprintf(&Data[count*3+1][0],"%d",Spieler[pl].Schiffsdaten[i].Kabinen);
        sprintf(&Data[count*3+2][0],"%3.1f Mio.",(float)((LONG)((Spieler[pl].Schiffsdaten[i].Grundpreis+.025*(Spieler[pl].Schiffsdaten[i].Kabinen/10)+1.5*(Spieler[pl].Schiffsdaten[i].Ladung/1000))*(90-Spieler[pl].Schiffsdaten[i].Alter/6)/100)));
        count++;
       }
     }

    augg[1+count].NextGadget = NULL;
    autxt[6+count*4].NextText = NULL;

    if (count == 1)
     {
      Nachricht(pl,5,0,0);
      choosen = TRUE;
     }
    else
     {
      Request(&auktion,Window);

      while (!(choosen))
       {
        while((aumsg=(struct IntuiMessage *)GetMsg(Window->UserPort))==NULL);
        ReplyMsg(aumsg);

        if (aumsg->Class == GADGETDOWN)
         {
          id = aumsg->IAddress->GadgetID;

          if ((id >= 1) && (id <= 5))
           {
            if (ship != 0)
             auggtxt[1+ship].FrontPen = 1;
            ship = id;
            auggtxt[1+ship].FrontPen = 0;
            RefreshGadgets(&augg[0],Window,&auktion);
           }
          if (id == 6)
           choosen = TRUE;
          if (id == 7)
           {
            choosen = TRUE;
            Gebote(pl,(ship-1));
           }
         }
       } 
      EndRequest(&auktion,Window);
     }
   }

  return;
 } 
