How to use SmartRefStream

Lic. Edgar J. De Cleene edgardec2001 at yahoo.com.ar
Tue Aug 17 10:15:51 UTC 2004


Germán:
Del código del TEG (completo está en SqueakRos)

grabaEstado
    | t1 |
    t1 _ ReferenceStream fileNamed: 'estado.teg'.
    t1 nextPut: losJugadores.
    t1 nextPut: cartasOrden.
    t1 nextPut: jugadoresVivos.
    t1 nextPut: playerTurn.
    t1 nextPut: ronda.
    t1 nextPut: numCarta.
    t1 nextPut: cambiosTotales.
    1
        to: 42
        do: [:t2 | 
            t1 nextPut: (submorphs at: t2) ejercitos.
            t1 nextPut: (submorphs at: t2) deQuienSoy].
    t1 close

leerEstado
    | t1 |
    t1 _ ReferenceStream fileNamed: 'estado.teg'.
    losJugadores _ t1 next.
    cartasOrden _ t1 next.
    jugadoresVivos _ t1 next.
    playerTurn _ t1 next.
    ronda _ t1 next.
    numCarta _ t1 next.
    cambiosTotales _ t1 next.
    1
        to: 42
        do: [:t2 | 
            (submorphs at: t2)
                ejercitos: t1 next.
            (submorphs at: t2)
                deQuienSoy: t1 next].
    t1 close.

Mismo código para mandar los objetos por red.

askMyData
    | estadoTEG losPaises losPaisesData elPais soyDe nuevoColor |
    estadoTEG _ activeSocket getObject.
    self
        losJugadores: (estadoTEG at: 1).
    self
        cartasOrden: (estadoTEG at: 2).
    self
        ronda: (estadoTEG at: 3).
    self
        numCarta: (estadoTEG at: 4).
    self
        cambiosTotales: (estadoTEG at: 5).
    losPaises _ estadoTEG at: 6.
    1
        to: 42
        do: [:pais |
            losPaisesData _ losPaises at: pais.
            elPais _ self submorphs at: pais.
            elPais
                ejercitos: (losPaisesData at: 1).
            elPais
                deQuienSoy: (losPaisesData at: 2).
            soyDe _ elPais deQuienSoy.
            nuevoColor _ (self losJugadores at: soyDe) miColor.
            elPais redrawInColor: nuevoColor].
self playerTurn: ( estadoTEG at: 7).

sendMyData
    | estadoTEG losPaises elPais losPaisesData |
    serverOrClient = #server
        ifTrue: [
            activeSocket _ socketList at: playerTurn].
    (activeSocket isValid
            and: [activeSocket isConnected])
        ifTrue: [estadoTEG _ OrderedCollection new.
            estadoTEG add: self losJugadores.
            estadoTEG add: self cartasOrden.
            estadoTEG add: self ronda.
            estadoTEG add: self numCarta.
            estadoTEG add: self cambiosTotales.
            losPaises _ Array new: 42.
            1
                to: 42
                do: [:pais |
                    elPais _ self submorphs at: pais.
                    losPaisesData _ Array new: 2.
                    losPaisesData at: 1 put: elPais ejercitos.
                    losPaisesData at: 2 put: elPais deQuienSoy.
                    losPaises at: pais put: losPaisesData].
            estadoTEG add: losPaises.
            estadoTEG add: self playerTurn.
            activeSocket sendObject: estadoTEG].
    [activeSocket dataAvailable] whileFalse.
    self askMyData





More information about the Squeak-dev mailing list