Exemplo n.º 1
0
int TB_init()
{
  ToolBus = TBfalse;
  init_terms();
  init_utils();
  return gethostname(this_host, MAXHOSTNAMELEN);
}
Exemplo n.º 2
0
/*
** Initializes the number, score, kills, deaths, and money of all combatants.
*/
init_combatants()
{
	extern Vdesc *vdesc;
	extern Prog_desc *prog_desc[];
	Combatant *c;
	int max_cost = 0, i;

	num_teams = 0;
	for (i = 0; i < MAX_TEAMS; ++i) {
		teamdata[i].vehicle_count = 0;
		teamdata[i].treasury = 0;
	}

	for (i = 0; i < num_combatants; i++) {
		c = &combatant[i];
		/* name combatant after player, or failing that a program */
		if (c->num_players) {
			(void) strncpy(c->name, terminal[c->player[0]]->player_name,
						   MAX_STRING - 1);
			
		} else {
			assert(c->num_programs > 0);
			(void) strncpy(c->name, prog_desc[c->program[0]]->name,
						   MAX_STRING - 1);
			
		}

		max_cost = MAX(max_cost, vdesc[c->vdesc].cost);
		last_team = MAX(last_team, c->team);
		if ((teamdata[c->team].vehicle_count)++ == 0) {
			++num_teams;
		}
		c->number = i;

		c->keep_score += c->score;
		c->keep_kills += c->kills;
		c->keep_deaths += c->deaths;

		c->score = 0;
		c->kills = 0;
		c->deaths = 0;
	}

	init_terms();

	/* Give everyone $ 2 * max_cost - cost of their vehicle */
	for (i = 0; i < num_combatants; i++) {
		c = &combatant[i];
		c->money = max_cost * 2;
		if (!settings.si.pay_to_play)
			c->money -= vdesc[c->vdesc].cost;
		teamdata[c->team].treasury += c->money;
	}
}
Exemplo n.º 3
0
int TBinit(char *tname, int argc, char *argv[],
       TBcallbackTerm fun, term * (check_in_sign)(term *))
{
  char *s;
  char host_toolbus[MAXHOSTNAMELEN];
  int fromToolBus, i = 1;
  TBbool local_ports = TBfalse;
  term *trm;

  tool_name = (tname) ? tname : "anonymous_tool";
  ToolBus = TBfalse;
  init_terms();
  init_utils();

  if(gethostname(this_host, MAXHOSTNAMELEN) < 0)
    err_sys_fatal("TBinit -- can't get host name");

  strcpy(host_toolbus, this_host);
  WellKnownSocketPort = TB_PORT;
  while(i < argc){
    if(streq(argv[i], "-help")){
      help(); exit(0);
    } else if(streq(argv[i], "-verbose")){
      TBverbose = TBtrue;
    } else if(streq(argv[i], "-TB_HOST")){
      i++;
      if(strlen(argv[i]) > MAXHOSTNAMELEN)
        err_fatal("TBinit -- name of ToolBus host too long");
      strcpy(host_toolbus, argv[i]);
      i++;
    } else if(streq(argv[i],"-TB_PORT")){
      i++;
      WellKnownSocketPort = atoi(argv[i++]);
   } else if(streq(argv[i],"-TB_TOOL_ID")){
     i++;
     this_tool_id = atoi(argv[i++]);
   } else if(streq(argv[i], "-TB_TOOL_NAME")){
     tool_name = argv[i+1];
     i += 2;
   } else if(streq(argv[i], "-TB_SINGLE")){
     i++;
     stand_alone = TBtrue;  
   } else if(streq(argv[i],"-TB_LOCAL_PORTS")){
     i++;
     local_ports = TBtrue;
   } else
     i++;
  }

  if((s = getenv("TB_VERBOSE")) && 
     streq(s ,"true"))
    TBverbose = TBtrue;

  if((s = getenv("TB_LOCAL_PORTS")) && 
     streq(s ,"true"))
    local_ports = TBtrue;


  if(stand_alone || !fun){ /* execute stand alone */
    /* TBaddTermPort(0, fun); */
    return TB_OK;
  }

  if(mkports(local_ports, tool_name, host_toolbus, &this_tool_id, &fromToolBus,
             &toToolBus) == TB_ERROR)
    err_fatal("TBinit -- can't connect to ToolBus");


  TBaddTermPort(fromToolBus, fun);

  Snd_Void = TBmake("snd-void()");
  TBprotect(&Snd_Void);

  trm = TBread(fromToolBus); /* obtain the tool signature from the ToolBus */

  if(TBmatch(trm, "rec-do(signature(%t,%t))", &tool_in_sign, &tool_out_sign)){
    TBsend(Snd_Void);
    if(check_in_sign){
      trm = (*check_in_sign)(tool_in_sign);
      if(trm)
	err_fatal("TBinit -- NOT IN INPUT SIGNATURE: %t", trm);
    }
  } else
    err_fatal("signature information garbled: %t", trm);


  return TB_OK;
}