Moved all CBot functions into a separate class

dev-mp
krzys-h 2014-12-20 18:45:46 +01:00
parent af9960d41e
commit 07c651bd0a
6 changed files with 4348 additions and 4275 deletions

View File

@ -166,6 +166,7 @@ set(BASE_SOURCES
script/cbottoken.cpp
script/cmdtoken.cpp
script/script.cpp
script/scriptfunc.cpp
sound/sound.cpp
ui/button.cpp
ui/check.cpp

View File

@ -71,6 +71,7 @@
#include "script/cbottoken.h"
#include "script/cmdtoken.h"
#include "script/script.h"
#include "script/scriptfunc.h"
#include "sound/sound.h"
@ -277,8 +278,8 @@ CRobotMain::CRobotMain(CApplication* app, bool loadProfile)
m_showLimit[i].link = 0;
}
CScript::m_filesDir = CResourceManager::GetSaveLocation()+"/"+m_dialog->GetFilesDir(); //TODO: Refactor to PHYSFS while rewriting CBot engine
CScript::InitFonctions();
CScriptFunctions::m_filesDir = CResourceManager::GetSaveLocation()+"/"+m_dialog->GetFilesDir(); //TODO: Refactor to PHYSFS while rewriting CBot engine
CScriptFunctions::Init();
}
//! Destructor of robot application
@ -4842,7 +4843,7 @@ char* CRobotMain::GetNewScriptName(ObjectType type, int rank)
//! Seeks if an object occupies in a spot, to prevent a backup of the game
bool CRobotMain::IsBusy()
{
if (CScript::m_CompteurFileOpen > 0) return true;
if (CScriptFunctions::m_CompteurFileOpen > 0) return true;
CInstanceManager* iMan = CInstanceManager::GetInstancePointer();

File diff suppressed because it is too large Load Diff

View File

@ -29,16 +29,14 @@
#include "common/global.h"
#include "app/pausemanager.h"
#include "CBot/CBotDll.h"
#include <stdio.h>
class CObject;
class CTaskManager;
class CRobotMain;
class CPauseManager;
class CScriptFunctions;
namespace Ui{
class CEdit;
@ -53,15 +51,17 @@ class CWater;
} /* Gfx */
const int ERM_CONT = 0; // if error -> continue
const int ERM_STOP = 1; // if error -> stop
class CScript
{
friend class CScriptFunctions;
public:
CScript(CObject* object, CTaskManager** secondaryTask);
~CScript();
static void InitFonctions();
void PutScript(Ui::CEdit* edit, const char* name);
bool GetScript(Ui::CEdit* edit);
bool GetCompile();
@ -99,146 +99,6 @@ protected:
bool CheckToken();
bool Compile();
private:
static CBotTypResult cNull(CBotVar* &var, void* user);
static CBotTypResult cOneFloat(CBotVar* &var, void* user);
static CBotTypResult cTwoFloat(CBotVar* &var, void* user);
static CBotTypResult cString(CBotVar* &var, void* user);
static CBotTypResult cStringString(CBotVar* &var, void* user);
static CBotTypResult cEndMission(CBotVar* &var, void* user);
static CBotTypResult cPlayMusic(CBotVar* &var, void* user);
static CBotTypResult cGetObject(CBotVar* &var, void* user);
static CBotTypResult cDelete(CBotVar* &var, void* user);
static CBotTypResult cSearch(CBotVar* &var, void* user);
static CBotTypResult cRadar(CBotVar* &var, void* user);
static CBotTypResult cDetect(CBotVar* &var, void* user);
static CBotTypResult cDirection(CBotVar* &var, void* user);
static CBotTypResult cCanBuild(CBotVar* &var, void* user);
static CBotTypResult cProduce(CBotVar* &var, void* user);
static CBotTypResult cDistance(CBotVar* &var, void* user);
static CBotTypResult cSpace(CBotVar* &var, void* user);
static CBotTypResult cFlatGround(CBotVar* &var, void* user);
static CBotTypResult cGoto(CBotVar* &var, void* user);
static CBotTypResult cGrabDrop(CBotVar* &var, void* user);
static CBotTypResult cReceive(CBotVar* &var, void* user);
static CBotTypResult cSend(CBotVar* &var, void* user);
static CBotTypResult cDeleteInfo(CBotVar* &var, void* user);
static CBotTypResult cTestInfo(CBotVar* &var, void* user);
static CBotTypResult cShield(CBotVar* &var, void* user);
static CBotTypResult cFire(CBotVar* &var, void* user);
static CBotTypResult cAim(CBotVar* &var, void* user);
static CBotTypResult cMotor(CBotVar* &var, void* user);
static CBotTypResult cTopo(CBotVar* &var, void* user);
static CBotTypResult cMessage(CBotVar* &var, void* user);
static CBotTypResult cPenDown(CBotVar* &var, void* user);
static CBotTypResult cOnePoint(CBotVar* &var, void* user);
static CBotTypResult cPoint(CBotVar* &var, void* user);
static CBotTypResult cOneObject(CBotVar* &var, void* user);
static bool rSin(CBotVar* var, CBotVar* result, int& exception, void* user);
static bool rCos(CBotVar* var, CBotVar* result, int& exception, void* user);
static bool rTan(CBotVar* var, CBotVar* result, int& exception, void* user);
static bool rSqrt(CBotVar* var, CBotVar* result, int& exception, void* user);
static bool rPow(CBotVar* var, CBotVar* result, int& exception, void* user);
static bool rRand(CBotVar* var, CBotVar* result, int& exception, void* user);
static bool rAbs(CBotVar* var, CBotVar* result, int& exception, void* user);
static bool rEndMission(CBotVar* var, CBotVar* result, int& exception, void* user);
static bool rPlayMusic(CBotVar* var, CBotVar* result, int& exception, void* user);
static bool rStopMusic(CBotVar* var, CBotVar* result, int& exception, void* user);
static bool rGetBuild(CBotVar* var, CBotVar* result, int& exception, void* user);
static bool rGetResearchEnable(CBotVar* var, CBotVar* result, int& exception, void* user);
static bool rGetResearchDone(CBotVar* var, CBotVar* result, int& exception, void* user);
static bool rSetBuild(CBotVar* var, CBotVar* result, int& exception, void* user);
static bool rSetResearchEnable(CBotVar* var, CBotVar* result, int& exception, void* user);
static bool rSetResearchDone(CBotVar* var, CBotVar* result, int& exception, void* user);
static bool rGetObjectById(CBotVar* var, CBotVar* result, int& exception, void* user);
static bool rGetObject(CBotVar* var, CBotVar* result, int& exception, void* user);
static bool rProgFunc(CBotVar* var, CBotVar* result, int& exception, void* user);
static bool rDelete(CBotVar* var, CBotVar* result, int& exception, void* user);
static bool rSearch(CBotVar* var, CBotVar* result, int& exception, void* user);
static bool rRadar(CBotVar* var, CBotVar* result, int& exception, void* user);
static bool rDetect(CBotVar* var, CBotVar* result, int& exception, void* user);
static bool rDirection(CBotVar* var, CBotVar* result, int& exception, void* user);
static bool rCanBuild(CBotVar* var, CBotVar* result, int& exception, void* user);
static bool rBuild(CBotVar* var, CBotVar* result, int& exception, void* user);
static bool rProduce(CBotVar* var, CBotVar* result, int& exception, void* user);
static bool rDistance(CBotVar* var, CBotVar* result, int& exception, void* user);
static bool rDistance2d(CBotVar* var, CBotVar* result, int& exception, void* user);
static bool rSpace(CBotVar* var, CBotVar* result, int& exception, void* user);
static bool rFlatGround(CBotVar* var, CBotVar* result, int& exception, void* user);
static bool rWait(CBotVar* var, CBotVar* result, int& exception, void* user);
static bool rMove(CBotVar* var, CBotVar* result, int& exception, void* user);
static bool rTurn(CBotVar* var, CBotVar* result, int& exception, void* user);
static bool rGoto(CBotVar* var, CBotVar* result, int& exception, void* user);
static bool rFind(CBotVar* var, CBotVar* result, int& exception, void* user);
static bool rGrab(CBotVar* var, CBotVar* result, int& exception, void* user);
static bool rDrop(CBotVar* var, CBotVar* result, int& exception, void* user);
static bool rSniff(CBotVar* var, CBotVar* result, int& exception, void* user);
static bool rReceive(CBotVar* var, CBotVar* result, int& exception, void* user);
static bool rSend(CBotVar* var, CBotVar* result, int& exception, void* user);
static bool rDeleteInfo(CBotVar* var, CBotVar* result, int& exception, void* user);
static bool rTestInfo(CBotVar* var, CBotVar* result, int& exception, void* user);
static bool rThump(CBotVar* var, CBotVar* result, int& exception, void* user);
static bool rRecycle(CBotVar* var, CBotVar* result, int& exception, void* user);
static bool rShield(CBotVar* var, CBotVar* result, int& exception, void* user);
static bool rFire(CBotVar* var, CBotVar* result, int& exception, void* user);
static bool rAim(CBotVar* var, CBotVar* result, int& exception, void* user);
static bool rMotor(CBotVar* var, CBotVar* result, int& exception, void* user);
static bool rJet(CBotVar* var, CBotVar* result, int& exception, void* user);
static bool rTopo(CBotVar* var, CBotVar* result, int& exception, void* user);
static bool rMessage(CBotVar* var, CBotVar* result, int& exception, void* user);
static bool rCmdline(CBotVar* var, CBotVar* result, int& exception, void* user);
static bool rIsMovie(CBotVar* var, CBotVar* result, int& exception, void* user);
static bool rErrMode(CBotVar* var, CBotVar* result, int& exception, void* user);
static bool rIPF(CBotVar* var, CBotVar* result, int& exception, void* user);
static bool rAbsTime(CBotVar* var, CBotVar* result, int& exception, void* user);
static bool rDeleteFile(CBotVar* var, CBotVar* result, int& exception, void* user);
static bool rPenDown(CBotVar* var, CBotVar* result, int& exception, void* user);
static bool rPenUp(CBotVar* var, CBotVar* result, int& exception, void* user);
static bool rPenColor(CBotVar* var, CBotVar* result, int& exception, void* user);
static bool rPenWidth(CBotVar* var, CBotVar* result, int& exception, void* user);
static bool rCameraFocus(CBotVar* var, CBotVar* result, int& exception, void* user);
static CBotTypResult cBusy(CBotVar* thisclass, CBotVar* &var);
static CBotTypResult cFactory(CBotVar* thisclass, CBotVar* &var);
static CBotTypResult cClassNull(CBotVar* thisclass, CBotVar* &var);
static CBotTypResult cClassOneFloat(CBotVar* thisclass, CBotVar* &var);
static bool rBusy(CBotVar* thisclass, CBotVar* var, CBotVar* result, int& exception);
static bool rFactory(CBotVar* thisclass, CBotVar* var, CBotVar* result, int& exception);
static bool rResearch(CBotVar* thisclass, CBotVar* var, CBotVar* result, int& exception);
static bool rTakeOff(CBotVar* thisclass, CBotVar* var, CBotVar* result, int& exception);
static bool rDestroy(CBotVar* thisclass, CBotVar* var, CBotVar* result, int& exception);
static CBotTypResult cfconstruct (CBotVar* pThis, CBotVar* &pVar);
static CBotTypResult cfopen (CBotVar* pThis, CBotVar* &pVar);
static CBotTypResult cfclose (CBotVar* pThis, CBotVar* &pVar);
static CBotTypResult cfwrite (CBotVar* pThis, CBotVar* &pVar);
static CBotTypResult cfread (CBotVar* pThis, CBotVar* &pVar);
static CBotTypResult cfeof (CBotVar* pThis, CBotVar* &pVar);
static bool rfconstruct (CBotVar* pThis, CBotVar* pVar, CBotVar* pResult, int& Exception);
static bool rfdestruct (CBotVar* pThis, CBotVar* pVar, CBotVar* pResult, int& Exception);
static bool rfopen (CBotVar* pThis, CBotVar* pVar, CBotVar* pResult, int& Exception);
static bool rfclose (CBotVar* pThis, CBotVar* pVar, CBotVar* pResult, int& Exception);
static bool rfwrite (CBotVar* pThis, CBotVar* pVar, CBotVar* pResult, int& Exception);
static bool rfread (CBotVar* pThis, CBotVar* pVar, CBotVar* pResult, int& Exception);
static bool rfeof (CBotVar* pThis, CBotVar* pVar, CBotVar* pResult, int& Exception);
static CBotTypResult cPointConstructor(CBotVar* pThis, CBotVar* &var);
static bool rPointConstructor(CBotVar* pThis, CBotVar* var, CBotVar* pResult, int& Exception);
public:
static int m_CompteurFileOpen;
static std::string m_filesDir;
private:
static bool Process(CScript* script, CBotVar* result, int &exception);
static bool ShouldProcessStop(Error err, int errMode);
static CObject* SearchInfo(CScript* script, CObject* object, float power);
protected:
Gfx::CEngine* m_engine;
Ui::CInterface* m_interface;

4147
src/script/scriptfunc.cpp Normal file

File diff suppressed because it is too large Load Diff

180
src/script/scriptfunc.h Normal file
View File

@ -0,0 +1,180 @@
/*
* This file is part of the Colobot: Gold Edition source code
* Copyright (C) 2001-2014, Daniel Roux, EPSITEC SA & TerranovaTeam
* http://epsiteс.ch; http://colobot.info; http://github.com/colobot
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
* See the GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see http://gnu.org/licenses
*/
/**
* \file script/scriptfunc.h
* \brief CBot script functions
*/
#pragma once
#include "common/global.h"
#include "CBot/CBotDll.h"
class CObject;
class CScript;
class CScriptFunctions
{
public:
static void Init();
private:
static CBotTypResult cNull(CBotVar* &var, void* user);
static CBotTypResult cOneFloat(CBotVar* &var, void* user);
static CBotTypResult cTwoFloat(CBotVar* &var, void* user);
static CBotTypResult cString(CBotVar* &var, void* user);
static CBotTypResult cStringString(CBotVar* &var, void* user);
static CBotTypResult cEndMission(CBotVar* &var, void* user);
static CBotTypResult cPlayMusic(CBotVar* &var, void* user);
static CBotTypResult cGetObject(CBotVar* &var, void* user);
static CBotTypResult cDelete(CBotVar* &var, void* user);
static CBotTypResult cSearch(CBotVar* &var, void* user);
static CBotTypResult cRadar(CBotVar* &var, void* user);
static CBotTypResult cDetect(CBotVar* &var, void* user);
static CBotTypResult cDirection(CBotVar* &var, void* user);
static CBotTypResult cCanBuild(CBotVar* &var, void* user);
static CBotTypResult cProduce(CBotVar* &var, void* user);
static CBotTypResult cDistance(CBotVar* &var, void* user);
static CBotTypResult cSpace(CBotVar* &var, void* user);
static CBotTypResult cFlatGround(CBotVar* &var, void* user);
static CBotTypResult cGoto(CBotVar* &var, void* user);
static CBotTypResult cGrabDrop(CBotVar* &var, void* user);
static CBotTypResult cReceive(CBotVar* &var, void* user);
static CBotTypResult cSend(CBotVar* &var, void* user);
static CBotTypResult cDeleteInfo(CBotVar* &var, void* user);
static CBotTypResult cTestInfo(CBotVar* &var, void* user);
static CBotTypResult cShield(CBotVar* &var, void* user);
static CBotTypResult cFire(CBotVar* &var, void* user);
static CBotTypResult cAim(CBotVar* &var, void* user);
static CBotTypResult cMotor(CBotVar* &var, void* user);
static CBotTypResult cTopo(CBotVar* &var, void* user);
static CBotTypResult cMessage(CBotVar* &var, void* user);
static CBotTypResult cPenDown(CBotVar* &var, void* user);
static CBotTypResult cOnePoint(CBotVar* &var, void* user);
static CBotTypResult cPoint(CBotVar* &var, void* user);
static CBotTypResult cOneObject(CBotVar* &var, void* user);
static bool rSin(CBotVar* var, CBotVar* result, int& exception, void* user);
static bool rCos(CBotVar* var, CBotVar* result, int& exception, void* user);
static bool rTan(CBotVar* var, CBotVar* result, int& exception, void* user);
static bool rSqrt(CBotVar* var, CBotVar* result, int& exception, void* user);
static bool rPow(CBotVar* var, CBotVar* result, int& exception, void* user);
static bool rRand(CBotVar* var, CBotVar* result, int& exception, void* user);
static bool rAbs(CBotVar* var, CBotVar* result, int& exception, void* user);
static bool rEndMission(CBotVar* var, CBotVar* result, int& exception, void* user);
static bool rPlayMusic(CBotVar* var, CBotVar* result, int& exception, void* user);
static bool rStopMusic(CBotVar* var, CBotVar* result, int& exception, void* user);
static bool rGetBuild(CBotVar* var, CBotVar* result, int& exception, void* user);
static bool rGetResearchEnable(CBotVar* var, CBotVar* result, int& exception, void* user);
static bool rGetResearchDone(CBotVar* var, CBotVar* result, int& exception, void* user);
static bool rSetBuild(CBotVar* var, CBotVar* result, int& exception, void* user);
static bool rSetResearchEnable(CBotVar* var, CBotVar* result, int& exception, void* user);
static bool rSetResearchDone(CBotVar* var, CBotVar* result, int& exception, void* user);
static bool rGetObjectById(CBotVar* var, CBotVar* result, int& exception, void* user);
static bool rGetObject(CBotVar* var, CBotVar* result, int& exception, void* user);
static bool rProgFunc(CBotVar* var, CBotVar* result, int& exception, void* user);
static bool rDelete(CBotVar* var, CBotVar* result, int& exception, void* user);
static bool rSearch(CBotVar* var, CBotVar* result, int& exception, void* user);
static bool rRadar(CBotVar* var, CBotVar* result, int& exception, void* user);
static bool rDetect(CBotVar* var, CBotVar* result, int& exception, void* user);
static bool rDirection(CBotVar* var, CBotVar* result, int& exception, void* user);
static bool rCanBuild(CBotVar* var, CBotVar* result, int& exception, void* user);
static bool rBuild(CBotVar* var, CBotVar* result, int& exception, void* user);
static bool rProduce(CBotVar* var, CBotVar* result, int& exception, void* user);
static bool rDistance(CBotVar* var, CBotVar* result, int& exception, void* user);
static bool rDistance2d(CBotVar* var, CBotVar* result, int& exception, void* user);
static bool rSpace(CBotVar* var, CBotVar* result, int& exception, void* user);
static bool rFlatGround(CBotVar* var, CBotVar* result, int& exception, void* user);
static bool rWait(CBotVar* var, CBotVar* result, int& exception, void* user);
static bool rMove(CBotVar* var, CBotVar* result, int& exception, void* user);
static bool rTurn(CBotVar* var, CBotVar* result, int& exception, void* user);
static bool rGoto(CBotVar* var, CBotVar* result, int& exception, void* user);
static bool rFind(CBotVar* var, CBotVar* result, int& exception, void* user);
static bool rGrab(CBotVar* var, CBotVar* result, int& exception, void* user);
static bool rDrop(CBotVar* var, CBotVar* result, int& exception, void* user);
static bool rSniff(CBotVar* var, CBotVar* result, int& exception, void* user);
static bool rReceive(CBotVar* var, CBotVar* result, int& exception, void* user);
static bool rSend(CBotVar* var, CBotVar* result, int& exception, void* user);
static bool rDeleteInfo(CBotVar* var, CBotVar* result, int& exception, void* user);
static bool rTestInfo(CBotVar* var, CBotVar* result, int& exception, void* user);
static bool rThump(CBotVar* var, CBotVar* result, int& exception, void* user);
static bool rRecycle(CBotVar* var, CBotVar* result, int& exception, void* user);
static bool rShield(CBotVar* var, CBotVar* result, int& exception, void* user);
static bool rFire(CBotVar* var, CBotVar* result, int& exception, void* user);
static bool rAim(CBotVar* var, CBotVar* result, int& exception, void* user);
static bool rMotor(CBotVar* var, CBotVar* result, int& exception, void* user);
static bool rJet(CBotVar* var, CBotVar* result, int& exception, void* user);
static bool rTopo(CBotVar* var, CBotVar* result, int& exception, void* user);
static bool rMessage(CBotVar* var, CBotVar* result, int& exception, void* user);
static bool rCmdline(CBotVar* var, CBotVar* result, int& exception, void* user);
static bool rIsMovie(CBotVar* var, CBotVar* result, int& exception, void* user);
static bool rErrMode(CBotVar* var, CBotVar* result, int& exception, void* user);
static bool rIPF(CBotVar* var, CBotVar* result, int& exception, void* user);
static bool rAbsTime(CBotVar* var, CBotVar* result, int& exception, void* user);
static bool rDeleteFile(CBotVar* var, CBotVar* result, int& exception, void* user);
static bool rPenDown(CBotVar* var, CBotVar* result, int& exception, void* user);
static bool rPenUp(CBotVar* var, CBotVar* result, int& exception, void* user);
static bool rPenColor(CBotVar* var, CBotVar* result, int& exception, void* user);
static bool rPenWidth(CBotVar* var, CBotVar* result, int& exception, void* user);
static bool rCameraFocus(CBotVar* var, CBotVar* result, int& exception, void* user);
static CBotTypResult cBusy(CBotVar* thisclass, CBotVar* &var);
static CBotTypResult cFactory(CBotVar* thisclass, CBotVar* &var);
static CBotTypResult cClassNull(CBotVar* thisclass, CBotVar* &var);
static CBotTypResult cClassOneFloat(CBotVar* thisclass, CBotVar* &var);
static bool rBusy(CBotVar* thisclass, CBotVar* var, CBotVar* result, int& exception);
static bool rFactory(CBotVar* thisclass, CBotVar* var, CBotVar* result, int& exception);
static bool rResearch(CBotVar* thisclass, CBotVar* var, CBotVar* result, int& exception);
static bool rTakeOff(CBotVar* thisclass, CBotVar* var, CBotVar* result, int& exception);
static bool rDestroy(CBotVar* thisclass, CBotVar* var, CBotVar* result, int& exception);
static CBotTypResult cfconstruct (CBotVar* pThis, CBotVar* &pVar);
static CBotTypResult cfopen (CBotVar* pThis, CBotVar* &pVar);
static CBotTypResult cfclose (CBotVar* pThis, CBotVar* &pVar);
static CBotTypResult cfwrite (CBotVar* pThis, CBotVar* &pVar);
static CBotTypResult cfread (CBotVar* pThis, CBotVar* &pVar);
static CBotTypResult cfeof (CBotVar* pThis, CBotVar* &pVar);
static bool rfconstruct (CBotVar* pThis, CBotVar* pVar, CBotVar* pResult, int& Exception);
static bool rfdestruct (CBotVar* pThis, CBotVar* pVar, CBotVar* pResult, int& Exception);
static bool rfopen (CBotVar* pThis, CBotVar* pVar, CBotVar* pResult, int& Exception);
static bool rfclose (CBotVar* pThis, CBotVar* pVar, CBotVar* pResult, int& Exception);
static bool rfwrite (CBotVar* pThis, CBotVar* pVar, CBotVar* pResult, int& Exception);
static bool rfread (CBotVar* pThis, CBotVar* pVar, CBotVar* pResult, int& Exception);
static bool rfeof (CBotVar* pThis, CBotVar* pVar, CBotVar* pResult, int& Exception);
static CBotTypResult cPointConstructor(CBotVar* pThis, CBotVar* &var);
static bool rPointConstructor(CBotVar* pThis, CBotVar* var, CBotVar* pResult, int& Exception);
public:
static int m_CompteurFileOpen;
static std::string m_filesDir;
private:
static bool Process(CScript* script, CBotVar* result, int &exception);
static bool ShouldProcessStop(Error err, int errMode);
static CObject* SearchInfo(CScript* script, CObject* object, float power);
};