Esempio n. 1
0
void Bot::ActiveFrame()
{
    //get ready if in the game
    if(GS_MatchState() <= MATCH_STATE_WARMUP && !IsReady() && self->r.client->teamstate.timeStamp + 4000 < level.time)
        G_Match_Ready(self);

    ApplyPendingTurnToLookAtPoint();

    const CombatTask &combatTask = botBrain.combatTask;

    bool inhibitShooting, inhibitCombatMove;
    SetCombatInhibitionFlags(&inhibitShooting, &inhibitCombatMove);

    // ucmd modification in FireWeapon() will be overwritten by MoveFrame()
    bool fireButtonPressed = false;
    if (!inhibitShooting)
    {
        SetCloakEnabled(false);
        // If bot fired builtin or script weapon, save builtin fire button status
        FireWeapon(&fireButtonPressed);
    }
    else
    {
        if (!combatTask.Empty())
        {
            SetCloakEnabled(true);
        }
        else if (botBrain.HasGoal())
        {
            if (botBrain.IsCloseToAnyGoal(768.0f, true))
                SetCloakEnabled(true);
            else if (botBrain.IsCloseToAnyGoal(384.0f, false))
                SetCloakEnabled(true);
            else
                SetCloakEnabled(false);
        }
        else
        {
            SetCloakEnabled(false);
        }
    }

    bool beSilent = ShouldBeSilent(inhibitShooting);

    // Do not modify pmove features by beSilent value, features may be changed dynamically by script.
    usercmd_t ucmd;
    memset(&ucmd, 0, sizeof(ucmd));
    MoveFrame(&ucmd, inhibitCombatMove, beSilent);

    if (fireButtonPressed)
        ucmd.buttons |= BUTTON_ATTACK;

    CallActiveClientThink(&ucmd);

    SayVoiceMessages();
}
Esempio n. 2
0
int SimpleUserQueryEx( TEXTSTR result, int reslen, CTEXTSTR question, PSI_CONTROL pAbove, void (CPROC*query_success_callback)(uintptr_t, LOGICAL), uintptr_t query_user_data )
{
	PSI_CONTROL pf, pc;
	struct user_query_info *query_state = New( struct user_query_info );
	int32_t mouse_x, mouse_y;

	//int Done = FALSE, Okay = FALSE;
	pf = CreateFrame( NULL, 0, 0, 280, 65, 0, pAbove );
	SetCommonUserData( pf, (uintptr_t)query_state );
	query_state->pf = pf;
	query_state->Done = FALSE;
	query_state->Okay = FALSE;
	query_state->result = result;
	query_state->reslen = reslen;
	pc = MakeTextControl( pf, 5, 2, 320, 18, TXT_STATIC, question, TEXT_NORMAL );

	query_state->edit = MakeEditControl( pf, 5, 23, 270, 14, TXT_STATIC, NULL, 0 );
	AddCommonButtons( pf, &query_state->Done, &query_state->Okay );
	SetButtonPushMethod( GetControl( pf, IDOK ), OkayClicked, (uintptr_t)query_state );
	SetButtonPushMethod( GetControl( pf, IDCANCEL ), CancelClicked, (uintptr_t)query_state );
	GetMousePosition( &mouse_x, &mouse_y );
	MoveFrame( pf, mouse_x - 140, mouse_y - 30 );
	//lprintf( WIDE("Show query....") );
	DisplayFrame( pf );
	SetCommonFocus( query_state->edit );

	query_state->query_success = query_success_callback;
	if( !query_success_callback )
	{
		int okay;
		CommonWait( pf );
		if( query_state->Okay )
		{
			GetControlText( query_state->edit, result, reslen );
		}
		DestroyFrame( &pf );
		okay = query_state->Okay;
		Release( query_state );
		return okay;
	}
	else
	{
		query_state->query_success = query_success_callback;
		query_state->query_user_data = query_user_data;
		return 0;
	}

}