예제 #1
0
파일: ohillres.cpp 프로젝트: 112212/7k2
HillBlockInfo* HillRes::operator[](int hillBlockId)
{
	err_if( hillBlockId<1 || hillBlockId>hill_block_count )
		err_now( "HillRes::operator[]" );

	return hill_block_info_array+(hillBlockId-1);
}
예제 #2
0
파일: OMONSRES.cpp 프로젝트: brianV/7kaa
MonsterInfo* MonsterRes::operator[](int monsterId)
{
   err_if( monsterId<1 || monsterId>monster_count )
      err_now( "MonsterRes::operator[]" );

   return monster_info_array+monsterId-1;
}
예제 #3
0
파일: OFIRMRES.cpp 프로젝트: Stummi/7kaa
FirmInfo* FirmRes::operator[](int firmId)
{
	err_if( firmId<1 || firmId>firm_count )
		err_now( "FirmRes::operator[]" );

	return firm_info_array+firmId-1;
}
예제 #4
0
파일: orawres.cpp 프로젝트: 7k2/7k2
RawInfo* RawRes::operator[](int rawId)
{
    err_if( rawId<1 || rawId>raw_count )
    err_now( "RawRes::operator[]" );

    return raw_info_array+rawId-1;
}
예제 #5
0
파일: onationa.cpp 프로젝트: 112212/7k2
//--------- Begin of function NationArray::create_nation ---------//
//
// <int> nationClassId - the class id. of the nation to be created.
//
// return : <int> nationRecno = the recno. of the newly added nation
//
int NationArray::create_nation(int nationClassId)
{
	Nation* nationPtr;

	switch(nationClassId)
	{
		case NATION_HUMAN:
			nationPtr = new NationHuman;
			break;

		case NATION_MONSTER:
			nationPtr = new NationMonster;
			break;

		default:
			err_now("NationArray::create_nation()");
	}

	nationPtr->nation_class_id = nationClassId;

	//----------------------------------------//

	linkin(&nationPtr);

	err_when( size() > MAX_NATION );

	nationPtr->nation_recno = recno();

	return recno();
}
예제 #6
0
파일: OTERRAIN.cpp 프로젝트: AMDmi3/7kaa
TerrainInfo* TerrainRes::operator[](int terrainId)
{
	err_if( terrainId<1 || terrainId>terrain_count )
		err_now( "TerrainRes::operator[]" );

	return terrain_info_array+terrainId-1;
}
예제 #7
0
파일: OTOWNRES.cpp 프로젝트: AMDmi3/7kaa
TownBuild* TownRes::get_build(int recNo)
{
	err_if( recNo<1 || recNo>town_build_count )
		err_now( "TownRes::get_build()" );

	return town_build_array+recNo-1;
}
예제 #8
0
파일: OTOWNRES.cpp 프로젝트: AMDmi3/7kaa
char* TownRes::get_name(int recNo)
{
	err_if( recNo<1 || recNo>town_name_count )
		err_now( "TownRes::get_name()" );

	return town_name_array[recNo-1].name;
}
예제 #9
0
파일: OTOWNRES.cpp 프로젝트: AMDmi3/7kaa
TownSlot* TownRes::get_slot(int recNo)
{
	err_if( recNo<1 || recNo>town_slot_count )
		err_now( "TownRes::get_slot()" );

	return town_slot_array+recNo-1;
}
예제 #10
0
파일: OTOWNRES.cpp 프로젝트: AMDmi3/7kaa
TownBuildType* TownRes::get_build_type(int recNo)
{
	err_if( recNo<1 || recNo>town_build_type_count )
		err_now( "TownRes::get_build_type()" );

	return town_build_type_array+recNo-1;
}
예제 #11
0
파일: OTOWNRES.cpp 프로젝트: AMDmi3/7kaa
TownLayout* TownRes::get_layout(int recNo)
{
	err_if( recNo<1 || recNo>town_layout_count )
		err_now( "TownRes::get_layout()" );

	return town_layout_array+recNo-1;
}
예제 #12
0
파일: OSITE.cpp 프로젝트: spippolatore/7kaa
//--------- Begin of function SiteArray::del_site ----------//
//
// Delete a specified site.
//
// <int> siteRecno = the record no. of the site to be deleted
//
void SiteArray::del_site(int siteRecno)
{
	err_if( siteRecno == 0 )
		err_now( "SiteArray::del_site" );

	Site* sitePtr = site_array[siteRecno];

	switch( sitePtr->site_type )
	{
		case SITE_RAW:
			untapped_raw_count--;
			break;

		case SITE_SCROLL:
			scroll_count--;
			break;

		case SITE_GOLD_COIN:
			gold_coin_count--;
			break;
	}

	//-------------------------------//

	sitePtr->deinit();

	linkout(siteRecno);

	if( siteRecno == site_array.selected_recno )
		site_array.selected_recno = 0;
}
예제 #13
0
WallInfo* WallRes::operator[](int wallId)
{
	err_if( wallId<1 || wallId>max_wall_id )
		err_now( "WallRes::operator[]" );

	return wall_index[wallId-1];
}
예제 #14
0
파일: ofirma.cpp 프로젝트: mecirt/7k2
Firm* FirmArray::operator()()
{
   Firm* firmPtr = (Firm*) get_ptr();   // if recno()==0, get_ptr() returns NULL

	err_if( !firmPtr )
      err_now( "FirmArray[recno()] is deleted" );

   return firmPtr;
}
예제 #15
0
파일: omisc.cpp 프로젝트: MicroVirus/7k2
//------- Begin of function Misc::random ---------//
//
// <int> maxNum = maximum random number, it must <= 0x7FFF
//                in 32 bit compiler <int> = <long>
//
// return : <int> the random number
//
int Misc::random(int maxNum)
{
   err_if( maxNum < 0 || maxNum > 0x7FFF )
      err_now( "Misc::random()" );

	// ###### begin Gilbert 19/6 ######//
	err_when( is_seed_locked() );
	// ###### end Gilbert 19/6 ######//
   #define MULTIPLIER      0x015a4e35L
   #define INCREMENT       1
   #define RANDOM_MAX      0x7FFFU

   random_seed = MULTIPLIER * random_seed + INCREMENT;

   return maxNum * ((random_seed >> 16) & RANDOM_MAX) / (RANDOM_MAX+1);
}
예제 #16
0
파일: omisc.cpp 프로젝트: MicroVirus/7k2
//------- BEGIN OF FUNCTION Misc::fix_str ------//
//
// format the word to the fixed length
//
// e.g. Misc::fix_str("ABC",10) -> "ABC     "
//
// <char*> str     = the string to be formated
// <int>   len     = the deserved length after formatted
// [char]  endChar = the end character of the string ( default : NULL terminator )
//
void Misc::fix_str(char* str,int len,char endChar)
{
   int oldLen;

   if ( endChar == '\0' )
      oldLen = strlen(str);
   else
   {
      oldLen = Misc::str_chr(str,endChar)-1;
      err_if ( oldLen == -1 )              // the end character not found
         err_now("Misc::fix_str");
   }

   if ( len > oldLen )
      memset( str+oldLen, ' ', len-oldLen );

   str[len] = '\0';
}
예제 #17
0
파일: OTOWNRES.cpp 프로젝트: AMDmi3/7kaa
//------- Begin of function TownRes::load_town_layout -------//
//
// Read in information from TOWNLAY.DBF.
//
void TownRes::load_town_layout()
{
	TownLayoutRec  *townLayoutRec;
	TownLayout     *townLayout;
	TownSlot			*townSlot;
	int      	  	i, j;
	Database 		*dbTownLayout = game_set.open_db(TOWN_LAYOUT_DB);

	town_layout_count = (short) dbTownLayout->rec_count();
	town_layout_array = (TownLayout*) mem_add( sizeof(TownLayout)*town_layout_count );

	//------ read in town layout info array -------//

	memset( town_layout_array, 0, sizeof(TownLayout) * town_layout_count );

	for( i=0 ; i<town_layout_count ; i++ )
	{
		townLayoutRec = (TownLayoutRec*) dbTownLayout->read(i+1);
		townLayout    = town_layout_array+i;

		townLayout->first_slot_recno = misc.atoi(townLayoutRec->first_slot, TownLayoutRec::FIRST_SLOT_LEN);
		townLayout->slot_count = misc.atoi(townLayoutRec->slot_count, TownLayoutRec::SLOT_COUNT_LEN);

		// ###### begin Gilbert 9/9 ########//
		// townLayout->ground_bitmap_ptr = image_spict.get_ptr( misc.nullify(townLayoutRec->ground_name, TownLayoutRec::GROUND_NAME_LEN) );
		townLayout->ground_bitmap_ptr = image_tpict.get_ptr( misc.nullify(townLayoutRec->ground_name, TownLayoutRec::GROUND_NAME_LEN) );
		// ###### end Gilbert 9/9 ########//

		err_if( townLayout->slot_count > MAX_TOWN_LAYOUT_SLOT )
			err_now( "Error: MAX_TOWN_LAYOUT_SLOT limit exceeded." );

		//----- calculate min_population & max_population -----//

		townSlot = town_slot_array+townLayout->first_slot_recno-1;

		for( j=0 ; j<townLayout->slot_count ; j++, townSlot++ )
		{
			if( townSlot->build_type==TOWN_OBJECT_HOUSE )		// if there is a building in this slot
				townLayout->build_count++;
		}
	}
}
예제 #18
0
파일: oresdb.cpp 프로젝트: mecirt/7k2
//---------- Begin of function ResourceDb::init ---------//
//
// <char*>     resName			= name of the resource file (e.g. "GIF.RES")
// <Database*> dbObj				= name of the database      (e.g. Database db("PFILE.DBF"))
// <int>       indexOffset		= offset of the index field
// [int]       useCommonBuf   = whether use the vga common buffer to store the data or not
//										  (default:0)
//
void ResourceDb::init(char* resName, Database* dbObj, int indexOffset, int useCommonBuf)
{
   deinit();

   file_open( resName );

   db_obj             = dbObj;
   index_field_offset = indexOffset;
   use_common_buf     = useCommonBuf;

   if( use_common_buf )
      data_buf = sys.common_data_buf;
   else
      data_buf = NULL;

   err_if( db_obj == NULL )
      err_now("db_obj is NULL");

   init_flag = 1;
}
예제 #19
0
파일: Onews.cpp 프로젝트: ndilday/virtualu
News* NewsArray::operator[](int recNo) {
#ifdef DEBUG

    News* msgPtr;

    if( recNo )
	msgPtr = (News*) get(recNo);
    else
	msgPtr = NULL;                                // NULL will then cause error

    err_if( !msgPtr || msgPtr->news_date==0 )
	err_now( "NewsArray[] is deleted" );

    return msgPtr;

#else

    return (News*) get(recNo);
#endif
}
예제 #20
0
파일: Oplant.cpp 프로젝트: ndilday/virtualu
PlantInfo* PlantRes::operator[](int plantId) {
    err_if( plantId<1 || plantId>plant_count )
	err_now( "PlantRes::operator[]" );

    return info_array+plantId-1;
}
예제 #21
0
파일: ofirma.cpp 프로젝트: mecirt/7k2
//--------- Begin of function FirmArray::create_firm ---------//
//
// create_firm() will be called directly by :
//
// 1. FirmArray::build_firm()  for setting up a new firm
// 2. FirmArray::read_file() when loading game.
//
// <int> firmId = firm type id
//
// Return : <int> the record no. of the newly added firm
//
int FirmArray::create_firm(int firmId)
{
	Firm* firmPtr;

//	static char firmAnimalTrainArray[] = { UNIT_JAGUAR, UNIT_GORILLA, UNIT_RHINO, 0 };
	static char firmIncubatorTrainArray[] = { UNIT_BALLISTA, UNIT_CATAPULT, UNIT_CANNON, 0 };

	switch(firmId)
	{
		case FIRM_BASE:
			firmPtr = new FirmBase;
			break;

		case FIRM_FORT:
			firmPtr = new FirmFort;
			break;

		case FIRM_CAMP:
			firmPtr = new FirmCamp;
			break;

		case FIRM_FACTORY:
			firmPtr = new FirmFactory;
			break;

		case FIRM_INN:
			firmPtr = new FirmInn;
			break;

		case FIRM_MARKET:
			firmPtr = new FirmMarket;
			break;

		case FIRM_MINE:
			firmPtr = new FirmMine;
			break;

		case FIRM_RESEARCH:
			firmPtr = new FirmResearch;
			break;

		case FIRM_WAR_FACTORY:
			firmPtr = new FirmWar;
			break;

//		case FIRM_HARBOR:
//			firmPtr = new FirmHarbor;
//			break;

		case FIRM_SPY:
			firmPtr = new FirmSpy;
			break;

		case FIRM_SPECIAL:
			firmPtr = new FirmSpecial;
			break;

		case FIRM_LAIR:
			firmPtr = new FirmLair;
			break;

		case FIRM_BEE:
			firmPtr = new FirmMonsterTrain(UNIT_BEE);
			break;

		case FIRM_TERMITE:
			firmPtr = new FirmMonsterTrain(UNIT_TERMITE);
			break;
		
		case FIRM_LISHORR:
		case FIRM_WILDE_LISHORR:
			firmPtr = new FirmLishorr;
			break;

		case FIRM_ALCHEMY:
			firmPtr = new FirmMonsterAlchemy;
			break;

		case FIRM_INCUBATOR:
			firmPtr = new FirmIncubator;
			break;

		case FIRM_ANIMAL:
			firmPtr = new FirmAnimal;
			break;

		case FIRM_FORTRESS:
			firmPtr = new FirmMonsterFortress(UNIT_ROCK);
			break;

		case FIRM_MAGIC:
			firmPtr = new FirmMagic;
			break;

		case FIRM_OFFENSIVE_BUILDING_1:
		case FIRM_OFFENSIVE_BUILDING_2:
		case FIRM_OFFENSIVE_BUILDING_4:
			firmPtr = new FirmOffensive;
			break;

		case FIRM_OFFENSIVE_BUILDING_3:	
			firmPtr = new FirmOffensive2;
			break;

		default:
			err_now("FirmArray::create_firm()");
	}
 
	//----------------------------------------//

	linkin(&firmPtr);
	firmPtr->firm_recno = recno();

	return firmPtr->firm_recno;
}
예제 #22
0
파일: Oroad.cpp 프로젝트: ndilday/virtualu
RoadInfo* RoadRes::operator[](int roadId) {
    err_if( roadId<1 || roadId>road_count )
	err_now( "RoadRes::operator[]" );

    return info_array+roadId-1;
}
예제 #23
0
파일: ofirma.cpp 프로젝트: mecirt/7k2
//--------- Begin of function FirmArray::firm_class_size ---------//
//
// Return the size of the specified class.
// This function will be called by FirmArray::write_file()
//
// <int> id    = the id of the job
//
int FirmArray::firm_class_size(int id) 
{
	switch(id)
	{
		case FIRM_BASE:
			return sizeof(FirmBase);

		case FIRM_FORT:
			return sizeof(FirmFort);

		case FIRM_CAMP:
			return sizeof(FirmCamp);

		case FIRM_FACTORY:
			return sizeof(FirmFactory);

		case FIRM_INN:
			return sizeof(FirmInn);

		case FIRM_MARKET:
			return sizeof(FirmMarket);

		case FIRM_MINE:
			return sizeof(FirmMine);

		case FIRM_RESEARCH:
			return sizeof(FirmResearch);

		case FIRM_WAR_FACTORY:
			return sizeof(FirmWar);

//		case FIRM_HARBOR:
//			return sizeof(FirmHarbor);

		case FIRM_SPY:
			return sizeof(FirmSpy);

		case FIRM_SPECIAL:
			return sizeof(FirmSpecial);

		case FIRM_LAIR:
			return sizeof(FirmLair);

		case FIRM_BEE:
			return sizeof(FirmMonsterTrain);

		case FIRM_TERMITE:
			return sizeof(FirmMonsterTrain);

		case FIRM_LISHORR:
		case FIRM_WILDE_LISHORR:
			return sizeof(FirmLishorr);

		case FIRM_ALCHEMY:
			return sizeof(FirmMonsterAlchemy);

		case FIRM_INCUBATOR:
			return sizeof(FirmIncubator);

		case FIRM_ANIMAL:
			return sizeof(FirmAnimal);

		case FIRM_FORTRESS:
			return sizeof(FirmMonsterFortress);

		case FIRM_MAGIC:
			return sizeof(FirmMagic);

		case FIRM_OFFENSIVE_BUILDING_1:
		case FIRM_OFFENSIVE_BUILDING_2:
		case FIRM_OFFENSIVE_BUILDING_4:
			return sizeof(FirmOffensive);

		case FIRM_OFFENSIVE_BUILDING_3:
			return sizeof(FirmOffensive2);

		default:
			err_now( "FirmArray::firm_class_size" );
	}

	return 0;
}