вопрос к разработчикам

3 replies [Last post]
m110h
m110h's picture
User offline. Last seen 8 years 15 weeks ago. Offline
Joined: 2010-11-30
Posts: 75

Уважаемый unC0Rr, объясни пожалуйста, как добавить обработку своей клавиши и зацепить на неё команду.

hedgewars forever!

m110h
m110h's picture
User offline. Last seen 8 years 15 weeks ago. Offline
Joined: 2010-11-30
Posts: 75

Пока сделал так.
1) объявляем в uCommandHandlers.pas процедуру-обработчик

procedure chNewCmd(var s: shortstring);
begin
    s:= s; // avoid compiler hint
    
    if CheckNoTeamOrHH or isPaused then
        exit;
// ... любой код
end;

2) в InitModule пишем

RegisterVariable('newcmd'   , vtCommand, @chNewCmd        , true );

3) В uTeams.pas в chAddTeam добавляем перед CurrentTeam^.voicepack:= AskForVoicepack('Default')

        if not CurrentTeam^.ExtDriven then begin
            CurrentTeam^.Binds[KeyNameToCode('l')] := 'newcmd';
        end;

И у нас chNewCmd теперь привязана к клавише l. Меня терзают смутные сомнения по поводу места, где происходит бинд клавиши. Он же не в chAddTeam должен быть. Куда его лучше сделать, чтобы не хламить код?

hedgewars forever!

unC0Rr
unC0Rr's picture
User offline. Last seen 1 year 3 weeks ago. Offline
Joined: 2006-11-27
Posts: 576

По-хорошему, бинд нужно передавать вместе с остальными из фронтенда

m110h
m110h's picture
User offline. Last seen 8 years 15 weeks ago. Offline
Joined: 2010-11-30
Posts: 75

Спасибо за ответ.

hedgewars forever!

User login

Copyright © 2004-2024 Hedgewars Project. All rights reserved. [ contact ]