Identificar el tipo de un proceso.

Started by HaCkZJuaNN, October 29, 2011, 01:01:07 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

HaCkZJuaNN

En un programa tengo una cuadrícula, y en cada cuadro de la cuadrícula puedo tener un y sólo un objeto (procesos). Puedo guardar un array bidimensional con referencias a los procesos en cada elemento. El problema es que los objetos que puedo tener en la cuadrícula no son de un solo tipo de proceso; y me gustaría, cuando leo la cuadrícula y encuentro un proceso, saber de qué tipo es.

Sí, puedo hacerme otro array donde guarde un enum de qué tipo de objeto hay en cada cuadro, pero eso me parece un poco feo; sobre todo si es posible, dado el id de un proceso; averiguar de qué tipo es.

Gracias ;)

KeoH

puedes crearte una variable local con el tipo de cada proceso, y una vez q tienes el ID del proceso, leer la variable local para saber q tipo es.

SplinterGU

nativamente no hay forma salvo la mencionada por KeoH... aunque puede que pronto meta alguna funcion o variable local interna...
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

HaCkZJuaNN

Ok, dado que el tipo de procesos que puedo meter en esa cuadrícula es limitado, supongo que de momento me haré una "cuadrícula de tipos" donde indique de qué tipo es el proceso en cada hueco.

Gracias.

Drumpi

Pero si creo recordar que existe una variable local RESERVADA que lo dice. Ojo, que al ser reservada es crítico no andar jugando con ella (sólo lectura, WARNING). Lo que ya no se es si se puede comparar con "type mi_proceso".

Habilitad el modo debug, escribid locals y revisad la estructura RESERVED.

Pero la solución de KeoH es la más elegante: defines tus propios valores, y si lo haces bien, puedes usar comparadores > y < o operaciones binarias para obtener un grupo de procesos (múltiplos de 4, los que tengan el tercer bit a 1, los que tengan módulo 3...).
Hala, como con 1001 procesos sólo va a 9 FPS, vamos a meterle 32 veces más, a ver si revienta.
(Drumpi epic moment)

SplinterGU

es correcto, la local reserved.process_type coincide con el (type proceso)... me habia olvidado de eso...

pero hay que tener mucho cuidado con esta variable, no cambiar su valor por ninguna circunstancia.

es mas las agregue al mod_proc y mod_grproc, pero nunca le di uso... se ve que algo tenia pensado hacer con ellas... y bueno... ya no recuerdo que era.
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

HaCkZJuaNN

O sea, que puedo decir...

id = array_de_ids[4][5]

switch(id.process_type)
{
case type manzana: comer(); break;
case type manzana_podrida: no_comer(); break;
}

(no recuerdo la sintaxis del switch en bennu xD, pero entendéis lo que quiero decir... )

SplinterGU

id.reserved.process_type

y es

case ..:
end
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

HaCkZJuaNN