Changeset 999


Ignore:
Timestamp:
02/28/2011 02:43:48 PM (9 years ago)
Author:
dave
Message:

remote update of characters, auto polling

Location:
scenarios/GerminationX
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • scenarios/GerminationX/fungi/src/Fungi.hx

    r987 r999  
    170170    var Emotions:Dynamic; 
    171171    var DesiredPos:Vec2; 
     172    public var LastData:Array<Dynamic>; 
    172173     
    173174        public function new(world:World, name:String, pos) 
     
    178179        UpdateFreq=5; 
    179180        Hide(true); 
     181        LastData=[]; 
    180182        DesiredPos=new Vec2(LogicalPos.x,LogicalPos.y); 
    181183        RawEmotions={Love:0,Hate:0,Hope:0,Fear:0,Satisfaction:0, 
     
    468470                var sp:Spirit = new Spirit(c,names[i],positions[i]); 
    469471                sp.NeedsUpdate=true; 
     472                sp.LastData=data; 
    470473                sp.Build(c,data); 
    471474                sp.BuildDebug(c); 
     
    475478        } 
    476479        } 
     480 
     481    function CompareLists(a:Array<Dynamic>,b:Array<Dynamic>): Bool 
     482    { 
     483        if (a.length!=b.length) return false; 
     484        for (i in 0...a.length) 
     485        { 
     486            if (a[i].name!=b[i].name) return false; 
     487        } 
     488        return true; 
     489    } 
     490 
     491    public function UpdateSpiritSprites() 
     492    { 
     493        for (s in Spirits) 
     494        { 
     495            Server.Request("spirit-sprites/"+s.Name, 
     496            this, 
     497            function (c,data:Array<Dynamic>) 
     498            { 
     499                if (!c.CompareLists(data,s.LastData)) 
     500                { 
     501                    s.Build(cast(c,World),data); 
     502                    s.LastData=data; 
     503                } 
     504            }); 
     505        }         
     506    } 
    477507         
    478508        public function NameCallback(name) 
     
    591621        if (time>TickTime) 
    592622        { 
     623            UpdateSpiritSprites(); 
     624             
    593625            Server.Request("spirit-info",this,UpdateGhosts); 
    594626 
  • scenarios/GerminationX/fungi/src/truffle/SkeletonEntity.hx

    r925 r999  
    3232        // hack for the animation 
    3333        Id=cast(pos.y,Int); 
     34        bones=[]; 
    3435        } 
    3536 
     
    101102    public function Build(world:World,desc:Array<Dynamic>) 
    102103    { 
     104        for (b in bones) 
     105        { 
     106            world.RemoveSprite(b); 
     107        } 
     108 
    103109        bones=BuildBones(desc); 
    104110        var top=FindTop(desc); 
  • scenarios/GerminationX/oak/src/oak/core.clj

    r995 r999  
    6161  (recur)) 
    6262 
    63 (tick) 
     63;(tick) 
    6464 
    6565(defroutes main-routes 
     
    9090   
    9191  (GET "/spirit-sprites/:name" [name] 
    92        (update-islands (str "./" name) (str "./" name)) 
     92       ;(update-islands (str "./" name) (str "./" name)) 
    9393       (read-islands (str "./public/" name))) 
    9494 
  • scenarios/GerminationX/oak/src/oak/plant.clj

    r995 r999  
    2020   clojure.contrib.math)) 
    2121 
    22 (def season-length (* 60 2)) 
     22(def season-length (* 60 10)) 
    2323(def min-health 10) 
    2424(def max-health 90) 
     
    6969(defn make-plant [pos type owner size] 
    7070  (plant. (generate-id) pos type (plant-type->layer type) 
    71           'grow-a '() owner size 0 (+ (/ season-length 80) (Math/floor (rand 10))) start-health)) 
     71          'grow-a '() owner size 0 (+ (/ season-length 10) (Math/floor (rand 10))) start-health)) 
    7272 
    7373(defn make-random-plant [] 
     
    8080; the plant state machine, advance state, based on health 
    8181(defn adv-state [state health season] 
    82   (println "advancing state...") 
    8382  (cond 
    8483   (= state 'grow-a) (cond (> health min-health) 'grow-b :else (rand-nth (list 'grow-a 'grow-b))) 
     
    114113        
    115114(defn plant-update [plant time delta neighbours rules season] 
    116   (println (str season " " (:state plant) " " (:health plant))) 
     115;  (println (str season " " (:state plant) " " (:health plant))) 
    117116  (modify 
    118117   :health 
  • scenarios/GerminationX/oak/src/oak/tile.clj

    r995 r999  
    2020 
    2121(defrecord tile 
    22   [pos 
     22  [season 
     23   pos 
    2324   entities]) 
    2425 
     
    2728 
    2829(defn make-tile [pos entity-list] 
    29   (tile. pos entity-list)) 
     30  (tile. 'summer pos entity-list)) 
    3031 
    3132(defn tile-position-taken? [tile pos] 
     
    6566                (< st 0.25) 'spring 
    6667                (< st 0.50) 'summer 
    67                 (< st 0.74) 'autumn 
     68                (< st 0.75) 'autumn 
    6869                :else 'winter)] 
    6970    (modify :entities 
     
    8182                                (not (= (:state e) 'decayed))) 
    8283                              entities))))) 
    83             tile))) 
     84            (modify :season (fn [s] season) tile)))) 
Note: See TracChangeset for help on using the changeset viewer.