Beispiel #1
0
/************************************************************
All arrow keypresses are handled in this function
**************************************************************/
void handleSpecialKeys(int key, int x, int y)							
{
	
	lua_State *pLuaControl = lua_open();

	createLuaState(pLuaControl, "scripts/control.lua");
	
		switch(key) 
		{
			case GLUT_KEY_LEFT :
					if(mines[startX-1][startY]!= 'B')
					startX = moveX(1,startX,pLuaControl);				// passing 1 tells Lua the function its a "-"
					break;
			case GLUT_KEY_RIGHT : 
					if(mines[startX+1][startY]!= 'B')
					startX = moveX(2,startX,pLuaControl);				// passing 2 tells Lua the function its a "+"
					break;
			case GLUT_KEY_DOWN : 
					if(mines[startX][startY-1]!= 'B')
					startY = moveY(1,startY,pLuaControl);
					break;
			case GLUT_KEY_UP : 
					if(mines[startX][startY+1]!= 'B')
					startY = moveY(2,startY,pLuaControl);
					break;
		}

		glutPostRedisplay();
}
Beispiel #2
0
Engine::Engine()
{
    Sanguosha = this;

    addPackage(NewMeleeCard());
    addPackage(NewExclusiveCard());
    addPackage(NewMeleeSS());
    addPackage(NewMeleeDS());
    addPackage(NewMeleeSF());

    //addScenario(NewGuanduScenario());
    //addScenario(NewFanchengScenario());
    //addScenario(NewCoupleScenario());
    //addScenario(NewHongyanScenario());
    //addScenario(NewZombieScenario());
    //addScenario(NewLegendScenario());
    //addScenario(NewImpasseScenario());

    // available game modes
    modes["02p"] = tr("2 players");
    //modes["02pbb"] = tr("2 players (using blance beam)");
    modes["02_1v1"] = tr("2 players (KOF style)");
    modes["03p"] = tr("3 players");
    modes["04p"] = tr("4 players");
    // modes["04_1v3"] = tr("4 players (Hulao Pass)");
    modes["05p"] = tr("5 players");
    modes["06p"] = tr("6 players");
    modes["06pd"] = tr("6 players (2 renegades)");
    modes["06_3v3"] = tr("6 players (3v3)");
    modes["07p"] = tr("7 players");
    modes["08p"] = tr("8 players");
    modes["08pd"] = tr("8 players (2 renegades)");
    // modes["08boss"] = tr("8 players (boss mode)");
    // modes["08same"] = tr("8 players (same mode)");
    modes["09p"] = tr("9 players");
    modes["10p"] = tr("10 players");

    //challenge_mode_set = NULL;
    challenge_mode_set = new ChallengeModeSet(this);
    //addPackage(challenge_mode_set);

    // translations.insert("bossmode", tr("Boss mode"));

    connect(qApp, SIGNAL(aboutToQuit()), this, SLOT(deleteLater()));

    QString error_msg;
    lua = createLuaState(false, error_msg);
    if(lua == NULL){
        QMessageBox::warning(NULL, tr("Lua script error"), error_msg);
        exit(1);
    }
}
Beispiel #3
0
void LuaInterface::init()
{
    createLuaState();

    // check if demangle_type is working as expected
    assert(Fw::demangleType<LuaObject>() == "LuaObject");

    // register LuaObject, the base of all other objects
    registerClass<LuaObject>();
    bindClassMemberFunction<LuaObject>("getUseCount", &LuaObject::getUseCount);
    bindClassMemberFunction<LuaObject>("getClassName", &LuaObject::getClassName);

    registerClassMemberFunction<LuaObject>("getFieldsTable", (LuaCppFunction) ([](LuaInterface* lua) {
        LuaObjectPtr obj = g_lua.popObject();
        obj->luaGetFieldsTable();
        return 1;
    }));
}
Beispiel #4
0
void LuaInterface::init()
{
    createLuaState();

    // store global environment reference
    pushThread();
    getEnv();
    m_globalEnv = ref();
    pop();

    // check if demangle_class is working as expected
    assert(stdext::demangle_class<LuaObject>() == "LuaObject");

    // register LuaObject, the base of all other objects
    registerClass<LuaObject>();
    bindClassMemberFunction<LuaObject>("getUseCount", &LuaObject::getUseCount);
    bindClassMemberFunction<LuaObject>("getClassName", &LuaObject::getClassName);

    registerClassMemberFunction<LuaObject>("getFieldsTable", (LuaCppFunction) ([](LuaInterface* lua) -> int {
        LuaObjectPtr obj = g_lua.popObject();
        obj->luaGetFieldsTable();
        return 1;
    }));
}
Beispiel #5
0
Engine::Engine()
{
    Sanguosha = this;

    QStringList package_names;
    package_names << "StandardCard"
                  << "StandardExCard"
                  << "Maneuvering"
                  << "SPCard"
                  << "YitianCard"
                  << "Nostalgia"
                  << "Joy"
                  << "Disaster"
                  << "JoyEquip"
                  << "DishaCard"
                  << "QHSEquip"
                  << "Hide"

                  << "Standard"
                  << "Wind"
                  << "Fire"
                  << "Thicket"
                  << "Mountain"
                  << "God"
                  << "SP"
                  << "YJCM"
                  << "YJCM2012"
                  << "Special3v3"
                  << "BGM"
                  << "Yitian"
                  << "Wisdom"
                  << "Huangjin"
                  << "Ghost"
                  << "QHS"
                  << "YJ1st"
                  << "TBdiy"
                  << "Yan"
                  << "ChangbanSlope"
                  << "Test" ;

    foreach(QString name, package_names)
        addPackage(name);

    QStringList scene_names;
    scene_names << "Guandu"
                << "Fancheng"
                << "Couple"
                << "Zombie"
                << "Impasse"
                << "Custom";

    for(int i=1; i<=21; i++){
        scene_names << QString("MiniScene_%1").arg(i, 2, 10, QChar('0'));
    }

    foreach(QString name, scene_names)
        addScenario(name);

    foreach(const Skill *skill, skills.values()){
        Skill *mutable_skill = const_cast<Skill *>(skill);
        mutable_skill->initMediaSource();
    }

    // available game modes
    modes["02p"] = tr("2 players");
    //modes["02pbb"] = tr("2 players (using blance beam)");
    modes["02_1v1"] = tr("2 players (KOF style)");
    modes["03p"] = tr("3 players");
    modes["04p"] = tr("4 players");
    modes["04_1v3"] = tr("4 players (Hulao Pass)");
    modes["05p"] = tr("5 players");
    modes["05_2v3"] = tr("5 players (Changban Slope)");
    modes["06p"] = tr("6 players");
    modes["06pd"] = tr("6 players (2 renegades)");
    modes["06_3v3"] = tr("6 players (3v3)");
    modes["07p"] = tr("7 players");
    modes["08p"] = tr("8 players");
    modes["08pd"] = tr("8 players (2 renegades)");
    modes["08pz"] = tr("8 players (0 renegade)");
    modes["08same"] = tr("8 players (same mode)");
    modes["09p"] = tr("9 players");
    modes["10pd"] = tr("10 players");
    modes["10p"] = tr("10 players (1 renegade)");
    modes["10pz"] = tr("10 players (0 renegade)");

    connect(qApp, SIGNAL(aboutToQuit()), this, SLOT(deleteLater()));

    QString error_msg;
    lua = createLuaState(false, error_msg);
    if(lua == NULL){
        QMessageBox::warning(NULL, tr("Lua script error"), error_msg);
        exit(1);
    }

    foreach(QString ban, getBanPackages()){
        addBanPackage(ban);
    }
Beispiel #6
0
extern
cl_program clCreateProgramWithSource (cl_context context,
                                      cl_uint count,
                                      const char **strings,
                                      const size_t *lengths,
                                      cl_int *errcode_ret)
{
  PRINT_DEBUG("\n====\tCreating program with source\t====\n");

  if(context == NULL || context == (cl_context)0)
    {
      setErrCode(errcode_ret, CL_INVALID_CONTEXT);
      return (cl_program)0;
    }

  
  if(lengths == NULL || strings == NULL || count <= 0)
    {
      setErrCode(errcode_ret, CL_INVALID_VALUE);
      return (cl_program)0;
    }

  FILE *outputFile;
  time_t seconds;
  seconds = time (NULL);
  char fileName[33];

  //convert integer to string
  sprintf(fileName,"%ld.c",seconds);

  PRINT_DEBUG("Creating file %s ...\n", fileName);
  
  if( (outputFile = fopen(fileName, "w")) == NULL)
    {
      fprintf(stderr, "Error opening file.\n");
      return (cl_program)0;
    }

  PRINT_DEBUG("File created successfully\n");
  PRINT_DEBUG("Writing to file ...\n");

  int i;
  size_t sumSourceSize = 0;
  for(i=0; i<count; i++)
    {
      fputs(strings[i], outputFile);
      sumSourceSize += lengths[i];
    }

  //close file so Lua can open it
  fclose(outputFile);

  PRINT_DEBUG("Finished writing to file.\n");

  cl_program program = malloc(sizeof(struct _cl_program));
  program->program_ref_count = 1;

  program->program_context = context;
  clRetainContext(context);

  program->program_num_devices = 0;
  program->program_devices = NULL;

  PRINT_DEBUG("Allocating memory for program_source\n");

  program->program_source = malloc(sumSourceSize);

  PRINT_DEBUG("Concatanating strings together...\n");
  //copy the first string and concat the rest
  strcpy(program->program_source, strings[0]);
  for(i=1; i<count; i++)
    {
      strcat(program->program_source, strings[i]);
    }

  lua_State *L = createLuaState();

  PRINT_DEBUG("Loading kernel file %s...\n", fileName);
  loadKernelFile(L, fileName);

  char *kernelName;
  int numArgs;

  loadNextKernel(L, &kernelName, &numArgs);

  if(numArgs < 0 || kernelName == NULL)
    {
      PRINT_DEBUG("ERROR:numArgs returned less than zero\n");
      setErrCode(errcode_ret, CL_INVALID_VALUE);
      return (cl_program)0;
    }

  
  // TODO: This next section is a bit messy.
  // It should be cleaned up.
  // Generating the linked list and then copying the data could
  //  be put into separate functions.

  //temporary linked list struct
  struct list_element {
    char *funcName;
    int numArgs;
    struct list_element * next;
  };

  struct list_element *head, *curr;

  head = NULL;

  int numKernels = 0;
  while(kernelName != NULL)
    {
      PRINT_DEBUG("Kernel name: %s  Num args: %d\n", kernelName, numArgs);

      numKernels++;

      curr = malloc(sizeof(struct list_element));
      curr->funcName = malloc(strlen(kernelName));
      strcpy(curr->funcName, kernelName);
      //free(kernelName);
      
      curr->numArgs = numArgs;
      curr->next = head;
      head = curr;
      
      loadNextKernel(L, &kernelName, &numArgs);
    }

  lua_close(L);
  //TODO: Delete the temporary file

  curr = head;

  PRINT_DEBUG("Transfering func names to program object\n");

  program->program_num_kernels = numKernels;
  program->program_kernel_names = malloc(numKernels * sizeof(char*));
  program->program_kernel_num_args = malloc(numKernels * sizeof(int));

  i=0;
  while(curr)
    {
      program->program_kernel_names[i] = malloc(strlen(curr->funcName));
      strcpy(program->program_kernel_names[i],curr->funcName);
      
      program->program_kernel_num_args[i] = curr->numArgs;

      //the structs should be freed
      curr = curr->next;
    }


  //TODO: This function probably has a bunch of memory leaks.
  PRINT_DEBUG("\n====\tReturn program  \t====\n");

  return program;

}
Beispiel #7
0
Engine::Engine()
{
    Sanguosha = this;

    lib = new QLibrary(qApp->applicationFilePath(), this);
    if(!lib->load()){
        qWarning("Package can not be loaded \n Error string: %s", qPrintable(lib->errorString()));
        exit(1);
    }

    QStringList package_names;
    package_names << "Standard"
                  << "Wind"
                  << "Fire"
                  << "Thicket"
                  << "Mountain"
                  << "God"
                  << "SP"
                  << "YJCM"
                  << "BGM"
                  << "Yitian"
                  << "Wisdom"
                  << "Test"

                  << "StandardCard"
                  << "StandardExCard"
                  << "Maneuvering"
                  << "SPCard"
                  << "YitianCard"
                  << "Nostalgia"
                  << "Joy"
                  << "Disaster"
                  << "JoyEquip";

    foreach(QString name, package_names)
        addPackage(name);

    QStringList scene_names;
    scene_names << "GuanduScenario"
                << "FanchengScenario"
                << "CoupleScenario"
                << "ZombieScenario"
                << "ImpasseScenario"
                << "CustomScenario";

    for(int i=1; i<=20; i++){
        scene_names << QString("MiniScene_%1").arg(i, 2, 10, QChar('0'));
    }

    foreach(QString name, scene_names)
        addScenario(name);

    // available game modes
    modes["02p"] = tr("2 players");
    //modes["02pbb"] = tr("2 players (using blance beam)");
    modes["02_1v1"] = tr("2 players (KOF style)");
    modes["03p"] = tr("3 players");
    modes["04p"] = tr("4 players");
    modes["04_1v3"] = tr("4 players (Hulao Pass)");
    modes["05p"] = tr("5 players");
    modes["06p"] = tr("6 players");
    modes["06pd"] = tr("6 players (2 renegades)");
    modes["06_3v3"] = tr("6 players (3v3)");
    modes["07p"] = tr("7 players");
    modes["08p"] = tr("8 players");
    modes["08pd"] = tr("8 players (2 renegades)");
    modes["08same"] = tr("8 players (same mode)");
    modes["09p"] = tr("9 players");
    modes["10p"] = tr("10 players");

    connect(qApp, SIGNAL(aboutToQuit()), this, SLOT(deleteLater()));

    QString error_msg;
    lua = createLuaState(false, error_msg);
    if(lua == NULL){
        QMessageBox::warning(NULL, tr("Lua script error"), error_msg);
        exit(1);
    }

    foreach(QString ban, getBanPackages()){
        addBanPackage(ban);
    }
Beispiel #8
0
Engine::Engine()
{
    Sanguosha = this;

    addPackage(NewStandard());
    addPackage(NewWind());
    addPackage(NewFire());
    addPackage(NewThicket());
    addPackage(NewMountain());
    addPackage(NewGod());
    addPackage(NewSP());
    addPackage(NewYJCM());
    addPackage(NewYitian());
    // addPackage(NewWisdom());
    addPackage(NewTest());

    addPackage(NewStandardCard());
    addPackage(NewStandardExCard());
    addPackage(NewManeuvering());
    addPackage(NewYitianCard());
    addPackage(NewNostalgia());
    addPackage(NewJoy());
    addPackage(NewDisaster());
    addPackage(NewJoyEquip());

    addScenario(NewGuanduScenario());
    addScenario(NewFanchengScenario());
    addScenario(NewCoupleScenario());
    addScenario(NewHongyanScenario());
    addScenario(NewZombieScenario());
    addScenario(NewLegendScenario());
    addScenario(NewImpasseScenario());

    // available game modes
    modes["02p"] = tr("2 players");
    //modes["02pbb"] = tr("2 players (using blance beam)");
    modes["02_1v1"] = tr("2 players (KOF style)");
    modes["03p"] = tr("3 players");
    modes["04p"] = tr("4 players");
    modes["04_1v3"] = tr("4 players (Hulao Pass)");
    modes["05p"] = tr("5 players");
    modes["06p"] = tr("6 players");
    modes["06pd"] = tr("6 players (2 renegades)");
    modes["06_3v3"] = tr("6 players (3v3)");
    modes["07p"] = tr("7 players");
    modes["08p"] = tr("8 players");
    modes["08pd"] = tr("8 players (2 renegades)");
    modes["08boss"] = tr("8 players (boss mode)");
    modes["08same"] = tr("8 players (same mode)");
    modes["09p"] = tr("9 players");
    modes["10p"] = tr("10 players");

    //challenge_mode_set = NULL;
    challenge_mode_set = new ChallengeModeSet(this);
    //addPackage(challenge_mode_set);

    translations.insert("bossmode", tr("Boss mode"));

    connect(qApp, SIGNAL(aboutToQuit()), this, SLOT(deleteLater()));

    QString error_msg;
    lua = createLuaState(false, error_msg);
    if(lua == NULL){
        QMessageBox::warning(NULL, tr("Lua script error"), error_msg);
        exit(1);
    }
}