Ejemplo n.º 1
0
void FirmBase::think_invoke_god()
{
	if( pray_points < MAX_PRAY_POINTS || !can_invoke() )
		return;

	invoke_god();
}
Ejemplo n.º 2
0
//--------- Begin of function FirmBase::put_info ---------//
//
void FirmBase::put_info(int refreshFlag)
{
	disp_basic_info(INFO_Y1, refreshFlag);

	if( !should_show_info() )
		return;

	disp_base_info(INFO_Y1+54, refreshFlag);
	disp_worker_list(INFO_Y1+104, refreshFlag);
	disp_worker_info(INFO_Y1+168, refreshFlag);
	disp_god_info(INFO_Y1+226, refreshFlag);

	//------ display button -------//

	int x, y=INFO_Y1+279;

	if( own_firm() )
	{
		if( refreshFlag==INFO_REPAINT )
		{
			button_invoke.paint( INFO_X1, y, 'A', "INVOKE" );
			button_reward.paint( INFO_X1 + BUTTON_ACTION_WIDTH, y, 'A', "REWARDSP" );
			button_vacate_firm.paint(INFO_X1 + BUTTON_ACTION_WIDTH * 2, y, 'A', "RECRUIT");
			button_vacate_firm.set_help_code("MOBILIZE");
		}

		if( can_invoke() )
			button_invoke.enable();
		else
			button_invoke.disable();

		if( nation_array[nation_recno]->cash >= REWARD_COST &&
			 ( (overseer_recno && unit_array[overseer_recno]->rank_id != RANK_KING)
			  || selected_worker_id ) )
		{
			button_reward.enable();
		}
		else
		{
			button_reward.disable();
		}

		if( have_own_workers() )
			button_vacate_firm.enable();
		else
			button_vacate_firm.disable();

		x=INFO_X1+BUTTON_ACTION_WIDTH * 3;
	}
	else
		x=INFO_X1;

	disp_spy_button(x, y, refreshFlag);
}
Ejemplo n.º 3
0
bool 
Action_list::invoke() const 
{
   // XXX - for development/debug
   if (!can_invoke()) {
      err_adv(debug, "Action_list::invoke: error: can_invoke returns false");
      return false;
   }

   // even though we checked, we're still keeping track of
   // whether they do in fact report success:
   bool ret = true;
   for (Action_list::size_type i=0; i<size(); i++)
      ret = at(i)->invoke() && ret;
   assert(ret == true);
   return ret;
}
Ejemplo n.º 4
0
// -------- begin of function FirmBase::detect_firm_info --------//
//
void FirmBase::detect_firm_info()
{
	if( !is_own() )
		return;

	//----------- detect invoke -----------//

	if( button_invoke.detect() && can_invoke() )
	{
		if(remote.is_enable())
		{
			// packet structure : <firm recno>
			short *shortPtr=(short *)remote.new_send_queue_msg(MSG_F_BASE_INVOKE_GOD, sizeof(short));
			shortPtr[0] = firm_recno;
		}
		else
		{
			invoke_god();
			// ##### patch begin Gilbert 21/10 #######//
			return;		// call selecting new god now, return immediately
			// ##### patch end Gilbert 21/10 #######//
		}
	}

	// ---------- detect unknown effect -----//

	if( button_unknown_effect.detect() && can_make_wish() )
	{
		invoke_random_effect( 0, COMMAND_PLAYER);
		invoked_effect_last = 3;
		se_ctrl.immediate_sound("TURN_ON");
	}

	// ----- detect clear invoked_effect_text button -----//

	if( button_clear_text.detect() )
	{
		invoked_effect_text[0] = '\0';
		se_ctrl.immediate_sound("TURN_ON");
	}
 
//	help.set_help( INFO_X1+13+54, INFO_Y1+261, INFO_X1+13+53+44, INFO_Y1+280+48, "GDINVOKE" );
//	help.set_help( INFO_X1+13+108, INFO_Y1+261, INFO_X1+13+107+44, INFO_Y1+280+48, "BLESS" );
}
Ejemplo n.º 5
0
// -------- begin of function FirmBase::disp_firm_info --------//
//
void FirmBase::disp_firm_info(int dispY1, int refreshFlag)
{
   disp_god_info(INFO_Y1+226, refreshFlag);

	//------ display button -------//

	int x2 = INFO_X1 +13;
	int y2 = INFO_Y1 +281;

	if( refreshFlag == INFO_REPAINT )
	{
		button_clear_text.create( INFO_X1+13+3*BUTTON_DISTANCE, INFO_Y1+281, 'A', "PREVMENU" );
	}
			
	if( !is_own() )
		return;

	x2 += BUTTON_DISTANCE;

	char fileName[] = "GB-AX";
	char i = (char) (sys.frame_count % 9);
	if (i > 4)
		i = 8 - i;
	fileName[4] = '1' + i;
	
	if( (!can_invoke()) && (god_unit_recno == 0) )
	{
		button_invoke.paint( x2, y2, 'A', "INVOKE" );
		button_invoke.set_help_code("GDINVOKE");
		button_invoke.disable();
	}
	else
	{
		if( !god_unit_recno )
		{
			button_invoke.paint( x2, y2-12, 'A', "GB-A1" );
			button_invoke.set_help_code("GDINVOKE");
		}
		else
		{
			button_invoke.paint( x2, y2-12, 'A', fileName );
			button_invoke.set_help_code("GDINVOKE");
		}
		button_invoke.enable();
	}		

	x2 += BUTTON_DISTANCE;
	
	i = (char) (sys.frame_count % 9);
	if (i > 4)
		i = 8 - i;
	fileName[4] = '1' + i;
	
	fileName[3] = 'B';
	fileName[4] = '1' + i;

	if( (!can_make_wish()) && (invoked_effect_id == 0) )
	{
		button_unknown_effect.paint( x2, y2, 'A', "INVOKE" );
		button_unknown_effect.set_help_code("BLESS");
		button_unknown_effect.disable();
	}
	else
	{
		if ( !invoked_effect_id )
		{
			button_unknown_effect.paint( x2, y2-15, 'A', "GB-B1" );
			button_unknown_effect.set_help_code("BLESS");
			button_unknown_effect.enable();
		}
		else
		{ 
			button_unknown_effect.paint( x2, y2-15, 'A', fileName );
			button_unknown_effect.set_help_code("BLESS");
			button_unknown_effect.enable();
		}
	}

	// ----- display clear invoked_effect_text button -----//

	button_clear_text.visible_flag = invoked_effect_text[0];	// displaying invoked effect text
	button_clear_text.paint();
}