private static Vegetal getVegetalNoSerializable(Vida vida, VegetalSerializable veg) { int idSer = veg.idSer; EspecieVegetal especieVeg = getEspecieVegNoSerializable(vida, veg.especie); int posX = veg.posX; int posY = veg.posY; List <GameObject> modelo = new List <GameObject>(); for (int i = 0; i < 4; i++) { modelo.Add(getModeloNoSerializableReal(veg.modelo, vida.posicionAleatoriaVegetal(veg.posX, veg.posY))); } int indiceHabitat = veg.indiceHabitat; int turnosEvolucion = veg.turnosEvolucion; int numVeg = veg.numVegetales; List <float> habitabilidad = new List <float>(); for (int i = 0; i < veg.habitabilidad.Count; i++) { habitabilidad.Add(veg.habitabilidad[i]); } return(new Vegetal(idSer, especieVeg, posX, posY, habitabilidad, indiceHabitat, modelo, numVeg, turnosEvolucion)); }
void Awake() { modelosEdificios = GameObject.FindGameObjectWithTag("ModelosEdificios").GetComponent<ModelosEdificios>(); modelosVegetales = GameObject.FindGameObjectWithTag("ModelosVegetales").GetComponent<ModelosVegetales>(); modelosAnimales = GameObject.FindGameObjectWithTag("ModelosAnimales").GetComponent<ModelosAnimales>(); principal = GameObject.FindGameObjectWithTag("MainCamera").GetComponent<Principal>(); descripciones = new List<string>(); costesSeres = new List<List<int>>(); List<T_habitats> habsEdificios = new List<T_habitats>(); habsEdificios.Add(T_habitats.llanura); habsEdificios.Add(T_habitats.colina); List<T_habitats> habsEdificiosAdv = new List<T_habitats>(); habsEdificiosAdv.Add(T_habitats.costa); habsEdificiosAdv.Add(T_habitats.llanura); habsEdificiosAdv.Add(T_habitats.colina); habsEdificiosAdv.Add(T_habitats.tundra); habsEdificiosAdv.Add(T_habitats.desierto); /*fabricaComBas = new TipoEdificio("Fábrica de componentes básicos",habsEdificios,100,25,0,0,T_elementos.comunes,modelosEdificios.fabCompBas); energia = new TipoEdificio("Central de energía",habsEdificios,150,15,0,0,T_elementos.comunes,modelosEdificios.centralEnergia); granja = new TipoEdificio("Granja",habsEdificios,700,200,50,0,T_elementos.nada,modelosEdificios.granja); fabricaComAdv = new TipoEdificio("Fábrica de componentes avanzados",habsEdificiosAdv,850,300,0,0,T_elementos.raros,modelosEdificios.fabCompAdv); energiaAdv = new TipoEdificio("Central de energía avanzada",habsEdificiosAdv,1000,500,250,0,T_elementos.raros,modelosEdificios.centralEnergiaAdv); */ fabricaComBas = new TipoEdificio("Fábrica de comp. básicos",habsEdificios,180,20,0,0,T_elementos.comunes,10,0,0,0,0,20,0,0,modelosEdificios.fabCompBas); energia = new TipoEdificio("Central de energía",habsEdificios,150,30,0,0,T_elementos.comunes,0,0,0,0,40,0,0,0,modelosEdificios.centralEnergia); granja = new TipoEdificio("Granja",habsEdificios,800,280,0,0,T_elementos.nada,75,0,0,0,0,0,0,0,modelosEdificios.granja); fabricaComAdv = new TipoEdificio("Fábrica de comp. avanzados",habsEdificiosAdv,1000,350,0,10,T_elementos.raros,100,0,0,0,0,0,40,0,modelosEdificios.fabCompAdv); energiaAdv = new TipoEdificio("Central de energía avanzada",habsEdificiosAdv,2500,250,50,20,T_elementos.raros,0,0,0,0,1000,0,0,0,modelosEdificios.centralEnergiaAdv); /* Vegetales */ /*vegetal = new EspecieVegetal(nombre, numMaxSeresEspecie, numMaxVegetales, numIniVegetales, capacidadMigracionLocal, capacidadMigracionGlobal, radioMigracion, turnosEvolucionInicial, evolucion, habitabilidadInicial, idTextura, modelos nombre => nombre de la especie numMaxSeresEspecie => número máximo de seres de esa especie numMaxVegetales => número máximo de vegetales en una misma casilla. Valores desde 1000 para la primera especie y aumentando en sucesivas especies. numIniVegetales => número inicial de vegetales al crearse. Valores desde 100 para la primera especie y aumentando en sucesivas especies. capacidadMigracionLocal => probabilidad en tanto por 1 de que una especie migre a una casilla colindante. La migración también depende de la habitabilidad y del numVegetales. Así que si por ejemplo tenemos 0.5f en migracionLocal y 0.5 en la habitabilidad de ese hábitat hay un 25% de que migre localmente en el caso de que la planta este al 100% (numVegetales = numMaxVegetales). Si por ejemplo estuviera a 100/1000 (caso inicial) pues tendría un 2.5% de probabilidad de migrar. Cuando la planta este al 100% (en 10 turnos) pues migrara con un 25% de probabilidad capacidadMigracionGlobal => igual que la local sólo que prueba a migrar a una casilla que puede estar entre 1 y radioMigración de distancia en cualquier direccion radioMigracion => distancia a la que puede migrar globalmente un vegetal turnosEvolucionInicial => turnos que tienen que pasar para que un vegetal mejore la habitabilidad del hábitat en el que está evolucion => mejora que se produce cuando turnosEvolucion llega a 0 habitabilidadInicial => lista de floats desde -1.0f (inhabitable) a 0.0 (decreciente) y hasta 1.0f (creciente). La lista tiene que ser del mismo tamaño que el total de los habitats idTextura => id de la textura que se pinta debajo del modelo modelos => lista de los diferentes modelos que tiene la especie */ //VEGETALES ------------------------------------------------------------ //Seta: habitats -> llanura y colina //Tier 1. Barata y normal en llanura y colina. Poca produccion de comida pero alta reproductibilidad y rango de migracion List<float> habSeta = new List<float>(); habSeta.Add(-0.1f);//montana habSeta.Add( 0.4f);//llanura habSeta.Add( 0.5f);//colina habSeta.Add(-1.0f);//desierto habSeta.Add(-1.0f);//volcanico habSeta.Add(-1.0f);//mar habSeta.Add(-0.6f);//costa habSeta.Add(-1.0f);//tundra habSeta.Add(-1.0f);//inhabitable seta = new EspecieVegetal("Seta",250,1000,100,0.05f,0.02f,7,20,0.01f,habSeta,1,10,modelosVegetales.setas); costeSeta = new List<int>(); costeSeta.Add(200);//Coste energia costeSeta.Add(110);//Coste comp bas costeSeta.Add(0);//Coste comp adv costeSeta.Add(0);//Coste mat bio //Flor: habitats -> llanura //Tier 1. Barata y decente en llanuras. Mediocre produccion de alimento, reproductibilidad buena pero rango de migracion normal. List<float> habFlor = new List<float>(); habFlor.Add(-0.4f);//montana habFlor.Add( 0.5f);//llanura habFlor.Add(-0.3f);//colina habFlor.Add(-1.0f);//desierto habFlor.Add(-1.0f);//volcanico habFlor.Add(-1.0f);//mar habFlor.Add(-1.0f);//costa habFlor.Add(-1.0f);//tundra habFlor.Add(-1.0f);//inhabitable flor = new EspecieVegetal("Flor",250,1200,120,0.05f,0.02f,4,10,0.01f,habFlor,2,10,modelosVegetales.flores);//0.3f,0.2f,4,10,0.01f,habFlor,2,modelosVegetales.flores); costeFlor = new List<int>(); costeFlor.Add(230);//Coste energia costeFlor.Add(100);//Coste comp bas costeFlor.Add(0);//Coste comp adv costeFlor.Add(0);//Coste mat bio //Palo (Caña): habitats -> llanura, costa y desierto //Tier 2. Normal en llanura, desierto y costa, produccion de alimento normal, reproductibilidad normal y rango alto. Alto ratio de evolucion. List<float> habCana = new List<float>(); habCana.Add(-1.0f);//montana habCana.Add( 0.5f);//llanura habCana.Add(-0.5f);//colina habCana.Add( 0.3f);//desierto habCana.Add(-1.0f);//volcanico habCana.Add(-1.0f);//mar habCana.Add( 0.5f);//costa habCana.Add(-1.0f);//tundra habCana.Add(-1.0f);//inhabitable palo = new EspecieVegetal("Caña",250,1500,250,0.05f,0.01f,6,8,0.04f,habCana,3,10,modelosVegetales.canas); costeCana = new List<int>(); costeCana.Add(450);//Coste energia costeCana.Add(150);//Coste comp bas costeCana.Add(0);//Coste comp adv costeCana.Add(0);//Coste mat bio //Arbusto: habitats -> llanura, colina, montaña y desierto //Tier 2. Decente en llanura y colina. Produccion normal y reproductibilidad normal. Rango bajo y evolucion lenta pero alta. List<float> habArbusto = new List<float>(); habArbusto.Add(-0.3f);//montana habArbusto.Add( 0.5f);//llanura habArbusto.Add( 0.6f);//colina habArbusto.Add(-0.2f);//desierto habArbusto.Add(-1.0f);//volcanico habArbusto.Add(-1.0f);//mar habArbusto.Add(-1.0f);//costa habArbusto.Add(-1.0f);//tundra habArbusto.Add(-1.0f);//inhabitable arbusto = new EspecieVegetal("Arbusto",250,1800,220,0.04f,0.01f,3,20,0.1f,habArbusto,2,5,modelosVegetales.arbustos); costeArbusto = new List<int>(); costeArbusto.Add(420);//Coste energia costeArbusto.Add(170);//Coste comp bas costeArbusto.Add(0);//Coste comp adv costeArbusto.Add(0);//Coste mat bio //Estrom (Estromatolito): habitats -> costa, desierto y volcanico //Tier 3. Muy buena en costas. Alta produccion de alimento y reproductibilidad un poco baja. Poca migracion y poco radio. Evolucion decente. List<float> habEstrom = new List<float>(); habEstrom.Add(-1.0f);//montana habEstrom.Add( 0.5f);//llanura habEstrom.Add(-1.0f);//colina habEstrom.Add(-0.8f);//desierto habEstrom.Add(-0.1f);//volcanico habEstrom.Add(-1.0f);//mar habEstrom.Add( 0.8f);//costa habEstrom.Add(-0.4f);//tundra habEstrom.Add(-1.0f);//inhabitable estrom = new EspecieVegetal("Estromatolito",250,2400,350,0.03f,0.01f,3,25,0.03f,habEstrom,4,5,modelosVegetales.estromatolitos); costeEstromatolito = new List<int>(); costeEstromatolito.Add(620);//Coste energia costeEstromatolito.Add(190);//Coste comp bas costeEstromatolito.Add(0);//Coste comp adv costeEstromatolito.Add(5);//Coste mat bio //Cactus: habitats -> desierto //Tier 3. Muy buena en desierto y buena en volcanico. Produccion de alimento decente, reproductibilidad normal, alto ratio de migracion y alta evolucion. List<float> habCactus = new List<float>(); habCactus.Add(-0.8f);//montana habCactus.Add( 0.7f);//llanura habCactus.Add(-1.0f);//colina habCactus.Add( 0.6f);//desierto habCactus.Add( 0.2f);//volcanico habCactus.Add(-1.0f);//mar habCactus.Add(-1.0f);//costa habCactus.Add(-1.0f);//tundra habCactus.Add(-1.0f);//inhabitable cactus = new EspecieVegetal("Cactus",250,2200,320,0.03f,0.03f,8,12,0.07f,habCactus,0,3,modelosVegetales.cactus); costeCactus = new List<int>(); costeCactus.Add(600);//Coste energia costeCactus.Add(180);//Coste comp bas costeCactus.Add(0);//Coste comp adv costeCactus.Add(5);//Coste mat bio //Palmera: habitats -> costa //Tier 4. Buenisima en costas y mala en llanuras. Alta produccion, reproductibilidad buena, alta migracion y alta evolucion. List<float> habPalm = new List<float>(); habPalm.Add(-1.0f);//montana habPalm.Add( 0.5f);//llanura habPalm.Add(-1.0f);//colina habPalm.Add(-0.2f);//desierto habPalm.Add(-1.0f);//volcanico habPalm.Add(-1.0f);//mar habPalm.Add( 0.9f);//costa habPalm.Add(-1.0f);//tundra habPalm.Add(-1.0f);//inhabitable palmera = new EspecieVegetal("Palmera",250,3000,450,0.04f,0.03f,5,15,0.1f,habPalm,3,5,modelosVegetales.palmeras); costePalmera = new List<int>(); costePalmera.Add(1500);//Coste energia costePalmera.Add(280);//Coste comp bas costePalmera.Add(10);//Coste comp adv costePalmera.Add(10);//Coste mat bio //Pino: habitats -> tundra, colina y montaña //Tier 4. Muy buena en colinas, buena en llanura y mediocreo en montañas. Produccion buena, reproductibilidad buena, migracion mediocre y evolucion alta. List<float> habPino = new List<float>(); habPino.Add( 0.5f);//montana habPino.Add( 0.6f);//llanura habPino.Add( 0.7f);//colina habPino.Add(-1.0f);//desierto habPino.Add(-1.0f);//volcanico habPino.Add(-1.0f);//mar habPino.Add(-0.1f);//costa habPino.Add(-1.0f);//tundra habPino.Add(-1.0f);//inhabitable pino = new EspecieVegetal("Pino",250,3500,420,0.05f,0.02f,5,20,0.15f,habPino,4,5,modelosVegetales.pinos); costePino = new List<int>(); costePino.Add(1800);//Coste energia costePino.Add(300);//Coste comp bas costePino.Add(10);//Coste comp adv costePino.Add(10);//Coste mat bio //Ciprés: habitats -> tundra, colina y montaña //Tier 5. Bueno en muchos habitats. Procuddion muy alta, reproduccion buena, migracion normal y evolucion altisima. List<float> habCipres = new List<float>(); habCipres.Add( 0.8f);//montana habCipres.Add( 1.0f);//llanura habCipres.Add( 0.6f);//colina habCipres.Add(-0.8f);//desierto habCipres.Add(-0.5f);//volcanico habCipres.Add(-1.0f);//mar habCipres.Add(-0.1f);//costa habCipres.Add( 0.8f);//tundra habCipres.Add(-1.0f);//inhabitable cipres = new EspecieVegetal("Ciprés",250,4000,550,0.06f,0.02f,6,10,0.2f,habCipres,4,5,modelosVegetales.cipreses); costeCipres = new List<int>(); costeCipres.Add(2500);//Coste energia costeCipres.Add(420);//Coste comp bas costeCipres.Add(50);//Coste comp adv costeCipres.Add(20);//Coste mat bio //Pino Alto: habitats -> tundra y montaña //Tier 5. Muy bueno en montaña y colina, y decente en mas. Produccion altisima, reproduccion buena, migracion alta y evolucion muy alta. List<float> habPinoAlto = new List<float>(); habPinoAlto.Add( 0.9f);//montana habPinoAlto.Add( 0.9f);//llanura habPinoAlto.Add( 0.9f);//colina habPinoAlto.Add(-1.0f);//desierto habPinoAlto.Add(-1.0f);//volcanico habPinoAlto.Add(-1.0f);//mar habPinoAlto.Add(-0.5f);//costa habPinoAlto.Add( 0.3f);//tundra habPinoAlto.Add(-1.0f);//inhabitable pinoAlto = new EspecieVegetal("Pino Alto",250,5000,650,0.05f,0.02f,6,12,0.2f,habPinoAlto,1,5,modelosVegetales.pinosAltos); costePinoAlto = new List<int>(); costePinoAlto.Add(3000);//Coste energia costePinoAlto.Add(500);//Coste comp bas costePinoAlto.Add(50);//Coste comp adv costePinoAlto.Add(25);//Coste mat bio //ANIMALES ---------------------------------------------------- List<T_habitats> listaHabs; /* Herbivoros */ listaHabs = new List<T_habitats>();; listaHabs.Add(T_habitats.llanura); listaHabs.Add(T_habitats.colina); listaHabs.Add(T_habitats.costa); //Caracol: habitats -> herbivoro1 = new EspecieAnimal("Caracol",15,40,1200,320,3,4,tipoAlimentacionAnimal.herbivoro,listaHabs,modelosAnimales.herbivoro1); costeHerb1 = new List<int>(); costeHerb1.Add(1000);//Coste energia costeHerb1.Add(250);//Coste comp bas costeHerb1.Add(0);//Coste comp adv costeHerb1.Add(10);//Coste mat bio listaHabs = new List<T_habitats>(); listaHabs.Add(T_habitats.llanura); listaHabs.Add(T_habitats.colina); listaHabs.Add(T_habitats.tundra); listaHabs.Add(T_habitats.montana); //Conejo: habitats -> herbivoro2 = new EspecieAnimal("Conejo",20,100,1700,500,7,3,tipoAlimentacionAnimal.herbivoro,listaHabs,modelosAnimales.herbivoro2); costeHerb2 = new List<int>(); costeHerb2.Add(1500);//Coste energia costeHerb2.Add(350);//Coste comp bas costeHerb2.Add(0);//Coste comp adv costeHerb2.Add(15);//Coste mat bio listaHabs = new List<T_habitats>(); listaHabs.Add(T_habitats.llanura); listaHabs.Add(T_habitats.colina); listaHabs.Add(T_habitats.costa); //Vacas: habitats -> herbivoro3 = new EspecieAnimal("Vaca",10,200,2400,800,4,4,tipoAlimentacionAnimal.herbivoro,listaHabs,modelosAnimales.herbivoro3); costeHerb3 = new List<int>(); costeHerb3.Add(2200);//Coste energia costeHerb3.Add(450);//Coste comp bas costeHerb3.Add(30);//Coste comp adv costeHerb3.Add(25);//Coste mat bio listaHabs = new List<T_habitats>(); listaHabs.Add(T_habitats.colina); listaHabs.Add(T_habitats.desierto); listaHabs.Add(T_habitats.llanura); //Jirafas: habitats -> herbivoro4 = new EspecieAnimal("Jirafa",12,240,3360,960,6,4,tipoAlimentacionAnimal.herbivoro,listaHabs,modelosAnimales.herbivoro4); costeHerb4 = new List<int>(); costeHerb4.Add(3200);//Coste energia costeHerb4.Add(570);//Coste comp bas costeHerb4.Add(100);//Coste comp adv costeHerb4.Add(35);//Coste mat bio listaHabs = new List<T_habitats>(); listaHabs.Add(T_habitats.llanura); listaHabs.Add(T_habitats.volcanico); listaHabs.Add(T_habitats.colina); listaHabs.Add(T_habitats.montana); //Tortuga: habitats-> herbivoro5 = new EspecieAnimal("Tortuga",6,400,7500,2500,4,5,tipoAlimentacionAnimal.herbivoro,listaHabs,modelosAnimales.herbivoro5); costeHerb5 = new List<int>(); costeHerb5.Add(4000);//Coste energia costeHerb5.Add(750);//Coste comp bas costeHerb5.Add(200);//Coste comp adv costeHerb5.Add(50);//Coste mat bio /* Carnivoros */ //Rata: habitats -> listaHabs = new List<T_habitats>(); listaHabs.Add(T_habitats.tundra); listaHabs.Add(T_habitats.llanura); listaHabs.Add(T_habitats.colina); carnivoro1 = new EspecieAnimal("Zorro",4,80,2400,2400,7,8,tipoAlimentacionAnimal.carnivoro,listaHabs,modelosAnimales.carnivoro1); costeCarn1 = new List<int>(); costeCarn1.Add(2000);//Coste energia costeCarn1.Add(350);//Coste comp bas costeCarn1.Add(20);//Coste comp adv costeCarn1.Add(15);//Coste mat bio //Lobo: habitats -> listaHabs = new List<T_habitats>(); listaHabs.Add(T_habitats.llanura); listaHabs.Add(T_habitats.colina); listaHabs.Add(T_habitats.montana); listaHabs.Add(T_habitats.tundra); carnivoro2 = new EspecieAnimal("Lobo",3,120,3400,3400,10,10,tipoAlimentacionAnimal.carnivoro,listaHabs,modelosAnimales.carnivoro2); costeCarn2 = new List<int>(); costeCarn2.Add(3300);//Coste energia costeCarn2.Add(450);//Coste comp bas costeCarn2.Add(80);//Coste comp adv costeCarn2.Add(25);//Coste mat bio //Tigre: habitats -> listaHabs = new List<T_habitats>(); listaHabs.Add(T_habitats.llanura); listaHabs.Add(T_habitats.colina); listaHabs.Add(T_habitats.costa); listaHabs.Add(T_habitats.montana); carnivoro3 = new EspecieAnimal("Tigre",3,192,4800,4800,12,12,tipoAlimentacionAnimal.carnivoro,listaHabs,modelosAnimales.carnivoro3); costeCarn3 = new List<int>(); costeCarn3.Add(4500);//Coste energia costeCarn3.Add(750);//Coste comp bas costeCarn3.Add(250);//Coste comp adv costeCarn3.Add(40);//Coste mat bio //Oso: habitats -> listaHabs = new List<T_habitats>(); listaHabs.Add(T_habitats.llanura); listaHabs.Add(T_habitats.colina); listaHabs.Add(T_habitats.montana); listaHabs.Add(T_habitats.tundra); carnivoro4 = new EspecieAnimal("Oso",2,224,6720,6720,11,14,tipoAlimentacionAnimal.carnivoro,listaHabs,modelosAnimales.carnivoro4); costeCarn4 = new List<int>(); costeCarn4.Add(5600);//Coste energia costeCarn4.Add(830);//Coste comp bas costeCarn4.Add(320);//Coste comp adv costeCarn4.Add(60);//Coste mat bio //Tiranosaurio: habitats -> listaHabs.Add(T_habitats.llanura); listaHabs.Add(T_habitats.colina); listaHabs.Add(T_habitats.desierto); listaHabs.Add(T_habitats.volcanico); carnivoro5 = new EspecieAnimal("Tiranosaurio",1,375,15000,7500,15,15,tipoAlimentacionAnimal.carnivoro,listaHabs,modelosAnimales.carnivoro5); costeCarn5 = new List<int>(); costeCarn5.Add(7500);//Coste energia costeCarn5.Add(1200);//Coste comp bas costeCarn5.Add(430);//Coste comp adv costeCarn5.Add(90);//Coste mat bio }
private static int getModeloSerializable(EspecieVegetal esp) //Sobrecargado { return(esp.idEspecie); }
public void anadeEspecieVegetal(EspecieVegetal vegetal) { vida.anadeEspecieVegetal(vegetal); }
public int getNumeroSer(EspecieVegetal entrada) { return entrada.idEspecie; }
void Awake() { modelosEdificios = GameObject.FindGameObjectWithTag("ModelosEdificios").GetComponent <ModelosEdificios>(); modelosVegetales = GameObject.FindGameObjectWithTag("ModelosVegetales").GetComponent <ModelosVegetales>(); modelosAnimales = GameObject.FindGameObjectWithTag("ModelosAnimales").GetComponent <ModelosAnimales>(); principal = GameObject.FindGameObjectWithTag("MainCamera").GetComponent <Principal>(); descripciones = new List <string>(); costesSeres = new List <List <int> >(); List <T_habitats> habsEdificios = new List <T_habitats>(); habsEdificios.Add(T_habitats.llanura); habsEdificios.Add(T_habitats.colina); List <T_habitats> habsEdificiosAdv = new List <T_habitats>(); habsEdificiosAdv.Add(T_habitats.costa); habsEdificiosAdv.Add(T_habitats.llanura); habsEdificiosAdv.Add(T_habitats.colina); habsEdificiosAdv.Add(T_habitats.tundra); habsEdificiosAdv.Add(T_habitats.desierto); /*fabricaComBas = new TipoEdificio("Fábrica de componentes básicos",habsEdificios,100,25,0,0,T_elementos.comunes,modelosEdificios.fabCompBas); * energia = new TipoEdificio("Central de energía",habsEdificios,150,15,0,0,T_elementos.comunes,modelosEdificios.centralEnergia); * granja = new TipoEdificio("Granja",habsEdificios,700,200,50,0,T_elementos.nada,modelosEdificios.granja); * fabricaComAdv = new TipoEdificio("Fábrica de componentes avanzados",habsEdificiosAdv,850,300,0,0,T_elementos.raros,modelosEdificios.fabCompAdv); * energiaAdv = new TipoEdificio("Central de energía avanzada",habsEdificiosAdv,1000,500,250,0,T_elementos.raros,modelosEdificios.centralEnergiaAdv); */ fabricaComBas = new TipoEdificio("Fábrica de comp. básicos", habsEdificios, 180, 20, 0, 0, T_elementos.comunes, 10, 0, 0, 0, 0, 20, 0, 0, modelosEdificios.fabCompBas); energia = new TipoEdificio("Central de energía", habsEdificios, 150, 30, 0, 0, T_elementos.comunes, 0, 0, 0, 0, 40, 0, 0, 0, modelosEdificios.centralEnergia); granja = new TipoEdificio("Granja", habsEdificios, 800, 280, 0, 0, T_elementos.nada, 75, 0, 0, 0, 0, 0, 0, 0, modelosEdificios.granja); fabricaComAdv = new TipoEdificio("Fábrica de comp. avanzados", habsEdificiosAdv, 1000, 350, 0, 10, T_elementos.raros, 100, 0, 0, 0, 0, 0, 40, 0, modelosEdificios.fabCompAdv); energiaAdv = new TipoEdificio("Central de energía avanzada", habsEdificiosAdv, 2500, 250, 50, 20, T_elementos.raros, 0, 0, 0, 0, 1000, 0, 0, 0, modelosEdificios.centralEnergiaAdv); /* Vegetales */ /*vegetal = new EspecieVegetal(nombre, numMaxSeresEspecie, numMaxVegetales, numIniVegetales, capacidadMigracionLocal, capacidadMigracionGlobal, radioMigracion, * turnosEvolucionInicial, evolucion, habitabilidadInicial, idTextura, modelos * nombre => nombre de la especie * numMaxSeresEspecie => número máximo de seres de esa especie * numMaxVegetales => número máximo de vegetales en una misma casilla. Valores desde 1000 para la primera especie y aumentando en sucesivas especies. * numIniVegetales => número inicial de vegetales al crearse. Valores desde 100 para la primera especie y aumentando en sucesivas especies. * capacidadMigracionLocal => probabilidad en tanto por 1 de que una especie migre a una casilla colindante. La migración también depende de la habitabilidad y del numVegetales. * Así que si por ejemplo tenemos 0.5f en migracionLocal y 0.5 en la habitabilidad de ese hábitat hay un 25% de que migre localmente en el caso de que la * planta este al 100% (numVegetales = numMaxVegetales). Si por ejemplo estuviera a 100/1000 (caso inicial) pues tendría un 2.5% de probabilidad de migrar. * Cuando la planta este al 100% (en 10 turnos) pues migrara con un 25% de probabilidad * capacidadMigracionGlobal => igual que la local sólo que prueba a migrar a una casilla que puede estar entre 1 y radioMigración de distancia en cualquier direccion * radioMigracion => distancia a la que puede migrar globalmente un vegetal * turnosEvolucionInicial => turnos que tienen que pasar para que un vegetal mejore la habitabilidad del hábitat en el que está * evolucion => mejora que se produce cuando turnosEvolucion llega a 0 * habitabilidadInicial => lista de floats desde -1.0f (inhabitable) a 0.0 (decreciente) y hasta 1.0f (creciente). La lista tiene que ser del mismo tamaño que el total de los habitats * idTextura => id de la textura que se pinta debajo del modelo * modelos => lista de los diferentes modelos que tiene la especie */ //VEGETALES ------------------------------------------------------------ //Seta: habitats -> llanura y colina //Tier 1. Barata y normal en llanura y colina. Poca produccion de comida pero alta reproductibilidad y rango de migracion List <float> habSeta = new List <float>(); habSeta.Add(-0.1f); //montana habSeta.Add(0.4f); //llanura habSeta.Add(0.5f); //colina habSeta.Add(-1.0f); //desierto habSeta.Add(-1.0f); //volcanico habSeta.Add(-1.0f); //mar habSeta.Add(-0.6f); //costa habSeta.Add(-1.0f); //tundra habSeta.Add(-1.0f); //inhabitable seta = new EspecieVegetal("Seta", 250, 1000, 100, 0.05f, 0.02f, 7, 20, 0.01f, habSeta, 1, 10, modelosVegetales.setas); costeSeta = new List <int>(); costeSeta.Add(200); //Coste energia costeSeta.Add(110); //Coste comp bas costeSeta.Add(0); //Coste comp adv costeSeta.Add(0); //Coste mat bio //Flor: habitats -> llanura //Tier 1. Barata y decente en llanuras. Mediocre produccion de alimento, reproductibilidad buena pero rango de migracion normal. List <float> habFlor = new List <float>(); habFlor.Add(-0.4f); //montana habFlor.Add(0.5f); //llanura habFlor.Add(-0.3f); //colina habFlor.Add(-1.0f); //desierto habFlor.Add(-1.0f); //volcanico habFlor.Add(-1.0f); //mar habFlor.Add(-1.0f); //costa habFlor.Add(-1.0f); //tundra habFlor.Add(-1.0f); //inhabitable flor = new EspecieVegetal("Flor", 250, 1200, 120, 0.05f, 0.02f, 4, 10, 0.01f, habFlor, 2, 10, modelosVegetales.flores); //0.3f,0.2f,4,10,0.01f,habFlor,2,modelosVegetales.flores); costeFlor = new List <int>(); costeFlor.Add(230); //Coste energia costeFlor.Add(100); //Coste comp bas costeFlor.Add(0); //Coste comp adv costeFlor.Add(0); //Coste mat bio //Palo (Caña): habitats -> llanura, costa y desierto //Tier 2. Normal en llanura, desierto y costa, produccion de alimento normal, reproductibilidad normal y rango alto. Alto ratio de evolucion. List <float> habCana = new List <float>(); habCana.Add(-1.0f); //montana habCana.Add(0.5f); //llanura habCana.Add(-0.5f); //colina habCana.Add(0.3f); //desierto habCana.Add(-1.0f); //volcanico habCana.Add(-1.0f); //mar habCana.Add(0.5f); //costa habCana.Add(-1.0f); //tundra habCana.Add(-1.0f); //inhabitable palo = new EspecieVegetal("Caña", 250, 1500, 250, 0.05f, 0.01f, 6, 8, 0.04f, habCana, 3, 10, modelosVegetales.canas); costeCana = new List <int>(); costeCana.Add(450); //Coste energia costeCana.Add(150); //Coste comp bas costeCana.Add(0); //Coste comp adv costeCana.Add(0); //Coste mat bio //Arbusto: habitats -> llanura, colina, montaña y desierto //Tier 2. Decente en llanura y colina. Produccion normal y reproductibilidad normal. Rango bajo y evolucion lenta pero alta. List <float> habArbusto = new List <float>(); habArbusto.Add(-0.3f); //montana habArbusto.Add(0.5f); //llanura habArbusto.Add(0.6f); //colina habArbusto.Add(-0.2f); //desierto habArbusto.Add(-1.0f); //volcanico habArbusto.Add(-1.0f); //mar habArbusto.Add(-1.0f); //costa habArbusto.Add(-1.0f); //tundra habArbusto.Add(-1.0f); //inhabitable arbusto = new EspecieVegetal("Arbusto", 250, 1800, 220, 0.04f, 0.01f, 3, 20, 0.1f, habArbusto, 2, 5, modelosVegetales.arbustos); costeArbusto = new List <int>(); costeArbusto.Add(420); //Coste energia costeArbusto.Add(170); //Coste comp bas costeArbusto.Add(0); //Coste comp adv costeArbusto.Add(0); //Coste mat bio //Estrom (Estromatolito): habitats -> costa, desierto y volcanico //Tier 3. Muy buena en costas. Alta produccion de alimento y reproductibilidad un poco baja. Poca migracion y poco radio. Evolucion decente. List <float> habEstrom = new List <float>(); habEstrom.Add(-1.0f); //montana habEstrom.Add(0.5f); //llanura habEstrom.Add(-1.0f); //colina habEstrom.Add(-0.8f); //desierto habEstrom.Add(-0.1f); //volcanico habEstrom.Add(-1.0f); //mar habEstrom.Add(0.8f); //costa habEstrom.Add(-0.4f); //tundra habEstrom.Add(-1.0f); //inhabitable estrom = new EspecieVegetal("Estromatolito", 250, 2400, 350, 0.03f, 0.01f, 3, 25, 0.03f, habEstrom, 4, 5, modelosVegetales.estromatolitos); costeEstromatolito = new List <int>(); costeEstromatolito.Add(620); //Coste energia costeEstromatolito.Add(190); //Coste comp bas costeEstromatolito.Add(0); //Coste comp adv costeEstromatolito.Add(5); //Coste mat bio //Cactus: habitats -> desierto //Tier 3. Muy buena en desierto y buena en volcanico. Produccion de alimento decente, reproductibilidad normal, alto ratio de migracion y alta evolucion. List <float> habCactus = new List <float>(); habCactus.Add(-0.8f); //montana habCactus.Add(0.7f); //llanura habCactus.Add(-1.0f); //colina habCactus.Add(0.6f); //desierto habCactus.Add(0.2f); //volcanico habCactus.Add(-1.0f); //mar habCactus.Add(-1.0f); //costa habCactus.Add(-1.0f); //tundra habCactus.Add(-1.0f); //inhabitable cactus = new EspecieVegetal("Cactus", 250, 2200, 320, 0.03f, 0.03f, 8, 12, 0.07f, habCactus, 0, 3, modelosVegetales.cactus); costeCactus = new List <int>(); costeCactus.Add(600); //Coste energia costeCactus.Add(180); //Coste comp bas costeCactus.Add(0); //Coste comp adv costeCactus.Add(5); //Coste mat bio //Palmera: habitats -> costa //Tier 4. Buenisima en costas y mala en llanuras. Alta produccion, reproductibilidad buena, alta migracion y alta evolucion. List <float> habPalm = new List <float>(); habPalm.Add(-1.0f); //montana habPalm.Add(0.5f); //llanura habPalm.Add(-1.0f); //colina habPalm.Add(-0.2f); //desierto habPalm.Add(-1.0f); //volcanico habPalm.Add(-1.0f); //mar habPalm.Add(0.9f); //costa habPalm.Add(-1.0f); //tundra habPalm.Add(-1.0f); //inhabitable palmera = new EspecieVegetal("Palmera", 250, 3000, 450, 0.04f, 0.03f, 5, 15, 0.1f, habPalm, 3, 5, modelosVegetales.palmeras); costePalmera = new List <int>(); costePalmera.Add(1500); //Coste energia costePalmera.Add(280); //Coste comp bas costePalmera.Add(10); //Coste comp adv costePalmera.Add(10); //Coste mat bio //Pino: habitats -> tundra, colina y montaña //Tier 4. Muy buena en colinas, buena en llanura y mediocreo en montañas. Produccion buena, reproductibilidad buena, migracion mediocre y evolucion alta. List <float> habPino = new List <float>(); habPino.Add(0.5f); //montana habPino.Add(0.6f); //llanura habPino.Add(0.7f); //colina habPino.Add(-1.0f); //desierto habPino.Add(-1.0f); //volcanico habPino.Add(-1.0f); //mar habPino.Add(-0.1f); //costa habPino.Add(-1.0f); //tundra habPino.Add(-1.0f); //inhabitable pino = new EspecieVegetal("Pino", 250, 3500, 420, 0.05f, 0.02f, 5, 20, 0.15f, habPino, 4, 5, modelosVegetales.pinos); costePino = new List <int>(); costePino.Add(1800); //Coste energia costePino.Add(300); //Coste comp bas costePino.Add(10); //Coste comp adv costePino.Add(10); //Coste mat bio //Ciprés: habitats -> tundra, colina y montaña //Tier 5. Bueno en muchos habitats. Procuddion muy alta, reproduccion buena, migracion normal y evolucion altisima. List <float> habCipres = new List <float>(); habCipres.Add(0.8f); //montana habCipres.Add(1.0f); //llanura habCipres.Add(0.6f); //colina habCipres.Add(-0.8f); //desierto habCipres.Add(-0.5f); //volcanico habCipres.Add(-1.0f); //mar habCipres.Add(-0.1f); //costa habCipres.Add(0.8f); //tundra habCipres.Add(-1.0f); //inhabitable cipres = new EspecieVegetal("Ciprés", 250, 4000, 550, 0.06f, 0.02f, 6, 10, 0.2f, habCipres, 4, 5, modelosVegetales.cipreses); costeCipres = new List <int>(); costeCipres.Add(2500); //Coste energia costeCipres.Add(420); //Coste comp bas costeCipres.Add(50); //Coste comp adv costeCipres.Add(20); //Coste mat bio //Pino Alto: habitats -> tundra y montaña //Tier 5. Muy bueno en montaña y colina, y decente en mas. Produccion altisima, reproduccion buena, migracion alta y evolucion muy alta. List <float> habPinoAlto = new List <float>(); habPinoAlto.Add(0.9f); //montana habPinoAlto.Add(0.9f); //llanura habPinoAlto.Add(0.9f); //colina habPinoAlto.Add(-1.0f); //desierto habPinoAlto.Add(-1.0f); //volcanico habPinoAlto.Add(-1.0f); //mar habPinoAlto.Add(-0.5f); //costa habPinoAlto.Add(0.3f); //tundra habPinoAlto.Add(-1.0f); //inhabitable pinoAlto = new EspecieVegetal("Pino Alto", 250, 5000, 650, 0.05f, 0.02f, 6, 12, 0.2f, habPinoAlto, 1, 5, modelosVegetales.pinosAltos); costePinoAlto = new List <int>(); costePinoAlto.Add(3000); //Coste energia costePinoAlto.Add(500); //Coste comp bas costePinoAlto.Add(50); //Coste comp adv costePinoAlto.Add(25); //Coste mat bio //ANIMALES ---------------------------------------------------- List <T_habitats> listaHabs; /* Herbivoros */ listaHabs = new List <T_habitats>();; listaHabs.Add(T_habitats.llanura); listaHabs.Add(T_habitats.colina); listaHabs.Add(T_habitats.costa); //Caracol: habitats -> herbivoro1 = new EspecieAnimal("Caracol", 15, 40, 1200, 320, 3, 4, tipoAlimentacionAnimal.herbivoro, listaHabs, modelosAnimales.herbivoro1); costeHerb1 = new List <int>(); costeHerb1.Add(1000); //Coste energia costeHerb1.Add(250); //Coste comp bas costeHerb1.Add(0); //Coste comp adv costeHerb1.Add(10); //Coste mat bio listaHabs = new List <T_habitats>(); listaHabs.Add(T_habitats.llanura); listaHabs.Add(T_habitats.colina); listaHabs.Add(T_habitats.tundra); listaHabs.Add(T_habitats.montana); //Conejo: habitats -> herbivoro2 = new EspecieAnimal("Conejo", 20, 100, 1700, 500, 7, 3, tipoAlimentacionAnimal.herbivoro, listaHabs, modelosAnimales.herbivoro2); costeHerb2 = new List <int>(); costeHerb2.Add(1500); //Coste energia costeHerb2.Add(350); //Coste comp bas costeHerb2.Add(0); //Coste comp adv costeHerb2.Add(15); //Coste mat bio listaHabs = new List <T_habitats>(); listaHabs.Add(T_habitats.llanura); listaHabs.Add(T_habitats.colina); listaHabs.Add(T_habitats.costa); //Vacas: habitats -> herbivoro3 = new EspecieAnimal("Vaca", 10, 200, 2400, 800, 4, 4, tipoAlimentacionAnimal.herbivoro, listaHabs, modelosAnimales.herbivoro3); costeHerb3 = new List <int>(); costeHerb3.Add(2200); //Coste energia costeHerb3.Add(450); //Coste comp bas costeHerb3.Add(30); //Coste comp adv costeHerb3.Add(25); //Coste mat bio listaHabs = new List <T_habitats>(); listaHabs.Add(T_habitats.colina); listaHabs.Add(T_habitats.desierto); listaHabs.Add(T_habitats.llanura); //Jirafas: habitats -> herbivoro4 = new EspecieAnimal("Jirafa", 12, 240, 3360, 960, 6, 4, tipoAlimentacionAnimal.herbivoro, listaHabs, modelosAnimales.herbivoro4); costeHerb4 = new List <int>(); costeHerb4.Add(3200); //Coste energia costeHerb4.Add(570); //Coste comp bas costeHerb4.Add(100); //Coste comp adv costeHerb4.Add(35); //Coste mat bio listaHabs = new List <T_habitats>(); listaHabs.Add(T_habitats.llanura); listaHabs.Add(T_habitats.volcanico); listaHabs.Add(T_habitats.colina); listaHabs.Add(T_habitats.montana); //Tortuga: habitats-> herbivoro5 = new EspecieAnimal("Tortuga", 6, 400, 7500, 2500, 4, 5, tipoAlimentacionAnimal.herbivoro, listaHabs, modelosAnimales.herbivoro5); costeHerb5 = new List <int>(); costeHerb5.Add(4000); //Coste energia costeHerb5.Add(750); //Coste comp bas costeHerb5.Add(200); //Coste comp adv costeHerb5.Add(50); //Coste mat bio /* Carnivoros */ //Rata: habitats -> listaHabs = new List <T_habitats>(); listaHabs.Add(T_habitats.tundra); listaHabs.Add(T_habitats.llanura); listaHabs.Add(T_habitats.colina); carnivoro1 = new EspecieAnimal("Zorro", 4, 80, 2400, 2400, 7, 8, tipoAlimentacionAnimal.carnivoro, listaHabs, modelosAnimales.carnivoro1); costeCarn1 = new List <int>(); costeCarn1.Add(2000); //Coste energia costeCarn1.Add(350); //Coste comp bas costeCarn1.Add(20); //Coste comp adv costeCarn1.Add(15); //Coste mat bio //Lobo: habitats -> listaHabs = new List <T_habitats>(); listaHabs.Add(T_habitats.llanura); listaHabs.Add(T_habitats.colina); listaHabs.Add(T_habitats.montana); listaHabs.Add(T_habitats.tundra); carnivoro2 = new EspecieAnimal("Lobo", 3, 120, 3400, 3400, 10, 10, tipoAlimentacionAnimal.carnivoro, listaHabs, modelosAnimales.carnivoro2); costeCarn2 = new List <int>(); costeCarn2.Add(3300); //Coste energia costeCarn2.Add(450); //Coste comp bas costeCarn2.Add(80); //Coste comp adv costeCarn2.Add(25); //Coste mat bio //Tigre: habitats -> listaHabs = new List <T_habitats>(); listaHabs.Add(T_habitats.llanura); listaHabs.Add(T_habitats.colina); listaHabs.Add(T_habitats.costa); listaHabs.Add(T_habitats.montana); carnivoro3 = new EspecieAnimal("Tigre", 3, 192, 4800, 4800, 12, 12, tipoAlimentacionAnimal.carnivoro, listaHabs, modelosAnimales.carnivoro3); costeCarn3 = new List <int>(); costeCarn3.Add(4500); //Coste energia costeCarn3.Add(750); //Coste comp bas costeCarn3.Add(250); //Coste comp adv costeCarn3.Add(40); //Coste mat bio //Oso: habitats -> listaHabs = new List <T_habitats>(); listaHabs.Add(T_habitats.llanura); listaHabs.Add(T_habitats.colina); listaHabs.Add(T_habitats.montana); listaHabs.Add(T_habitats.tundra); carnivoro4 = new EspecieAnimal("Oso", 2, 224, 6720, 6720, 11, 14, tipoAlimentacionAnimal.carnivoro, listaHabs, modelosAnimales.carnivoro4); costeCarn4 = new List <int>(); costeCarn4.Add(5600); //Coste energia costeCarn4.Add(830); //Coste comp bas costeCarn4.Add(320); //Coste comp adv costeCarn4.Add(60); //Coste mat bio //Tiranosaurio: habitats -> listaHabs.Add(T_habitats.llanura); listaHabs.Add(T_habitats.colina); listaHabs.Add(T_habitats.desierto); listaHabs.Add(T_habitats.volcanico); carnivoro5 = new EspecieAnimal("Tiranosaurio", 1, 375, 15000, 7500, 15, 15, tipoAlimentacionAnimal.carnivoro, listaHabs, modelosAnimales.carnivoro5); costeCarn5 = new List <int>(); costeCarn5.Add(7500); //Coste energia costeCarn5.Add(1200); //Coste comp bas costeCarn5.Add(430); //Coste comp adv costeCarn5.Add(90); //Coste mat bio }
public Vegetal(int idSer, EspecieVegetal especie, int posX, int posY, T_habitats habitatActual, int numVegetales,GameObject modelo) { this.idSer = idSer; this.especie = especie; this.posX = posX % FuncTablero.altoTablero; this.posY = posY % FuncTablero.anchoTablero; FuncTablero.convierteCoordenadas(ref posX,ref posY); this.numVegetales = numVegetales; this.turnosEvolucion = especie.turnosEvolucionInicial; this.indiceHabitat = (int)habitatActual; this.modelos = new List<GameObject>(); modelos.Add(modelo); }
//Devuelve true si consigue migrar una especie a una nueva posicion y false si no public bool migraVegetal(EspecieVegetal especie, List<float> habitabilidad, int posX,int posY,int radio) { int difX = UnityEngine.Random.Range(-radio,radio+1); int difY = UnityEngine.Random.Range(-radio,radio+1); int nposX = posX + difX; int nposY = posY + difY; FuncTablero.convierteCoordenadas(ref nposX,ref nposY); return anadeVegetal(especie,habitabilidad,-1.0f,nposX,nposY); }
public Vegetal(int idSer, EspecieVegetal especie, int posX, int posY, List<float> habitabilidad, T_habitats habitatActual, GameObject modelo) { this.idSer = idSer; this.especie = especie; FuncTablero.convierteCoordenadas(ref posX,ref posY); this.posX = posX; this.posY = posY; this.numVegetales = especie.numIniVegetales; this.turnosEvolucion = especie.turnosEvolucionInicial; this.habitabilidad = habitabilidad; this.indiceHabitat = (int)habitatActual; this.modelos = new List<GameObject>(); modelos.Add(modelo); }
//Devuelve false si el vegetal ya existe (no se añade) y true si se añade correctamente public bool anadeVegetal(EspecieVegetal especie,List<float> habitabilidad,float habitabilidadMinima,int posX,int posY,Vector3 pos) { if(tieneEdificio(posX,posY) || tieneVegetal(posX,posY) || habitabilidad[(int)tablero[posX,posY].habitat] == habitabilidadMinima) return false; GameObject modelo = especie.modelos[UnityEngine.Random.Range(0,especie.modelos.Count)]; Vector3 coordsVert = pos; //Vector3 coordsVert = tablero[posX,posY].coordsVert; Vegetal vegetal = new Vegetal(idActualVegetal,especie,posX,posY,habitabilidad,tablero[posX,posY].habitat,FuncTablero.creaMesh(coordsVert, modelo)); //vegetal.modelos[0].transform.position = objetoRoca.TransformPoint(vegetal.modelos[0].transform.position); seres.Add(vegetal); //int turno = (turnoActual + especie.siguienteTurno)%numMaxTurnos; //listadoSeresTurnos[turno].Add(vegetal); idActualVegetal++; vegetales.Add(vegetal); tablero[posX,posY].vegetal = vegetal; especie.numSeresEspecie++; // pintaPlantasTex(posX,posY); return true; }
//Devuelve si el vegetal se puede insertar en esa posición o no public bool compruebaAnadeVegetal(EspecieVegetal especie,List<float> habitabilidad,float habitabilidadMinima,int posX,int posY) { return(!tieneEdificio(posX,posY) && !tieneVegetal(posX,posY) && habitabilidad[(int)tablero[posX,posY].habitat] > habitabilidadMinima); }
//Devuelve false si la especie ya existe (no se añade) y true si se añade correctamente public bool anadeEspecieVegetal(EspecieVegetal especie) { if(especies.Contains(especie)) return false; especie.idEspecie = especiesVegetales.Count; especies.Add(especie); especiesVegetales.Add(especie); return true; }
private static int getModeloSerializable(EspecieVegetal esp) { //Sobrecargado return esp.idEspecie; }
private static int getEspecieVegSerializable(EspecieVegetal veg) { return veg.idEspecie; }
private static int getEspecieVegSerializable(EspecieVegetal veg) { return(veg.idEspecie); }
public Vegetal(int idSer, EspecieVegetal especie, int posX, int posY, List<float> habitabilidad, int habitatActual, List<GameObject> modelosIn, int numVeg, int turnosEvo) { this.idSer = idSer; this.especie = especie; FuncTablero.convierteCoordenadas(ref posX,ref posY); this.posX = posX; this.posY = posY; this.numVegetales = numVeg; this.turnosEvolucion = turnosEvo; this.habitabilidad = habitabilidad; this.indiceHabitat = habitatActual; this.modelos = modelosIn; }
public void anadeEspecieVegetal(EspecieVegetal vegetal) { vida.anadeEspecieVegetal(vegetal); }
public int getNumeroSer(EspecieVegetal entrada) { return(entrada.idEspecie); }