--module(cell).
+-module(life_cell).
-behaviour(gen_server).
,live_neighbors :: integer()
,num_neighbors :: integer()
,replies_pending :: integer()
+ ,generation :: integer()
}).
{reply, ok, State}.
-handle_cast(tick,
+handle_cast({tick, Generation},
#state{name=Name
,neighbors=Neighbors
,num_neighbors=NumNeighbors
}=State) ->
ok = cast_all(Neighbors, {request_state, Name}),
- {noreply, State#state{replies_pending=NumNeighbors}};
+ {noreply, State#state{replies_pending=NumNeighbors, generation=Generation}};
handle_cast({request_state, Requester}, State) ->
case NewPending of
0 ->
NewCellState = new_state(CellState, NewLiveNeighbors),
- ok = time:tock(ID, NewCellState),
+ ok = life_time:tock(ID, NewCellState),
{noreply, NewState#state{live_neighbors=0
,cell_state=NewCellState