nlsoav

Blebetanje o prostem programju in raznih projektih

story of * ali videofuuuu november 24, 2011

Filed under: Ekologi brez meja,FLOSS — Jaka Kranjc @ 00:08

Danes sem pol delavnika izgubil za na videz enostavno nalogo vgrajevanja podnapisov v slikovno sled treh videov. Tako da je vse v eni datoteki in se uporabnikom ni treba truditi z zapletenim nalaganjem podnapisov.

 

In to že drugič. :| Prvič sem si zadal vse narediti neposredno s ffmpeg in po parih urah obupal. Pretvornik v VLC ni bil nič boljši in na koncu mi je nekako uspelo z avidemux.

Tokrat sem spet imel opravka s filmčki iz serije Story of Stuff, zato sem približno vedel, kako postopati. Pohvalno so na voljo pod Creative Commons, ampak zvočna sled je v nepodprtem formatu — nimamo še encoder-ja, niti ne dela kopiranje sledi. Že z izbiro video encoder-ja je treba biti pazljiv, saj se avidemux sesuva kot za stavo, sploh noče začeti pretvorbe ali pa popači zvok (zvito parkrat samo drugo polovico!). Da je bila merica polna, se mi je pri parih pretvorbah še računalnik kritično pregrel in ugasnil.

 

Po mnogih poskusih in permutacijah je bil končni postopek tak:

  1. V avidemux sem dodal filter Subtitler in zapekel podnapise v soe-brez.avi (brez zvoka)
  2. mplayer -vo null -ao pcm:file=soe.wav soe.avi # izluščil zvočno sled
  3. ffmpeg -i soe.wav -i soe-brez.avi -vcodec libx264 -threads 3 -y soe.mkv # združil oboje skupaj in spet stisnil

(v enem primeru je že avidemux zmogel pravilno dodati izvoženo zvočno sled)

 

Zadnji video je ponujal drugačen izziv. Imel je že zapečene podnapise, a ne naših, tako da samo prekrivanje ne bi bilo dovolj, ker napisi ne bi bili berljivi. V ponedeljek sem ugotovil, da avidemux podpira dodatno ozadje za podnapise (kot v filmih), kar bi rešilo vse skupaj. Še preden sem preveril, se je izkazalo, da že par različic te možnosti ni več! :( Razvijalci na IRC-u niso znali povedati ničesar koristnega niti ni noben hotel popraviti dokumentacije, zato sem bil pesimističen. Dovolj star avidemux bi težko našel (sploh statično povezanega), pa še potem mogoče ne bi delal.

A danes se mi je nasmehnila sreča. Med ročnim urejanjem projektnih datotek (zaradi omenjenega sesuvanja) sem opazil, da ima filter za podnapise med drugim shranjene tudi parametre:

“_useBackgroundColor=0″,”_bg_Y_percent=0″,”_bg_U_percent=0″,”_bg_V_percent=0″

Sumljivo primerno! :) Prvega sem nastavil na 1, ostale pa vse na 50, kar je podnapisom dalo zeleno ozadje namesto pričakovanega sivega. Po imenih spremenljivk bi mi lahko bilo že takoj jasno, da vrednosti niso za barvni zapis v RGB, ampak YUV. Za željeno sivo sem potem dal samo Y na 60 in zadeva je bila rešena (Y predstavlja cel sivinski spekter).

 

A celo to ni optimalno, saj lepo dela v mplayer-ju, v VLC pa mi nagaja zvok. Pestrost formatov je tu samo ovira. Mogoče bi moral vse pretvoriti v prosti Ogg/Theora+Vorbis?

 

git add -e november 16, 2011

Filed under: FLOSS,Git,Razvoj — Jaka Kranjc @ 00:14

Danes sem odkril še eno koristno stikalo za git. git add -p je odličen za shranit del sprememb, ampak ko je teh veliko in jih hočemo spustiti le par, je lažje uporabiti git add -e. Tudi če bi bile spremembe izolirane v svoje datoteke, ne bi mogli uporabiti git add -A in git reset, saj bi tako v sklop sprememb dodali tudi vse datoteke, katerim sploh ne sledimo!

 

git add -e vzame diff stanja in te vrže v urejevalnik, kjer potem poljubno brišeš in spreminjaš koščke! Zato ni uporaben samo v omenjenem primeru, ampak lahko z njim npr. tudi polepšamo kako spremembo, da se zgodi v več smiselnih korakih (lepo zaokrožene spremembe omogočajo lažje razhroščevanje). Kot en delni git stash.

 

Seveda moramo biti pozorni, da ne spremenimo števila vrstic, ker bo potem nastal konflikt, poskus pa propadel.

 

NLB Klik: ne podaljševat pod linux-om november 8, 2011

Filed under: FLOSS — Jaka Kranjc @ 19:04

Pred kratkim mi je poteklo digitalno potrdilo za Klik, saj ima le petletno življenjsko dobo. Ob navodilih sem bil malce presenečen, saj piše, da obnovitev dela smo v raziskovalcu in Firefoxu (7), storitev pa že ves čas uporabljam v Operi. Ok, brezveze tvegat, pa dajmo prek lisičke.

 

Napaka! Postopek je šel gladko skozi, dokler naj ne bi dobil certifikata. Takrat mi ponudi datoteko clientcgi. Čudno, ampak naj bo, ime pa ja ni pomembno. Po shranitvi ga poskusim uvoziti, pa ne gre in ne gre. Pogledam kaj sem sploh dobil:

$ file ~/carina/clientcgi
/home/lynx/carina/clientcgi: data
$ file ~/carina/clientcgi -i
/home/lynx/carina/clientcgi: application/octet-stream; charset=binary

Nič koristnega, ampak mogoče file samo ne prepozna čarobne številke?

 

Začnem iskati po pajčevini in glej ga zlomka! Jaka Mele iz Monitorja je imel isti problem že sredi 2008, niz komentarjev do letos pa kaže, da tudi vmes ni bilo kaj bolje! Šalabajzerji, bi vsaj dokumentacijo popravili. Postopka namreč ne moreš na novo začeti, ker sistem misli, da je že zaključen.

 

Na kratko: ne obnavljat klikovega certifikata pod čemurkoli kot okni.

 

(Obstaja majhna možnost, da so kriptološke knjižnice v wine že dovolj daleč, da bi delalo preko emuliranega raziskovalca, ampak nisem poskusil.)

 

exit(127); oktober 13, 2011

Filed under: FLOSS,Razvoj — Jaka Kranjc @ 23:12

Danes je zaokrožila novica, da je umrl Denis Ritchie, avtor jezika C in soavtor operacijskega sistema UNIX, predhodnika vseh današnjih stabilnih operacijskih sistemov. ;)
Za veliko smo mu torej lahko hvaležni! Namesto ponavljanja RIP po raznih internetnih beznicah, ga raje počastimo s kakšnim novim kosom kode. Tudi če ni v C-ju, ki je mimogrede osnova za mnoge višje-nivojske jezike in ima par dolgočasno poimenovanih naslednikov: D, E, F in G (pri čemer je sam naslednik B).

 

Tihi zaton oktober 8, 2011

Filed under: FLOSS,Razvoj,Wormux — Jaka Kranjc @ 20:58

Wormux is dead, long live Wormux!


 

Po več kot pol leta brez kakršnih koli sprememb, je edini preostal razvijalec najavil konec projekta. Mogoče kdaj spet oživi, saj preporodi v odprtokodnem svetu niso tako redki, ker je večina stvari javnih in predpripravljenih. Samo nekdo z voljo in časom se mora najti. Kot primer bi izpostavil FreedroidRPG, ki je že dvakrat skoraj propadel, trenutno pa je nekje pri vrhu vala uspešnosti. :)

 
Tačas pa lahko oboževalci serije Worms preizkusite dosti bolj vitalen Hedgewars. Gre za mlado konkurenco, ki pa je hitro prevladala, saj se je Wormux dolgo mučil z integracijo zelo naprednih fizikalnih pogonov, umetno nespametjo in nezanesljivostjo večigralskega načina. Je pa na žalost zelo očiten klon originala in ni preveden v slovenščino.

 
Nazaj k WormuxWarmux. Ko sem pred leti prešel na linux, sem razmišljal katere igre bi rad videl tudi tu. Worms-i so bili eni od teh, ampak kar nekaj časa ni bilo na voljo nič podobnega. Prvotni Wormux je namesto SDL uporabljal Allegro/Clanlib in pred tem prehodom praktično ni bil igralen. Ko se je to spremenilo, sva z Markom Burjekom prispevala prvi prevod, kasneje pa sem skrbel za cel i18n podsistem (fej fuj) in par drugih malenkosti. Delno zato, ker je bila ves čas ostala ekipa takorekoč v celoti francoska in je že sam angleški prevod trpel. ;)

 
Škoda, ampak kaj č’mo!? Prikaz evolucijske izločitve v prostem programju. :D

 

Arrrg! Thar be pirates aboard me ship! Me booty! april 7, 2011

Filed under: FLOSS,GemRB,Razvoj — Jaka Kranjc @ 18:30

Od kar sem zadnjič pisal o gemrb, je bilo par novih izdaj [0.6.4] [0.6.3] [0.6.2]. Cel kup pomembnih sprememb in novosti, projekt pa je vmes doživel desetletnico! Pred nami je pri trenutni hitrosti vsaj še par let dela za popolno kompatibilnost. Hkrati se dogaja precej nadgraditev standarda, tako da počasi postajamo zanimivi tudi za klasične modder-je. Največji influx uporabnikov je trenutno zaradi prenosa na Android – gemrb je na voljo direktno preko Android market-a!


(gemrb + francoski BG2 + tablični računalnik)

 

Danes se je pa zgodilo nekaj nenavadnega. Na naš kanal za IRC je prišel uporabnik in pojamral, da mu ne dela ena bash skripta (shabang je imela sh, on pa na ubuntu, kjer sh ni povezava na bash, a na polomljeni (d)ash). Čudno smo gledali, ker to ni vključeno v paket, potem je pa mujo ves ponosen rekel, da je Baldur’s Gate snel preko torrent-a in da je bil gemrb že zraven!? Nekdo je rekel, da ne podpiramo piratskih različic, nakar je mujo takoj pobegnil. Nam pa ni dalo miru — smo ga narobe razumeli ali so res zunaj taki torrent-i? Malo iskanja in *bam* ruski tracker z Baldur’s Gate in le par dni staro najnovejšo različico gemrb!!

Ne vem kaj točno naj si mislim. Po eni strani je smešno — morda mislijo, da original ne dela več? Po svoje je pa vzpodbudno, saj bi tako lahko od ukradene robe kaj imeli še uporabniki mac-ov in linux-a, če ne bi poznali trenutno dostikrat boljše alternative – wine!? Potem preseneča odlična ažurnost, saj spravit osvežen paket v npr. debian, fedoro, ubuntu … traja nesmiselno dolgo. Aja, pa še to. Pirati so se res potrudili, saj je v torrent-u izvorna koda od gemrb, navodila za izgradnjo, prirejena nastavitvena datoteka in prej omenjena skripta za enostavnejši zagon! Več kot bi pričakoval še od klasičnih distributerjev, kaj šele od piratov (izgleda, da Scena le še ni mrtva).
Seveda pa mi ni treba poudarjati, da s taki ljudmi nočemo imeti opravkov. Ne podpiram zgrešenega sistema založništva, a te igre so le stare in na voljo za drobiž, kljub temu pa imajo ogromen value-for-money faktor.

 

Moji vtisi o Arch linux-u marec 24, 2011

Filed under: FLOSS — Jaka Kranjc @ 23:39

Pred kratkim mi je odžvižgala matična plošča. RIP, dolgo mi je služila (še socket A). :) Na srečo sem malo prej začel raziskovati, kateri prenosnik kupiti, tako da sem imel v roku parih dni ustrezno zamenjavo. Gor je bil prednaložen Suse Linux Enterprise Edition in po parih klikih se je vse namestilo do konca. Cel kup enih prednaloženih in prednastavljenih stvari, zato je vse delalo kar samo od sebe.

 

Kr neki, to sem moral hitro popravit. :D SLED nima skoraj nobenih ažurnih posodobitev (za razliko od prostega OpenSuse), ker gre za preveč pomembno delovno orodje, pa si nisem hotel namestiti Source Mage.
ubuntu, ne hvala
Glede na nenavadno čudne sisteme posodabljanja pri večini distribucij, ni ostalo prav dosti izbire in sem se odločil še enkrat poskusiti Arch.

 

Namestitev je bila neproblematična, potem se je pa hitro videlo kaj vse manjka. Privzetemu inputrc (bližnjice za readline – konzolo) je manjkalo inkrementalno iskanje in vključen je imel pc speaker ASCII zvonec (\a). Fej fuj.

 

Optika je bila neizkoriščena, čeprav sem izbral en Dunajski zrcalni strežnik. Sprememba in aria (powerpill namesto pacman) sta pomagali, a na žalost niti powerpill ne zna paralelizirati dolpotegov ali iskanja (kaj šele nameščanja).
Ker v glavnih skladiščih manjka kopica programja, ti ne preostane drugega, da v mešanico dodaš še jogurt (yaourt), ki omogoči uporabo neuradnih paketov in receptov. Tako je precejšnja zmeda pri nameščanju, ker je cel kup različnih wrapper-jev (omenil nisem še pacman-color) za osnovna dva paketna sistema.
Yaourt izboljša tudi preglednost, tako z boljšim formatom kot z barvami in je super zadevica. Ampak, da prideš do njega, moraš prvo dodati eno neuradno francosko skladišče in nadalje paziti kaj nadgrajuješ v sistemu – npr. jedrni moduli od tam se ne bodo avtomatsko posodobili ob nadgradnji jedra. Tukaj bi zlahka poenostavili stvari.

 

Par dni nazaj se je zgodil en lep polom. Izšel je nov pacman, ki ima radikalno drugačen datotečni format in zato seveda ni kompatibilen s trenutnim jogurtom. Rešitev? Namesti razvijalski posnetek novega jogurta. A pacman tega ne zmore, ker je ta okus jogurta na voljo samo v jogurtovem skladišču (hladilnik, ki mu dolgočasno pravijo AUR). Kura in jajce. :) Zadevo sem moral rešiti na roke, najlažje bi pa bilo pred posodobitvijo pacmana namestiti ta novi jogurt in potem najbrž ne bi bilo te zgodbice, a po bitki je lahko biti general.

 

Poglavje zase je pa gimp. Sploh ne vem, če je druga različica od te, ki počiva na Source Mage disku, ampak izkušnja je čisto drugačna. Ne vem zakaj, a na žalost je precej na slabše, pa sploh nisem napreden uporabnik:

  • ne moreš shranjevat v druge formate preko Save*, ampak samo preko Export
  • pri čopičih se ne da več izbirati velikosti!?
  • v enem primeru mi je za polovico (torej 4x) zmanjšano sliko ob shranjevanju parkrat napihnil – velikost datoteke je bila še večja kot pri originalu!
  • (gtk file chooser čudnosti)

 

Celokupno je izkušnja dobra in jo priporočam, a mi je vseeno še utrdila pozitivno mnenje o Source Mage in Sorcery. ;) Zaradi nove strojne opreme sem se lahko igral tudi s takimi čudi kot so KDE4, wireless (priporočam prestop na wicd) in urejanjem HD videa. Grafika tudi dela v redu, čeprav ta čip še ni uradno podprt in imam v kotu zaslona vednoprisotno AMD-jevo štempiljko. :D
arch

 

Prenos/port/porting september 7, 2010

Filed under: FLOSS,GemRB,Očistimo Slovenijo v enem dnevu!,Razvoj,Wormux — Jaka Kranjc @ 19:19

Zadnji mesec sem imel kar nekaj opravka s prenosi programov iz ene platforme na drugo (npr. računalnik -> hladilnik). Pri tem se pojavljata dve problematiki:
1. Drugo (razvojno) okolje
2. Druga (slabša) strojna oprema

Zdaj pa par primerov.

Romunski programi za prijavo odlagališč preko mobilnikov
Romuni so v okviru svoje analogije Estonske čistilne akcije razvili par omenjenih programov. Ker telefoni tečejo na zelo pestri osnovni programski in strojni opremi, ni bil dovolj en, ampak so jih naredili kar štiri! Enega za Android, enega za winmobile, enega za Symbian in ostale javance ter enega za robido. Vsi so odprtokodni programi, zato sem hotel preveriti, če bi bili uporabni tudi pri nas.
Ajajaj, kakšne komplikacije! :evil: Prvo sem preizkusil različico za Symbian, ker imam slučajno blizu en kompatibilen telefon. Že pri namestitvi je bilo par zapletov, na koncu pa zadeve sploh nisem mogel zagnati, navkljub podpori razvijalca. Njemu seveda vse dela, je pa res, da na točno takem telefonu še ni bilo testov. Winmobile sem takoj odpisal, za Blackberry pa naj bi obstajal dober emulator, a se je izkazalo, da teče le na oknih. Za razliko ima Android zelo prenosen emulator (preko qemu), ki je takoj delal. Vsaj nekaj, bi pa za vzpostavitev razvijalskega okolja potreboval še en kup drugega dela.

Wormux
Tukaj se dogajajo stvari iz drugega zornega kota. Nekdo se je javil za stvaritev prenosa na Maemo (novejše nokie in drugi) in takoj začel z delom. Ker so telefoni švoh, wormux pa požrešen, je šlo večino dela v optimizacijo in izklop raznih bonbončkov. Komunikacija teče dobro, popravki letijo levo in desno in napredek je očiten. :) Sinergija in skupni know-how delata čudeže.

GemRB
Tu je spet drugače. Že dolgo različni ljudje izdelujejo prenose, ampak se ob težavah redko obračajo na nas. Večina jih je zaradi razvojnega okolja in potrebnih knjižnic, vseeno bi pa lahko dobili več feedback-a, ker sami velike večine teh ekzotov nimamo. Pri dostih napravah so težave tudi z velikostjo zaslona in vnosom, saj ali nimajo ničesar analognega tipkovnici in miški ali pa so te zelo okrnjene (telefoni).
Ekstremen primer je tu ročna konzola Dingoo, kjer je na voljo le kopica gumbov, zaslon je pa manjši kot pri nekaterih telefonih. Da bi se slika sploh prilegala na zaslon, je avtor spremenil izrisovanje, da vedno zmanjša sliko na polovico. Zato tele niso predogledne slike, ampak originali, igranje pa očitna muka! Čisto nasprotje prenosu na ipad, ki ima velik zaslon občutljiv na dotik.
Ampak to ni še dno. :) Zadnjič je na kanal prišel nekdo, ki je hotel gemrb prenesti na Dreamcast! Ja, le 16M sistemskega pomilnika in praktično nič prostora na disku. :lol: Nočna mora, če pomislimo, da se ponavadi prišpara na enem, tako da se uporabi več drugega.

Od zadnjega sporočila je bila izdana nova različica z nekaj manjšo porabo pomnilnika in novim lahkotnim ter okrnjenim vtičnikom za zvok. Odlično za prenosnike. Škoda, da ni med njimi nobenega resnejšega razvijalca, ker bi z optimizacijo izrisovanja (SDL) ali pa novim vtičnikom (prek OpenGL (ES)) lahko dosegli več kot občutne pohitritve. Izrisovanje je ozko grlo na najhitrejših računalnikih, kaj šele na podhranjenih aparatkih. Pa pogon sploh ni tri-dimenzionalen!

 

GemRB 0.6.1 junij 22, 2010

Filed under: GemRB,Razvoj — Jaka Kranjc @ 09:44

Pred parimi dnevi smo izdali nov GemRB. Cmake je postal privzeti sistem za izgradnjo in izdajanje in čez par različic bo autocruft letel ven. :) Kaj je drugega novega? Kot vedno cel kup drobnarij, večje stvari pa so naštete na prejšnji povezavi. Da razbijem tehnomonotonost, bom opisal eno od novosti – “turn undead/undead turning”.

 

Nemrtvi (undead) so bitja v D&D in kot mnoga druga povzeta iz različnih mitologij. Mednje tako štejemo vse od različnih okostnjakov, duhov, zombijev, mumij, vampirjev, do raznih saprofagov (ghoul, ghast) in ličev (čarovnik, ki je prevaral smrt).
a lich

Kot v literaturi, so bolj ali manj odporni na razne svete objekte, osebe in prostore. Tako imajo paladini (sveti vitez) in duhovniki (svete žene :) ) od njihovega boga dano sposobnost spreobračanja nemrtvih. Glede na razliko v sposobnosti uporabnika in trdoživostjo nemrtvih tarč, se lahko zgodi več stvari. Pri preveliki razliki vprid nemrtvim, učinka ni, pri zadostni v prid uporabnika pa se nemrtvi panično razbežijo. Ko je ta razlika dovolj velika, je pa učinek odvisen od moralnih prepričanj uporabnika – dobri bodo povzročili uničenje, zlobni pa miselni nadzor. No, to je zdaj možno v vseh podprtih igrah. :)

 

Takoj po izdaji smo šli na polno spreminjat stvari. Refactoring & cleanup.
Zame nočne more s pitonovimi direktivami from-import in posledičnim kaskadnim sesuvanjem. :s S tem bo še precej dela, a je nujno potrebno za olajšanje združevanja kode za vmesnike različnih iger. Tako bo lahko šlo še več početverjene kode v smeti in vzdrževanje bo lažje.

Tom, od prejšnje različice novinec pri projektu, nadaljuje po svoje in čisti vsepovprek. Po svoje dobro, a bi dostikrat raje videl, da se kaj naredi na mehaniki in dejanskih večjih problemih.

Alyssa ima končno spet čas in si je zadala cel kup pomembnih nalog, tako da bo naslednja izdaja (ETA: konec poletja) odločen korak v pravo smer. V izvedljivost ne dvomim, ker punca obvlada.

Ata projekta in ostali pa so trenutno bolj kot ne v hibernaciji.
Glavno je, da par ljudi dela hkrati, ker se sinergija res pozna! Kot pri čaranju. :)

 

git commit –interactive maj 11, 2010

Filed under: FLOSS,Git,Razvoj — Jaka Kranjc @ 20:04

Projekt OSVED je fenomenalno uspel in je že skoraj končan. Po kratkem dopustu sem po dolgem času spet padel v deep hack mode in tokrat predstavljam en praktičen trik pri raztresenem delu z Git. Enkrat proti koncu zime smo nanj prešli tudi pri GemRB, tako da git-svn ni več potreben. :)

 

Dostikrat med delom ugotovim, da je potrebna še kaka druga sprememba in to pred to, na kateri delam. Ali pa da mimogrede odkrijem kakega hrošča. Tako se hitro zgodi, da imam v eni datoteki več nepovezanih sprememb, ki jih zaradi celovitosti potrditve (“commit” ojoj) ni lepo poslati naprej skupaj. Vsak commit naj bi bil zaključena celota, brez nepotrebnih in nepovezanih sprememb. Tako ga je lažje pregledati in tudi iskanje regresij npr. z git-bisect je dosti lažje.

 

Git zna rešiti tudi ta problem; git-commit moramo le pognati v interaktivnem načinu:

navaden@lynxlynx gemrb 0 $ git commit ––interactive
staged unstaged path
1: unchanged +34/-4 gemrb/core/Actor.cpp

*** Commands ***
1: [s]tatus 2: [u]pdate 3: [r]evert 4: [a]dd untracked
5: [p]atch 6: [d]iff 7: [q]uit 8: [h]elp
What now> 5

Prikaže se nam seznam datotek s spremembami in par možnosti za nadaljevanje. Nas zanima možnost “patch” pod številko 5. Spet se pokaže seznam datotek, mi pa z vnosom njihovih zaporednih številk določimo, na katerih želimo delati. Pred njimi se v seznamu pojavi zvezdica. Ko smo končali z izborom, še enkrat stisnemo enter in že se nam pokaže izpis razlik:

staged unstaged path
1: unchanged +34/-4 [g]emrb/core/Actor.cpp
Patch update>> 1
staged unstaged path
* 1: unchanged +34/-4 [g]emrb/core/Actor.cpp
Patch update>>
diff –git a/gemrb/core/Actor.cpp b/gemrb/core/Actor.cpp
index 8af80a2..4286675 100644
— a/gemrb/core/Actor.cpp
+++ b/gemrb/core/Actor.cpp
@@ -3569,6 +3569,14 @@ const char* Actor::GetScript(int ScriptIndex) const

void Actor::SetModal(ieDword newstate)
{
+/* int off_str = -1;
+ if (off_str != -1 && core->GetStringReference(off_str) != (ieStrRef) -1) {
+ core->DisplayConstantStringName(off_str, 0xffffff, this);
+printf(“aaaaaaaaaaaaaaaaaaaaaaaaaaaaa:%d:\n”, newstate);
+ }*/
+// off_str = STR_HIDENOMORE;
+// off_str = STR_TURNING_OFF;
+// rabmo glede na ModalState, ne glede na newstate!!
switch(newstate) {
case MS_NONE:
break;
Stage this hunk [y,n,q,a,d,/,j,J,g,e,?]? n

Git gre čez vsak kos sprememb (“patch hunk”) in nas vpraša kaj naj z njim (zadnja vrstica). Kaj pomenijo vse te izbire, nam pove “?”, ampak pomen “y”/”n” je očiten. Očitno je tudi, da je ta kos sprememb le zakomentiran in nesmiselen del nastajajoče kode in nima v končni različici kaj iskati, zato sem izbral “n”.

 

@@ -3583,12 +3591,27 @@ void Actor::SetModal(ieDword newstate)
default:
return;
}
- //come here only if success
- ModalState = newstate;

- //update the action bar
- if (InParty)
+ // FIXME: check if toggling should work also for npcs
+ if (InParty) {
+ // TODO: display the turning-off message
+ if (ModalState != MS_NONE) {
+ printf(“Turning off state:%d:\n”, ModalState);
+ }
+
+ // when called with the same state twice, toggle to MS_NONE
+ if (ModalState == newstate) {
+ ModalState = MS_NONE;
+ } else {
+ ModalState = newstate;
+ // TODO: display the turning-on message
+ }
+
+ //update the action bar
core->SetEventFlag(EF_ACTION);
+ } else {
+ ModalState = newstate;
+ }
}

//this is just a stub function for now, attackstyle could be melee/ranged
Stage this hunk [y,n,q,a,d,/,K,j,J,g,s,e,?]? y

To je kos, ki sem ga želel potrditi, zato tokrat seveda pride na vrsto izbira “y”.

 

@@ -3813,6 +3836,11 @@ bool Actor::GetCombatDetails(int &tohit, bool leftorright, WeaponInfo& wi, ITMEx
// ranged – no bonus
}

+ // HACK: Elves get a racial THAC0 bonus with all swords and bows in BG2 (but not daggers); this was hardcoded in IE
+ if (Modified[IE_RACE] == 2) {
+ THAC0Bonus += 1;
+ }
+
//second parameter is left or right hand flag
tohit = GetToHit(THAC0Bonus, Flags);
return true;
Stage this hunk [y,n,q,a,d,/,K,j,J,g,e,?]? n
@@ -4233,6 +4261,8 @@ void Actor::UpdateActorState(ieDword gameTime) {
if (!ModalSpell[0]) {
printMessage(“Actor”,”Modal Spell Effect was not set!\n”, YELLOW);
ModalSpell[0]=’*';
+// } else if(ModalSpell[0]==’-1′) {
+// PerformModalAction(ModalSpell);
} else if(ModalSpell[0]!=’*') {
core->ApplySpell(ModalSpell, this, this, 0);
}
Stage this hunk [y,n,q,a,d,/,K,g,e,?]? n

Še dve nepovezani spremembi. Ker drugih ni bilo več, je git spet prikazal glavni meni:

*** Commands ***
1: [s]tatus 2: [u]pdate 3: [r]evert 4: [a]dd untracked
5: [p]atch 6: [d]iff 7: [q]uit 8: [h]elp
What now> q
Bye.

Tokrat sem izbral izhod in moral takoj vpisat sporočilo ob potrditvi (“commit message”), nakar se je potrditev tudi izvedla:

[master 2a94147] Actor::SetModal now toggles the state to MS_NONE when the new state is the same as the old one, resulting also in proper action bar refreshing.
1 files changed, 19 insertions(+), 4 deletions(-)

 

Če ste pozabili na kak kos, ponovite postopek, a ko vas vpraša za sporočilo ob spremembi, le zaprite urejevalnik. Kos bo ostal označen kot pripravljen za potrditev (“staged”):

$ git status
# On branch master
# Your branch is ahead of ‘origin/master’ by 1 commit.
#
# Changes to be committed:
# (use “git reset HEAD …” to unstage)
#
# modified: gemrb/core/Actor.cpp
#
# Changed but not updated:
# (use “git add …” to update what will be committed)
# (use “git checkout — …” to discard changes in working directory)
#
# modified: gemrb/core/Actor.cpp

Nato izvedemo le še git commit --amend in zadnji potrditvi bo dodana še ta sprememba, medtem ko bodo druge v isti datoteki lepo ostale kjer so (vidno že iz prejšnjega izpisa).

 

PS: koda je v resnici prav lepo indentirana, le wordpress je smotan. :( Zato sem za lažjo berljivost namesto oznake code uporabil kar blockquote.

 

 
Follow

Get every new post delivered to your Inbox.