示例#1
0
int festring::SplitString(const festring& Source,
                          std::vector<festring>& StringVector,
                          sizetype Length, sizetype Marginal)
{
    if(!Length)
        ABORT("Illegal Length 0 passed to festring::SplitString()!");

    if(Marginal >= Length)
        ABORT("Illegal festring::SplitString() call:"
              "Marginal must be less than Length!");

    festring CopyOfSource(Source);

    if(StringVector.empty())
        StringVector.push_back(festring());
    else
        StringVector[0].Empty();

    SplitString(CopyOfSource, StringVector[0], Length);
    sizetype Size = 1;

    while(!CopyOfSource.IsEmpty())
    {
        if(StringVector.size() <= Size)
            StringVector.push_back(festring());

        festring& String = StringVector[Size++];
        String.Assign(Marginal, ' ');
        SplitString(CopyOfSource, String, Length - Marginal);
    }

    return Size;
}
示例#2
0
文件: iconf.cpp 项目: znation/ivan
void ivanconfig::Initialize()
{
  configsystem::AddOption(&DefaultName);
  configsystem::AddOption(&DefaultPetName);
  configsystem::AddOption(&AutoSaveInterval);
  configsystem::AddOption(&Contrast);
  configsystem::AddOption(&WarnAboutDanger);
  configsystem::AddOption(&AutoDropLeftOvers);
  configsystem::AddOption(&LookZoom);
  configsystem::AddOption(&UseAlternativeKeys);
#ifndef __DJGPP__
  configsystem::AddOption(&FullScreenMode);
#endif
#if defined(WIN32) || defined(__DJGPP__)
  configsystem::SetConfigFileName("ivan.cfg");
#else
  configsystem::SetConfigFileName(festring(getenv("HOME")) + "/.ivan.conf");
#endif
  configsystem::Load();
  CalculateContrastLuminance();
}
示例#3
0
文件: hscore.cpp 项目: znation/ivan
truth highscore::Add(long NewScore, const festring& NewEntry,
		     time_t NewTime, long NewRandomID)
{
  for(uint c = 0; c < Score.size(); ++c)
    if(Score[c] < NewScore)
    {
      Entry.insert(Entry.begin() + c, NewEntry);
      Score.insert(Score.begin() + c, NewScore);
      Time.insert(Time.begin() + c, NewTime);
      RandomID.insert(RandomID.begin() + c, NewRandomID);

      if(Score.size() > MAX_HIGHSCORES)
      {
	Entry.resize(MAX_HIGHSCORES, festring());
	Score.resize(MAX_HIGHSCORES);
	Time.resize(MAX_HIGHSCORES);
	RandomID.resize(MAX_HIGHSCORES);
      }

      LastAdd = c;
      return true;
    }

  if(Score.size() < MAX_HIGHSCORES)
  {
    LastAdd = Score.size();
    Entry.push_back(NewEntry);
    Score.push_back(NewScore);
    Time.push_back(NewTime);
    RandomID.push_back(NewRandomID);
    return true;
  }
  else
  {
    LastAdd = MAX_HIGHSCORES;
    return false;
  }
}
示例#4
0
文件: mihail.cpp 项目: AdrianGin/ivan
int OutputHTML(festring InputFilename)
{
  highscore Input;
  Input.Load(InputFilename);
  std::cout << "<TABLE BORDER=3> \n <TR> <TH>Rank</TH> <TH>Who</TH> <TH>Score</TH>\n";

  for(int c = 0; c < Input.GetSize();++c)
  {
    festring Rank,Score;
    Score << Input.GetScore(c);
    Rank << c + 1 << festring(".");
    std::cout
      << std::string("<TR> <TD>")
      << Rank.CStr()
      << std::string("</TD> <TD>")
      << Input.GetEntry(c).CStr()
      << std::string("</TD> <TD>")
      << Score.CStr()
      << std::string("</TD> </TR>\n");
  }
  std::cout << "</TABLE>";
  return 0;
}
示例#5
0
文件: audio.cpp 项目: Azba/ivan
int audio::Loop(void *ptr)
{

   std::vector<unsigned char> message;
   // Note On: 144, 64, 90

   while(1)
   {
      if( Tracks.size() && (PlaybackState & PLAYING) )
      {
         isTrackPlaying = true;
         int randomIndex = rand() % Tracks.size();
         CurrentTrack = Tracks[randomIndex]->GetFilename();

         festring MusDir = game::GetMusicDir();
         festring MusFile = MusDir + festring(CurrentTrack);

         PlayMIDIFile( (char*)MusFile.CStr(), 1);
      }
      isTrackPlaying = false;
      SDL_Delay(1);
   }
   return 0;
}
示例#6
0
文件: main.cpp 项目: murlock/ivan
int Main(int argc, char **argv)
{
  if(argc > 1 && festring(argv[1]) == "--version")
  {
    std::cout << "Iter Vehemens ad Necem version " << IVAN_VERSION << std::endl;
    return 0;
  }

#ifdef __DJGPP__

  /* Saves numlock state and toggles it off */

  char ShiftByteState = _farpeekb(_dos_ds, 0x417);
  _farpokeb(_dos_ds, 0x417, 0);

#endif /* __DJGPP__ */

  femath::SetSeed(time(0));
  game::InitGlobalValueMap();
  scriptsystem::Initialize();
  databasesystem::Initialize();
  game::InitLuxTable();
  ivanconfig::Initialize();
  igraph::Init();
  game::CreateBusyAnimationCache();
  globalwindowhandler::SetQuitMessageHandler(game::HandleQuitMessage);
  msgsystem::Init();
  protosystem::Initialize();
  igraph::LoadMenu();

  for(;;)
  {
    int Select = iosystem::Menu(igraph::GetMenuGraphic(),
				v2(RES.X / 2, RES.Y / 2 - 20),
				CONST_S("\r"),
				CONST_S("Start Game\rContinue Game\r"
					"Configuration\rHighscores\r"
					"Quit\r"),
				LIGHT_GRAY,
				CONST_S("Released under the GNU\r"
					"General Public License\r"
					"More info: see COPYING\r"),
				CONST_S("IVAN v" IVAN_VERSION "\r"));

    switch(Select)
    {
     case 0:
      if(game::Init())
      {
	igraph::UnLoadMenu();

	game::Run();
	game::DeInit();
	igraph::LoadMenu();
      }

      break;
     case 1:
      {
	festring LoadName = iosystem::ContinueMenu(WHITE, LIGHT_GRAY, game::GetSaveDir());

	if(LoadName.GetSize())
	{
	  LoadName.Resize(LoadName.GetSize() - 4);

	  if(game::Init(LoadName))
	  {
	    igraph::UnLoadMenu();
	    game::Run();
	    game::DeInit();
	    igraph::LoadMenu();
	  }
	}

	break;
      }
     case 2:
      ivanconfig::Show();
      break;
     case 3:
      {
	highscore HScore;
	HScore.Draw();
	break;
      }
     case 4:

#ifdef __DJGPP__

      /* Loads numlock state */

      _farpokeb(_dos_ds, 0x417, ShiftByteState);

#endif

      return 0;
    }
  }
}
示例#7
0
文件: mihail.cpp 项目: AdrianGin/ivan
int main(int argc, char** argv)
{
  if(argc == 3)
  {
    festring Arg = festring(argv[1]);

    if(Arg == "-l")
    {
      highscore Input(argv[2]);

      if(!Input.GetSize()) {
        std::cout << "No games. No winners.\n";
      }
      std::cout << std::endl;

      for(festring::sizetype c = 0; c < Input.GetSize(); ++c)
        std::cout << c + 1 << " " << Input.GetEntry(c).CStr() << " " << Input.GetScore(c) << "\n";

      return 0;
    } else if(Arg == "-h")
    {
      return OutputHTML(argv[2]);
    }
    else if(Arg == "-d")
    {
      if(!DebugDraw(argv[2]))
      {
        std::cout << "\nProblem showing version number\n";
        return 1;
      }
      return 0;
    }
    else
      return 1;
  }

  if(argc == 4)
  {
    highscore Input;
    Input.Load(argv[1]);

    if(!Input.CheckVersion())
    {
      std::cout << "Version check not ok with " << argv[1] << std::endl;
      return 2;
    }

    highscore Output;
    Output.Load(argv[2]);

    if(!Output.CheckVersion())
    {
      std::cout << "Version check not ok with " << argv[2] << std::endl;
      return 2;
    }
    if(!Input.MergeToFile(&Output))
      std::cout << "\n All entries also found in " << argv[2] << ". Oh well.\n";

    Output.Save(argv[3]);
    return 0;
  }

  std::cout << "\nTo list scores in highscore file:\n"
               "    mihail -l [filename]"
               "\n\nTo merge 2 files\n"
               "    mihail [1st input filename] [2nd input filename] [output filename]"
               "\n\nTo give version number of highscore file\n"
               "    mihail -d [filename]\n"
               "Notice that first filename in merges gives also version number\n";
  return 1;
}