Bläddra i källkod

Reading buildings in the castles - still needs more testing and improvents.

Michał W. Urbańczyk 18 år sedan
förälder
incheckning
9530fb42c2
3 ändrade filer med 237 tillägg och 0 borttagningar
  1. 22 0
      CCastleInterface.cpp
  2. 1 0
      global.h
  3. 214 0
      hch/CAmbarCendamo.cpp

+ 22 - 0
CCastleInterface.cpp

@@ -72,6 +72,8 @@ void CCastleInterface::show()
 	LOCPLINT->adventureInt->resdatabar.draw();
 
 	int pom;
+
+	//draw fort icon
 	if(town->builtBuildings.find(9)!=town->builtBuildings.end())
 		pom = 2;
 	else if(town->builtBuildings.find(8)!=town->builtBuildings.end())
@@ -81,6 +83,7 @@ void CCastleInterface::show()
 	else pom = 3;
 	blitAt(fort->ourImages[pom].bitmap,122,413);
 
+	//draw ((village/town/city) hall)/capitol icon
 	if(town->builtBuildings.find(13)!=town->builtBuildings.end())
 		pom = 3;
 	else if(town->builtBuildings.find(12)!=town->builtBuildings.end())
@@ -90,6 +93,25 @@ void CCastleInterface::show()
 	else pom = 0;
 	blitAt(hall->ourImages[pom].bitmap,80,413);
 
+	//draw creatures icons and their growths
+	for(int i=0;i<CREATURES_PER_TOWN;i++)
+	{
+		int cid = -1;
+		if (town->builtBuildings.find(30+i)!=town->builtBuildings.end())
+		{
+			cid = (14*town->subID)+(i*2);
+			if (town->builtBuildings.find(30+CREATURES_PER_TOWN+i)!=town->builtBuildings.end())
+			{
+				cid++;
+			}
+		}
+		if (cid>=0)
+		{
+			;
+		}
+	}
+
+	//print name and income
 	CSDL_Ext::printAt(town->name,85,389,GEOR13,zwykly);
 	char temp[10];
 	itoa(town->income,temp,10);

+ 1 - 0
global.h

@@ -52,6 +52,7 @@ const int TERRAIN_TYPES=10;
 const int PRIMARY_SKILLS=4;
 const int NEUTRAL_PLAYER=255;
 const int NAMES_PER_TOWN=16;
+const int CREATURES_PER_TOWN = 7; //without upgrades
 
 #define MARK_BLOCKED_POSITIONS false
 #define MARK_VISITABLE_POSITIONS false

+ 214 - 0
hch/CAmbarCendamo.cpp

@@ -1586,6 +1586,220 @@ void CAmbarCendamo::deh3m()
 				delete nobj;
 				nobj = nt;
 
+				if(spec->unusualBuildins)
+				{
+					nt->builtBuildings.insert(10);
+					for(int ir = 0; ir < 6; ir++)
+					{
+						for(int bs=0;bs<8;bs++)
+						{
+							if(ir==0)
+							{
+								if (bs<3)
+								{
+									if(spec->buildingSettings[ir] & (1<<bs))
+									{
+										nt->builtBuildings.insert(11+bs);
+									}
+								}
+								else if (bs<6)
+								{
+									if(spec->buildingSettings[ir] & (1<<bs))
+									{
+										nt->builtBuildings.insert(7+bs-3);
+									}
+								}
+								else if(bs==6)
+								{
+									if(spec->buildingSettings[ir] & (1<<bs))
+									{
+										nt->builtBuildings.insert(5);
+									}
+								}
+								else// if(bs==7)
+								{
+									if(spec->buildingSettings[ir] & (1<<bs))
+									{
+										nt->builtBuildings.insert(16);
+									}
+								}
+							} //if(ir==0)
+							else if(ir==1)
+							{
+								if(bs<2)
+								{
+									if(spec->buildingSettings[ir] & (1<<bs))
+									{
+										nt->builtBuildings.insert(14+bs);
+									}
+								}
+								else if (bs==2)
+								{
+									if(spec->buildingSettings[ir] & (1<<bs))
+									{
+										std::cout<<"Hej, sprawdz co to za budynek w miescie " <<nt<<std::endl;
+									}
+								}//bs==3 - nie wiadomo co to, 4 w 2. bajcie
+								else
+								{
+									if(spec->buildingSettings[ir] & (1<<bs))
+									{
+										nt->builtBuildings.insert(0+bs-3);
+									}
+								}
+
+							}//else if(ir==1)
+							else if(ir==2)
+							{
+								if(bs==0)
+								{
+									if(spec->buildingSettings[ir] & (1<<bs))
+									{
+										nt->builtBuildings.insert(6); //stocznia
+									}
+								}
+								else if(bs==1)
+								{
+									if(spec->buildingSettings[ir] & (1<<bs))
+									{
+										nt->builtBuildings.insert(26); //graal
+									}
+								}
+								else if(bs==2)
+								{
+									if(spec->buildingSettings[ir] & (1<<bs))
+									{
+										nt->builtBuildings.insert(17); //latarnia
+									}
+								}
+								else if(bs==3)
+								{
+									if(spec->buildingSettings[ir] & (1<<bs))
+									{
+										nt->builtBuildings.insert(22); //bractwo miecza
+									}
+								}
+								else if(bs==4)
+								{
+									if(spec->buildingSettings[ir] & (1<<bs))
+									{
+										nt->builtBuildings.insert(21); //stajnia
+									}
+								}
+								else if(bs==5)
+								{
+									if(spec->buildingSettings[ir] & (1<<bs))
+									{
+										std::cout<<"Hej, sprawdz co to za budynek2 w miescie " <<nt<<std::endl;
+									}
+								}
+								else if(bs==6)
+								{
+									if(spec->buildingSettings[ir] & (1<<bs))
+									{
+										nt->builtBuildings.insert(30); //gen1
+									}
+								}
+								else if(bs==7)
+								{
+									if(spec->buildingSettings[ir] & (1<<bs))
+									{
+										nt->builtBuildings.insert(37); //gen1+
+									}
+								}
+							}//else if(ir==2)
+							else if (ir==3)
+							{
+								if(bs==0)
+								{
+									if(spec->buildingSettings[ir] & (1<<bs))
+									{
+										std::cout<<"Hej, sprawdz co to za budynek3 w miescie " <<nt<<std::endl;
+									}
+									continue;
+								}
+								else if(bs<3)
+								{
+									if(bs==1) 
+									{
+										if(spec->buildingSettings[ir] & (1<<bs))
+										{
+											nt->builtBuildings.insert(31); //gen2
+										}
+									}
+									else
+									{
+										if(spec->buildingSettings[ir] & (1<<bs))
+										{
+											nt->builtBuildings.insert(38); //gen2+
+										}
+									}
+								}
+								else if (bs==3)
+								{
+									if(spec->buildingSettings[ir] & (1<<bs))
+									{
+										std::cout<<"Hej, sprawdz co to za budynek4 w miescie " <<nt<<std::endl;
+									}
+									continue;
+								}
+								else
+								{
+									if(bs%2) //nieulepszone
+									{
+										if(spec->buildingSettings[ir] & (1<<bs))
+										{
+											nt->builtBuildings.insert((int)(39+(bs/2)-2)); 
+										}
+									}
+									else
+									{
+										if(spec->buildingSettings[ir] & (1<<bs))
+										{
+											nt->builtBuildings.insert(32+(bs/2)-2); 
+										}
+									}
+								}
+
+							}//else if (ir==3)
+							else if (ir==4)
+							{
+									if(bs%2) //ulepszone
+									{
+										if(spec->buildingSettings[ir] & (1<<bs))
+										{
+											nt->builtBuildings.insert(40+(bs/2)); 
+										}
+									}
+									else
+									{
+										if(spec->buildingSettings[ir] & (1<<bs))
+										{
+											nt->builtBuildings.insert((int)(34+(bs/2))); 
+										}
+									}
+							}//else if (ir==4)
+							else if (ir==5)
+							{
+								if(bs==0)
+								{
+									if(spec->buildingSettings[ir] & (1<<bs))
+									{
+										nt->builtBuildings.insert(43); //gen7+
+									}
+								}
+							}//else if (ir==5)
+						}
+					}
+				}
+				else
+				{
+					if(spec->hasFort)
+					{
+						nt->builtBuildings.insert(7);
+					}
+				}
+
 				nt->setOwner(spec->player);
 				nt->town = &CGI->townh->towns[nt->defInfo->subid];
 				nt->builded = 0;