<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <link rel="stylesheet" href="../../../../coverage.css"/> <title> cc/journeyman/the_great_game/holdings/holding.clj </title> </head> <body> <span class="covered" title="1 out of 1 forms covered"> 001 (ns cc.journeyman.the-great-game.holdings.holding </span><br/> <span class="not-tracked" title="0 out of 0 forms covered"> 002 (:require [cc.journeyman.the-great-game.agent.agent :refer [ProtoAgent]] </span><br/> <span class="not-tracked" title="0 out of 0 forms covered"> 003 [cc.journeyman.the-great-game.objects.container :refer [ProtoContainer]] </span><br/> <span class="not-tracked" title="0 out of 0 forms covered"> 004 [cc.journeyman.the-great-game.objects.game-object :refer [ProtoObject]] </span><br/> <span class="not-tracked" title="0 out of 0 forms covered"> 005 ;; [cc.journeyman.the-great-game.location.location :refer [OrientedLocation]] </span><br/> <span class="not-tracked" title="0 out of 0 forms covered"> 006 [cc.journeyman.the-great-game.world.routes :refer []])) </span><br/> <span class="blank" title="0 out of 0 forms covered"> 007 </span><br/> <span class="not-tracked" title="0 out of 0 forms covered"> 008 ;;; A holding is a polygonal area of the map which does not </span><br/> <span class="not-tracked" title="0 out of 0 forms covered"> 009 ;;; intersect with any other holding, or with any road or water feature. For </span><br/> <span class="not-tracked" title="0 out of 0 forms covered"> 010 ;;; the time being we'll make the </span><br/> <span class="not-tracked" title="0 out of 0 forms covered"> 011 ;;; simplifying assumption that every holding is a rectangular strip, and that </span><br/> <span class="not-tracked" title="0 out of 0 forms covered"> 012 ;;; 'urban' holdings are of a reasonably standard width (see Viking-period </span><br/> <span class="not-tracked" title="0 out of 0 forms covered"> 013 ;;; York) and length. Rural holdings (farms, ?wood lots) may be much larger. </span><br/> <span class="blank" title="0 out of 0 forms covered"> 014 </span><br/> <span class="covered" title="1 out of 1 forms covered"> 015 (defprotocol ProtoHolding </span><br/> <span class="not-tracked" title="0 out of 0 forms covered"> 016 (frontage </span><br/> <span class="not-tracked" title="0 out of 0 forms covered"> 017 [holding] </span><br/> <span class="not-tracked" title="0 out of 0 forms covered"> 018 "Returns a sequence of two locations representing the edge of the polygon </span><br/> <span class="not-tracked" title="0 out of 0 forms covered"> 019 which defines this holding which is considered to be the front.") </span><br/> <span class="not-tracked" title="0 out of 0 forms covered"> 020 (building-origin </span><br/> <span class="not-tracked" title="0 out of 0 forms covered"> 021 [holding] </span><br/> <span class="not-tracked" title="0 out of 0 forms covered"> 022 "Returns an oriented location - normally the right hand end of the </span><br/> <span class="not-tracked" title="0 out of 0 forms covered"> 023 frontage, for an urban holding - from which buildings on the holding </span><br/> <span class="not-tracked" title="0 out of 0 forms covered"> 024 should be built.")) </span><br/> <span class="blank" title="0 out of 0 forms covered"> 025 </span><br/> <span class="covered" title="1 out of 1 forms covered"> 026 (defrecord Holding [perimeter holder] </span><br/> <span class="not-tracked" title="0 out of 0 forms covered"> 027 ;; Perimeter should be a list of locations in exactly the same sense as a </span><br/> <span class="not-tracked" title="0 out of 0 forms covered"> 028 ;; route in `cc.journeyman.the-great-game.world.routes`. Some sanity checking </span><br/> <span class="not-tracked" title="0 out of 0 forms covered"> 029 ;; is needed to ensure this! </span><br/> <span class="not-tracked" title="0 out of 0 forms covered"> 030 ProtoContainer </span><br/> <span class="not-tracked" title="0 out of 0 forms covered"> 031 ProtoHolding </span><br/> <span class="not-covered" title="0 out of 1 forms covered"> 032 (frontage </span><br/> <span class="not-tracked" title="0 out of 0 forms covered"> 033 [holding] </span><br/> <span class="not-tracked" title="0 out of 0 forms covered"> 034 "TODO: this is WRONG, but will work for now. The frontage should </span><br/> <span class="not-tracked" title="0 out of 0 forms covered"> 035 be the side of the perimeter nearest to the nearest existing </span><br/> <span class="not-tracked" title="0 out of 0 forms covered"> 036 route." </span><br/> <span class="not-covered" title="0 out of 11 forms covered"> 037 [(first (perimeter holding)) (nth (perimeter holding) 1)]) </span><br/> <span class="not-covered" title="0 out of 1 forms covered"> 038 (building-origin </span><br/> <span class="not-tracked" title="0 out of 0 forms covered"> 039 [holding] </span><br/> <span class="not-tracked" title="0 out of 0 forms covered"> 040 "TODO: again this is WRONG. The default building origin for rectangular </span><br/> <span class="not-tracked" title="0 out of 0 forms covered"> 041 buildings should be the right hand end of the frontage when viewed </span><br/> <span class="not-tracked" title="0 out of 0 forms covered"> 042 from outside the holding. But that's not general; celtic-style circular </span><br/> <span class="not-tracked" title="0 out of 0 forms covered"> 043 buildings should normally be in the centre of their holdings. So probably </span><br/> <span class="not-tracked" title="0 out of 0 forms covered"> 044 building-origin becomes a method of building-family rather than of holding." </span><br/> <span class="not-covered" title="0 out of 5 forms covered"> 045 (first (frontage holding))) </span><br/> <span class="not-tracked" title="0 out of 0 forms covered"> 046 ProtoObject) </span><br/> </body> </html>