示例#1
0
void IgorEngine::PART_19() {
	_gameState.enableLight = 1;
	loadRoomData(PAL_WomenToilets, IMG_WomenToilets, BOX_WomenToilets, MSK_WomenToilets, TXT_WomenToilets);
	static const int anm[] = { FRM_WomenToilets1, FRM_WomenToilets2, FRM_WomenToilets3, FRM_WomenToilets4, FRM_WomenToilets5, 0 };
	loadAnimData(anm);
	loadActionData(DAT_WomenToilets);
	_roomDataOffsets = PART_19_ROOM_DATA_OFFSETS;
	setRoomWalkBounds(0, 0, 319, 143);
	if (_currentPart == 191) {
		PART_19_HELPER_2();
	} else {
		SET_EXEC_ACTION_FUNC(1, &IgorEngine::PART_19_EXEC_ACTION);
		PART_19_HELPER_1(255);
	}
	memcpy(_screenVGA, _screenLayer1, 46080);
	_currentAction.verb = kVerbWalk;
	fadeInPalette(768);
	PART_19_HELPER_3();
	if (_objectsState[59] == 0) {
		PART_19_HELPER_4();
	} else {
		enterPartLoop();
		while (_currentPart == 190) {
			runPartLoop();
		}
		leavePartLoop();
	}
	fadeOutPalette(624);
}
示例#2
0
void IgorEngine::PART_25() {
	_gameState.enableLight = 2;
	loadRoomData(PAL_CollegeCorridorAnnouncementBoard, IMG_CollegeCorridorAnnouncementBoard, BOX_CollegeCorridorAnnouncementBoard, MSK_CollegeCorridorAnnouncementBoard, TXT_CollegeCorridorAnnouncementBoard);
	static const int anm[] = { FRM_CollegeCorridorAnnouncementBoard1, FRM_CollegeCorridorAnnouncementBoard2, 0 };
	loadAnimData(anm);
	loadActionData(DAT_CollegeCorridorAnnouncementBoard);
	_roomDataOffsets = PART_25_ROOM_DATA_OFFSETS;
	setRoomWalkBounds(0, 0, 319, 143);
	SET_EXEC_ACTION_FUNC(1, &IgorEngine::PART_25_EXEC_ACTION);
	PART_25_HELPER_1(255);
	memcpy(_screenVGA, _screenLayer1, 46080);
	_currentAction.verb = kVerbWalk;
	fadeInPalette(768);
	if (_currentPart == 250) {
		PART_25_HELPER_2();
	} else if (_currentPart == 251) {
		PART_25_HELPER_3();
	} else if (_currentPart == 252) {
		PART_25_HELPER_4();
	}
	enterPartLoop();
	while (_currentPart >= 250 && _currentPart <= 252) {
		runPartLoop();
	}
	leavePartLoop();
	fadeOutPalette(624);
}
示例#3
0
const AnimationData* ResourceLoader::anim(string name)
{
	auto anim = animations.find(name);
	if (anim == animations.end()) {
		pugi::xml_document animXml;
		string path = root + name;
		animXml.load_file(path.c_str());
		if (animXml.begin() == animXml.end()) {
			// Couldn't open .anim file!
			std::cerr << "ERROR: couldn't load animation \"" << path << "\"\n";
			return &AnimationData::defaultAnim;
		}
		pugi::xml_node node = animXml.child("animations");
		string sheetName = animXml.first_child().first_attribute().as_string();
		const SpriteSheet* sheet = sh(sheetName);
		if (sheet == nullptr) {
			std::cerr << "\t(requested by \"" << path << "\")\n";
			return &AnimationData::defaultAnim;
		}
		AnimationData& aData = animations[name];
		if (!loadAnimData(aData, animXml, sheet)) {
			animations.erase(animations.find(name));
			std::cerr << "\t(requested by \"" << path << "\")\n";
			return &AnimationData::defaultAnim;
		}
		const sf::Texture* texture = tex(sheet->imageName);
		if (texture == nullptr) {
			std::cerr << "\t(requested by \"" << path << "\")\n";
			return &AnimationData::defaultAnim;
		}
		aData.tx = texture;
		return &aData;
	}
	return &anim->second;
}
void AnimLoader::loadAnimDataArray(CCArray* animArray)
{
	int count = animArray->count();
	for (int i = 0; i < count; i++)
	{
		CCString* resName = (CCString*)animArray->objectAtIndex(i);
		loadAnimData(resName->getCString());
	}
}
示例#5
0
 const AnimData* AnimResManager::getAnimData(const char *aniFileName)
 {
     const AnimData *pAnimData = findAnimData(aniFileName);
     if (!pAnimData)
     {
         pAnimData = loadAnimData(aniFileName);
         if (pAnimData)
             m_AnimData.push_back(Pair(pAnimData, aniFileName));
     }
     return pAnimData;
 }
示例#6
0
void IgorEngine::loadResourceData__ANIM_MenToilets() {
	static const int anm[] = { FRM_MenToilets1, FRM_MenToilets2, 0 };
	loadAnimData(anm);
}
示例#7
0
bool TileManager::loadTiles()
{
 std::string maptiles_path, masktype_path, path;
 NuvieIOFileRead objtiles_vga;
 NuvieIOFileRead tileindx_vga;
 NuvieIOFileRead file;
 U6Lib_n lib_file;
 U6Lzw *lzw;
 uint32 tile_offset;

 unsigned char *tile_data = NULL;
 uint32 maptiles_size = 0;
 uint32 objtiles_size;

 unsigned char *masktype = NULL;
 uint32 masktype_size;
 uint16 i;

 Dither *dither;
 
 dither = Game::get_game()->get_dither();
 

 config_get_path(config,"maptiles.vga",maptiles_path);
 config_get_path(config,"masktype.vga",masktype_path);

 lzw = new U6Lzw();

 switch(game_type)
   {
    case NUVIE_GAME_U6 :
                         tile_data = lzw->decompress_file(maptiles_path,maptiles_size);
                         if(tile_data == NULL)
                         {
                            ConsoleAddError("Decompressing " + maptiles_path);
                            return false;
                         }

                         masktype = lzw->decompress_file(masktype_path,masktype_size);
                         if(masktype == NULL)
                         {
                        	 ConsoleAddError("Decompressing " + masktype_path);
                        	 return false;
                         }
                         break;
    case NUVIE_GAME_MD :
    case NUVIE_GAME_SE : if(lib_file.open(maptiles_path,4,game_type) == false)
                         {
                             ConsoleAddError("Opening " + maptiles_path);
                             return false;
                         }
                         maptiles_size = lib_file.get_item_size(0);

                         tile_data = lib_file.get_item(0);
                         lib_file.close();

                         if(lib_file.open(masktype_path,4,game_type) == false)
                         {
                        	 ConsoleAddError("Opening " + masktype_path);
                        	 return false;
                         }
                         //masktype_size = lib_file.get_item_size(0);

                         masktype = lib_file.get_item(0);
                         lib_file.close();
                         break;
   }

 if(tile_data == NULL)
 {
   ConsoleAddError("Loading maptiles.vga");
   return false;
 }

 if(masktype == NULL)
 {
   ConsoleAddError("Loading masktype.vga");
   return false;
 }

 config_get_path(config,"objtiles.vga",path);
 if(objtiles_vga.open(path) == false)
 {
	 ConsoleAddError("Opening " + path);
	 return false;
 }

 objtiles_size = objtiles_vga.get_size();

 tile_data = (unsigned char *)nuvie_realloc(tile_data,maptiles_size + objtiles_size);

 objtiles_vga.readToBuf(&tile_data[maptiles_size], objtiles_size);

 config_get_path(config,"tileindx.vga",path);

 if(tileindx_vga.open(path) == false)
 {
	 ConsoleAddError("Opening " + path);
	 return false;
 }

 for(i=0;i<2048;i++)
  {
   tile_offset = tileindx_vga.read2() * 16;
   tile[i].tile_num = i;

   tile[i].transparent = false;

   switch(masktype[i])
    {
     case U6TILE_TRANS : tile[i].transparent = true;
                         memcpy(tile[i].data, &tile_data[tile_offset], 256);
                         break;

     case U6TILE_PLAIN : memcpy(tile[i].data, &tile_data[tile_offset], 256);
                         break;

     case U6TILE_PBLCK : tile[i].transparent = true;
                         decodePixelBlockTile(&tile_data[tile_offset],i);
                         break;
    }

   dither->dither_bitmap(tile[i].data,16,16,tile[i].transparent);
   
   tileindex[i] = i; //set all tile indexs to default value. this is changed in update() for animated tiles
  }

 loadAnimData();
 loadTileFlag();

 free(masktype);
 free(tile_data);

 look = new Look(config);
 if(look->init() == false)
 {
   ConsoleAddError("Initialising Look Class");
   return false;
 }

 desc_buf = (char *)malloc(look->get_max_len() + 6); // add space for "%03d \n\0" or "the \n\0"
 if(desc_buf == NULL)
 {
   ConsoleAddError("Allocating desc_buf");
   return false;
 }

 loadAnimMask();

#ifdef TILEMANAGER_DEBUG

 look->print();

 DEBUG(0,LEVEL_DEBUGGING,"Dumping tile flags:");
 for(i=0;i<2048;i++)
  {
   bool plural;
   DEBUG(1,LEVEL_DEBUGGING,"%04d : ",i);
   print_b(LEVEL_DEBUGGING, tile[i].flags1);
   DEBUG(1,LEVEL_DEBUGGING," ");
   print_b(LEVEL_DEBUGGING, tile[i].flags2);
   DEBUG(1,LEVEL_DEBUGGING," ");
   print_b(LEVEL_DEBUGGING, tile[i].flags3);
   DEBUG(1,LEVEL_DEBUGGING," %s\n",look->get_description(i,&plural));
  }
#endif

 delete lzw;

 return true;
}
示例#8
0
void IgorEngine::PART_85() {
	playMusic(2);
	loadRoomData(PAL_SpringRock, IMG_SpringRock, BOX_SpringRock, MSK_SpringRock, TXT_SpringRock);
	memcpy(_screenLayer2, _screenLayer1, 46080);
	loadRoomData(PAL_SpringBridgeIntro, IMG_SpringBridgeIntro, 0, 0, TXT_SpringBridgeIntro);
	static const int anm[] = { ANM_PhilipLauraIntro, AOF_PhilipLauraIntro, ANM_LauraIntro, AOF_LauraIntro, 0 };
	loadAnimData(anm);
	memcpy(_screenVGA, _screenLayer1, 46080);
	_updateDialogue = &IgorEngine::PART_85_UPDATE_DIALOGUE_PHILIP_LAURA;
	_updateRoomBackground = &IgorEngine::PART_85_UPDATE_ROOM_BACKGROUND;
	VAR_WATER_SOUND_PLAYING = true;
	playSound(17, 1);
	decodeAnimFrame(getAnimFrame(0, 0x7480, 1), _screenVGA, true);
	fadeInPalette(768);
	if (_inputVars[kInputEscape]) goto PART_85_EXIT;
	PART_85_HELPER_1(0, 0x7481, 2, 7, 32);
	if (_inputVars[kInputEscape]) goto PART_85_EXIT;
	ADD_DIALOGUE_TEXT(201, 3, 545);
	ADD_DIALOGUE_TEXT(204, 1, 546);
	SET_DIALOGUE_TEXT(1, 2);
	startCutsceneDialogue(89, 56, 63, 63, 0);
	VAR_CURRENT_TALKING_ACTOR = 0;
	waitForEndOfCutsceneDialogue(89, 56, 63, 63, 0);
	if (_inputVars[kInputEscape]) goto PART_85_EXIT;
	ADD_DIALOGUE_TEXT(205, 3, 547);
	SET_DIALOGUE_TEXT(1, 1);
	startCutsceneDialogue(113, 59, 63, 0, 38);
	VAR_CURRENT_TALKING_ACTOR = 1;
	waitForEndOfCutsceneDialogue(113, 59, 63, 0, 38);
	if (_inputVars[kInputEscape]) goto PART_85_EXIT;
	ADD_DIALOGUE_TEXT(208, 1, 548);
	SET_DIALOGUE_TEXT(1, 1);
	startCutsceneDialogue(89, 56, 63, 63, 0);
	VAR_CURRENT_TALKING_ACTOR = 0;
	waitForEndOfCutsceneDialogue(89, 56, 63, 63, 0);
	if (_inputVars[kInputEscape]) goto PART_85_EXIT;
	ADD_DIALOGUE_TEXT(209, 2, 549);
	ADD_DIALOGUE_TEXT(211, 1, 550);
	ADD_DIALOGUE_TEXT(212, 1, 551);
	ADD_DIALOGUE_TEXT(213, 1, 552);
	ADD_DIALOGUE_TEXT(214, 1, 553);
	SET_DIALOGUE_TEXT(1, 5);
	startCutsceneDialogue(113, 59, 63, 0, 38);
	VAR_CURRENT_TALKING_ACTOR = 1;
	waitForEndOfCutsceneDialogue(113, 59, 63, 0, 38);
	if (_inputVars[kInputEscape]) goto PART_85_EXIT;
	PART_85_HELPER_1(0, 0x7481, 2, 7, 32);
	if (_inputVars[kInputEscape]) goto PART_85_EXIT;
	ADD_DIALOGUE_TEXT(215, 1, 554);
	ADD_DIALOGUE_TEXT(216, 2, 555);
	ADD_DIALOGUE_TEXT(218, 1, 556);
	SET_DIALOGUE_TEXT(1, 3);
	startCutsceneDialogue(89, 56, 63, 63, 0);
	VAR_CURRENT_TALKING_ACTOR = 0;
	waitForEndOfCutsceneDialogue(89, 56, 63, 63, 0);
	if (_inputVars[kInputEscape]) goto PART_85_EXIT;
	ADD_DIALOGUE_TEXT(219, 2, 557);
	ADD_DIALOGUE_TEXT(221, 2, 558);
	SET_DIALOGUE_TEXT(1, 2);
	startCutsceneDialogue(113, 59, 63, 0, 38);
	VAR_CURRENT_TALKING_ACTOR = 1;
	waitForEndOfCutsceneDialogue(113, 59, 63, 0, 38);
	if (_inputVars[kInputEscape]) goto PART_85_EXIT;
	decodeAnimFrame(getAnimFrame(0, 0x7480, 1), _screenVGA, true);
	PART_85_HELPER_1(0, 0x7481, 2, 7, 32);
	if (_inputVars[kInputEscape]) goto PART_85_EXIT;
	PART_85_HELPER_1(0, 0x7481, 18, 37, 20);
	if (_inputVars[kInputEscape]) goto PART_85_EXIT;
	PART_85_HELPER_2();
	VAR_WATER_SOUND_PLAYING = false;
	stopSound();
	if (_inputVars[kInputEscape]) goto PART_85_EXIT;
	PART_85_HELPER_1(0x74CA, 0xA6C4, 1, 6, 32);
	if (_inputVars[kInputEscape]) goto PART_85_EXIT;
	for (int i = 0; i <= 200 / kTimerTicksCount; ++i) {
		PART_85_UPDATE_ROOM_BACKGROUND();
		if (_inputVars[kInputEscape]) goto PART_85_EXIT;
		waitForTimer();
	}
	_walkData[0].x = 251;
	_walkData[0].y = 125;
	_walkData[0].scaleWidth = 50;
	_walkDataLastIndex = 1;
	_walkCurrentPos = 4;
	ADD_DIALOGUE_TEXT(223, 2, 559);
	SET_DIALOGUE_TEXT(1, 1);
	startIgorDialogue();
	waitForEndOfIgorDialogue();
	if (_inputVars[kInputEscape]) goto PART_85_EXIT;
	PART_85_HELPER_1(0x74CA, 0xA6C4, 7, 9, 32);
	if (_inputVars[kInputEscape]) goto PART_85_EXIT;
	_walkData[0].x = 250;
	_walkData[0].y = 119;
	_walkCurrentPos = 3;
	ADD_DIALOGUE_TEXT(225, 2, 560);
	ADD_DIALOGUE_TEXT(227, 3, 561);
	SET_DIALOGUE_TEXT(1, 2);
	startIgorDialogue();
	waitForEndOfIgorDialogue();
	if (_inputVars[kInputEscape]) goto PART_85_EXIT;
	PART_85_HELPER_1(0x74CA, 0xA6C4, 10, 24, 16);

PART_85_EXIT:
	stopSound();
	_gameState.dialogueTextRunning = false;
	_inputVars[kInputEscape] = 0;
	_walkData[0].setPos(155, 121, 4, 0);
	_walkData[0].setDefaultScale();
	copyArea(_screenLayer2, 23180, 320, _facingIgorFrames[3], 30, 30, 50, true);
	memcpy(_screenVGA, _screenLayer2, 46080);
	memset(_currentPalette + 0x270, 0, 0x8D);
	setPaletteRange(208, 254);
	_currentPart = 61;
	_updateDialogue = 0;
	_updateRoomBackground = 0;
}