versikt
========

Ett ombud r ett kodstycke som ansvarar fr ett visst omrde. Ett
ombud fr ett uppdrag av sin anvndare, samt en uppsttning objekt som
ombudet kan styra over (till exempel tillverkningen i en stad, en stad
i helhet, en enhet, en uppsttning enheter eller alla rikets enheter).
Anvndare kan vara en mnskig spelare eller en annan del av
programkoden, till exempel ett annat ombud. Det sker inget ytterligare
samspel mellan anvndare och ombud efter att ombudet ftt sin
uppdragsbeskrivning.

Exempel p ombud:
 - ett ombud som ansvarar fr att frflytta en enhet frn A till B
 - ett ombud som ansvarar fr att ge strsta mjliga mattillverkning i
   en stad
 - ett ombud som ansvarar fr tillverkningen i en stad
 - ett ombud som ansvarar fr frsvaret av en stad
 - ett ombud som ansvarar fr en stad
 - ett ombud som ansvarar fr alla stder

Ett ombud kan anvnda andra ombud fr att uppn sina ml. Sdana
beroenden bildar en rangordning av ombud. Ombud har en rang i denna
rangordning. Ombud med hgre rang r mer invecklade. Ett ombud av rang
n kan endast anvnda ombud av rang (n - 1) eller lgre. Rang 0
innebr handlingar som utfrs av servern och r odelbara (inte kan
simuleras av klienten).

Genom en sdan definition behver ett ombut inte vara implementerad i C
och behver inte heller anvnda client/agents/agents.[ch].

Krnan i ett ombud utgrs av 2 delar: en del som fattar beslut och en
del som verkstller beslut. Den frsta delens beslut ska gras
tillgngliga. Ett ombud som saknar den verkstllande delen kallas
rdgivare.

Ett ombud ska frutom krnan tillhandahlla ett grafiskt grnssnitt.

Implementering
==============

Den mottagna uppdragsbeskrivningen och alla beslut som har fattats kan
sparas i attribut. Ett ombud ska inte gra ngra antaganden. Detta
innebr: INGA MAGISKA TAL. Allt ska vara instllbart av anvndaren.

Anvnd clients/agents/agents.[ch] fr att informeras om vissa
hndelser. Tveka inte att lgga till fler terrop. Anvnd
client/agents/agents:wait_for_requests i stllet fr
client/civclient:wait_till_request_got_processed.
