import java.util.*;

class HouseDaemon3 {

    private Vector daemonNames = new Vector(); // list of SocketDaemons
    private int xSeed[];
    private int ySeed[];
    private int maxSeed = 70;
    private int xMin = 170;
    private int yMin = 50;
    private int xRange  = 480;
    private int yRange  = 350;

//*********************************************************
    HouseDaemon3() { // constructor method
	System.out.println("HouseDaemon starting");	
		
	// initialize seed data
	xSeed = new int[maxSeed];
	ySeed = new int[maxSeed];
	for ( int i = 0; i < 70; i++ ) {
	    xSeed[i] = (int) ( xMin + (Math.random() * xRange) ); // new x
	    ySeed[i] = (int) ( yMin + (Math.random() * yRange) ); // new Y
	}
    }

//*********************************************************
    public boolean broadcast( int x, int y, int index ) {
	for ( int i = 0; i < daemonNames.size(); i++ ) {
	    SocketDaemon3 stooge = (SocketDaemon3) daemonNames.elementAt( i );
	    boolean response = stooge.tell( x, y, index );
	    if ( !response ) {
		System.out.println( "no response from SocketDaemon " + i );
		boolean removed = daemonNames.remove( stooge );
		if ( removed ) {
		    System.out.println( "SocketDaemon " + i 
					+ " removed from list" );
		} else {
		    System.out.println( "SocketDaemon " + i
					+ " could not be removed from list" );
		}
	    }
	}
	xSeed[index] = x;
	ySeed[index] = y;
	return true;
    }

//*********************************************************
    public boolean watch( SocketDaemon3 freshDaemon ) {
	
	// initialize the client applet
	for ( int i = 0; i < maxSeed; i++ ) {
	    freshDaemon.tell( xSeed[i], ySeed[i], i );
	    // System.out.println( "initializing " + i + ": " 
	    //	      + xSeed[i] + " " + ySeed[i] );
	}
	
	// add new SocketDaemon to list
	daemonNames.addElement( freshDaemon );
	return true;
    }

//*********************************************************
}
