Merge branch 'develop' of github.com:Vulpovile/G3D-Fun into feature/physics_sleep
This commit is contained in:
3
.gitignore
vendored
3
.gitignore
vendored
@@ -56,4 +56,5 @@ desktop.ini
|
||||
*.db
|
||||
|
||||
#Redist
|
||||
!Installer/Redist/*
|
||||
!Installer/Redist/*
|
||||
UpgradeLog.htm
|
||||
|
||||
@@ -735,6 +735,14 @@
|
||||
RelativePath=".\src\include\TextureHandler.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\src\include\ToolEnum.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\src\include\VS2005CompatShim.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\src\include\win32Defines.h"
|
||||
>
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
#define APP_GENER 0
|
||||
#define APP_MAJOR 0
|
||||
#define APP_MINOR 106
|
||||
#define APP_PATCH 3
|
||||
#define APP_PATCH 4
|
||||
#define APP_VER_STRING APP_GENER.APP_MAJOR.APP_MINOR.APP_PATCH
|
||||
|
||||
#define VER_PREFIX( N ) v##N
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
}
|
||||
</style>
|
||||
<body style="background-color: ButtonFace; margin: 0; padding: 5px; overflow: hidden; border: outset 2px;">
|
||||
<span class="container" onmousedown="toolOvr(this)" onmouseup="toolOut(this)" onmouseout="toolOut(this)" onclick="alert(window.external.ToggleHopperBin(0))">
|
||||
<span class="container" onmousedown="toolOvr(this)" onmouseup="toolOut(this)" onmouseout="toolOut(this)" onclick="window.external.ToggleHopperBin(0)">
|
||||
<img src="../images/GameTool.png" />
|
||||
</span>
|
||||
<span class="container" onmousedown="toolOvr(this)" onmouseup="toolOut(this)" onmouseout="toolOut(this)" onclick="window.external.ToggleHopperBin(1)">
|
||||
|
||||
@@ -7,10 +7,19 @@ class LevelInstance :
|
||||
public:
|
||||
LevelInstance(void);
|
||||
~LevelInstance(void);
|
||||
bool HighScoreIsGood;
|
||||
Enum::ActionType::Value TimerUpAction;
|
||||
Enum::AffectType::Value TimerAffectsScore;
|
||||
bool RunOnOpen;
|
||||
float timer;
|
||||
int score;
|
||||
virtual std::vector<PROPGRIDITEM> getProperties();
|
||||
std::string winMessage;
|
||||
std::string loseMessage;
|
||||
virtual void PropUpdate(LPPROPGRIDITEM &pItem);
|
||||
void winCondition();
|
||||
void loseCondition();
|
||||
void pauseCondition();
|
||||
void drawCondition();
|
||||
void Step(SimTime sdt);
|
||||
};
|
||||
|
||||
@@ -20,4 +20,16 @@ namespace Enum
|
||||
Player = 7, KeyboardRight = 1, KeyboardLeft = 2, Joypad1 = 3, Joypad2 = 4, Chase = 5, Flee = 6, None = 0
|
||||
};
|
||||
}
|
||||
namespace ActionType
|
||||
{
|
||||
enum Value {
|
||||
Nothing = 0, Pause = 1, Lose = 2, Draw = 3, Win = 4
|
||||
};
|
||||
}
|
||||
namespace AffectType
|
||||
{
|
||||
enum Value {
|
||||
NoChange = 0, Increase = 1, Decrease = 2
|
||||
};
|
||||
}
|
||||
}
|
||||
11
src/include/ToolEnum.h
Normal file
11
src/include/ToolEnum.h
Normal file
@@ -0,0 +1,11 @@
|
||||
#pragma once
|
||||
|
||||
namespace Enum
|
||||
{
|
||||
namespace Hopper
|
||||
{
|
||||
enum Value {
|
||||
GameTool = 0, Grab = 1, Clone = 2, Hammer = 3, Slingshot = 4, Rocket = 5, Laser = 6
|
||||
};
|
||||
}
|
||||
}
|
||||
26
src/include/VS2005CompatShim.h
Normal file
26
src/include/VS2005CompatShim.h
Normal file
@@ -0,0 +1,26 @@
|
||||
#ifndef COMPAT_SHIM
|
||||
#define COMPAT_SHIM
|
||||
#include <sstream>
|
||||
#include <string>
|
||||
|
||||
template<class T>
|
||||
std::string toString(const T &value)
|
||||
{
|
||||
std::ostringstream os;
|
||||
os << value;
|
||||
return os.str();
|
||||
}
|
||||
|
||||
namespace std
|
||||
{
|
||||
std::string to_string( int value ) {return toString(value);}
|
||||
std::string to_string( long value ) {return toString(value);}
|
||||
std::string to_string( long long value ) {return toString(value);}
|
||||
std::string to_string( unsigned value ) {return toString(value);}
|
||||
std::string to_string( unsigned long value ) {return toString(value);}
|
||||
std::string to_string( unsigned long long value ) {return toString(value);}
|
||||
std::string to_string( float value ) {return toString(value);}
|
||||
std::string to_string( double value ) {return toString(value);}
|
||||
std::string to_string( long double value ) {return toString(value);}
|
||||
}
|
||||
#endif
|
||||
@@ -323,6 +323,9 @@ void Application::onSimulation(RealTime rdt, SimTime sdt, SimTime idt) {
|
||||
|
||||
if(_dataModel->isRunning())
|
||||
{
|
||||
LevelInstance* Level = _dataModel->getLevel();
|
||||
Level->Step(sdt);
|
||||
|
||||
// XplicitNgine Start
|
||||
std::vector<PartInstance *> toDelete;
|
||||
for(size_t i = 0; i < _dataModel->getWorkspace()->partObjects.size(); i++)
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
#include "DataModelV2/DataModelInstance.h"
|
||||
#include "DataModelV2/LevelInstance.h"
|
||||
|
||||
LevelInstance::LevelInstance(void)
|
||||
@@ -16,6 +17,61 @@ LevelInstance::~LevelInstance(void)
|
||||
}
|
||||
|
||||
|
||||
static TCHAR* strActionType(int option)
|
||||
{
|
||||
switch(option)
|
||||
{
|
||||
case Enum::ActionType::Nothing:
|
||||
return "Nothing";
|
||||
case Enum::ActionType::Pause:
|
||||
return "Pause";
|
||||
case Enum::ActionType::Lose:
|
||||
return "Lose";
|
||||
case Enum::ActionType::Draw:
|
||||
return "Draw";
|
||||
case Enum::ActionType::Win:
|
||||
return "Win";
|
||||
}
|
||||
return "Nothing";
|
||||
}
|
||||
|
||||
static Enum::ActionType::Value EnumActionType(TCHAR* option)
|
||||
{
|
||||
if(strcmp("Nothing", option) == 0)
|
||||
return Enum::ActionType::Nothing;
|
||||
if(strcmp("Pause", option) == 0)
|
||||
return Enum::ActionType::Pause;
|
||||
if(strcmp("Lose", option) == 0)
|
||||
return Enum::ActionType::Lose;
|
||||
if(strcmp("Draw", option) == 0)
|
||||
return Enum::ActionType::Draw;
|
||||
return Enum::ActionType::Win;
|
||||
}
|
||||
|
||||
static TCHAR* strAffectType(int option)
|
||||
{
|
||||
switch(option)
|
||||
{
|
||||
case Enum::AffectType::NoChange:
|
||||
return "NoChange";
|
||||
case Enum::AffectType::Increase:
|
||||
return "Increase";
|
||||
case Enum::AffectType::Decrease:
|
||||
return "Decrease";
|
||||
}
|
||||
return "NoChange";
|
||||
}
|
||||
|
||||
static Enum::AffectType::Value EnumAffectType(TCHAR* option)
|
||||
{
|
||||
if(strcmp("NoChange", option) == 0)
|
||||
return Enum::AffectType::NoChange;
|
||||
if(strcmp("Increase", option) == 0)
|
||||
return Enum::AffectType::Increase;
|
||||
return Enum::AffectType::Decrease;
|
||||
}
|
||||
|
||||
|
||||
char timerTxt[12];
|
||||
char scoreTxt[12];
|
||||
std::vector<PROPGRIDITEM> LevelInstance::getProperties()
|
||||
@@ -29,12 +85,28 @@ std::vector<PROPGRIDITEM> LevelInstance::getProperties()
|
||||
"The message that shows when the player wins.",
|
||||
(LPARAM)winMessage.c_str(),
|
||||
PIT_EDIT));
|
||||
|
||||
properties.push_back(createPGI("Messages",
|
||||
"LoseMessage",
|
||||
"The message that shows when the player loses.",
|
||||
(LPARAM)loseMessage.c_str(),
|
||||
PIT_EDIT));
|
||||
|
||||
properties.push_back(createPGI(
|
||||
"Gameplay",
|
||||
"HighScoreIsGood",
|
||||
"Some temporary string here",
|
||||
(LPARAM)HighScoreIsGood,
|
||||
PIT_CHECK
|
||||
));
|
||||
|
||||
properties.push_back(createPGI(
|
||||
"Gameplay",
|
||||
"RunOnOpen",
|
||||
"Some temporary string here",
|
||||
(LPARAM)RunOnOpen,
|
||||
PIT_CHECK
|
||||
));
|
||||
|
||||
sprintf_s(timerTxt, "%g", timer);
|
||||
sprintf_s(scoreTxt, "%d", score);
|
||||
@@ -43,11 +115,28 @@ std::vector<PROPGRIDITEM> LevelInstance::getProperties()
|
||||
"The amount of time in seconds the player has to complete this level.\r\n\r\nPut 0 if time is limitless.",
|
||||
(LPARAM)timerTxt,
|
||||
PIT_EDIT));
|
||||
|
||||
properties.push_back(createPGI("Gameplay",
|
||||
"InitialScoreValue",
|
||||
"The amount of points the player starts with.",
|
||||
(LPARAM)scoreTxt,
|
||||
PIT_EDIT));
|
||||
|
||||
properties.push_back(createPGI("Gameplay",
|
||||
"TimerUpAction",
|
||||
"Some temporary string here",
|
||||
(LPARAM)strActionType(TimerUpAction),
|
||||
PIT_COMBO,
|
||||
TEXT("Nothing\0Pause\0Lose\0Draw\0Win\0")
|
||||
));
|
||||
|
||||
properties.push_back(createPGI("Gameplay",
|
||||
"TimerAffectsScore",
|
||||
"Some temporary string here",
|
||||
(LPARAM)strAffectType(TimerAffectsScore),
|
||||
PIT_COMBO,
|
||||
TEXT("NoChange\0Increase\0Decrease\0")
|
||||
));
|
||||
return properties;
|
||||
}
|
||||
void LevelInstance::PropUpdate(LPPROPGRIDITEM &pItem)
|
||||
@@ -68,6 +157,87 @@ void LevelInstance::PropUpdate(LPPROPGRIDITEM &pItem)
|
||||
{
|
||||
winMessage = (LPSTR)pItem->lpCurValue;
|
||||
}
|
||||
else if(strcmp(pItem->lpszPropName, "TimerUpAction") == 0)
|
||||
{
|
||||
TimerUpAction = EnumActionType((TCHAR*)pItem->lpCurValue);
|
||||
}
|
||||
else if(strcmp(pItem->lpszPropName, "TimerAffectsScore") == 0)
|
||||
{
|
||||
TimerAffectsScore = EnumAffectType((TCHAR*)pItem->lpCurValue);
|
||||
}
|
||||
else if(strcmp(pItem->lpszPropName, "HighScoreIsGood") == 0)
|
||||
{
|
||||
HighScoreIsGood = pItem->lpCurValue == TRUE;
|
||||
}
|
||||
else if(strcmp(pItem->lpszPropName, "RunOnOpen") == 0)
|
||||
{
|
||||
RunOnOpen = pItem->lpCurValue == TRUE;
|
||||
}
|
||||
else
|
||||
Instance::PropUpdate(pItem);
|
||||
}
|
||||
|
||||
void LevelInstance::winCondition()
|
||||
{
|
||||
DataModelInstance* DataModel = (DataModelInstance*)getParent(); //If level parent gets changed to something other than Datamodel it could cause nasty data corruption bugs
|
||||
DataModel->setMessage(winMessage);
|
||||
DataModel->toggleRun();
|
||||
}
|
||||
|
||||
void LevelInstance::loseCondition()
|
||||
{
|
||||
DataModelInstance* DataModel = (DataModelInstance*)getParent();
|
||||
DataModel->setMessage(loseMessage);
|
||||
DataModel->toggleRun();
|
||||
}
|
||||
|
||||
void LevelInstance::pauseCondition()
|
||||
{
|
||||
DataModelInstance* DataModel = (DataModelInstance*)getParent();
|
||||
DataModel->toggleRun();
|
||||
}
|
||||
|
||||
void LevelInstance::drawCondition()
|
||||
{
|
||||
DataModelInstance* DataModel = (DataModelInstance*)getParent();
|
||||
DataModel->toggleRun();
|
||||
}
|
||||
|
||||
void LevelInstance::Step(SimTime sdt)
|
||||
{
|
||||
switch(TimerAffectsScore)
|
||||
{
|
||||
case Enum::AffectType::NoChange:
|
||||
break;
|
||||
case Enum::AffectType::Increase:
|
||||
score += 1;
|
||||
break;
|
||||
case Enum::AffectType::Decrease:
|
||||
if (score > 0)
|
||||
score -= 1;
|
||||
break;
|
||||
}
|
||||
if (timer >= 0.1f){ //Due to timing used this could cause the number go into negatives for one step
|
||||
timer -= sdt;
|
||||
}
|
||||
else{
|
||||
timer = 0.0f;
|
||||
switch(TimerUpAction)
|
||||
{
|
||||
case Enum::ActionType::Nothing:
|
||||
break;
|
||||
case Enum::ActionType::Pause:
|
||||
pauseCondition();
|
||||
break;
|
||||
case Enum::ActionType::Lose:
|
||||
loseCondition();
|
||||
break;
|
||||
case Enum::ActionType::Draw:
|
||||
drawCondition();
|
||||
break;
|
||||
case Enum::ActionType::Win:
|
||||
winCondition();
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -2,7 +2,6 @@
|
||||
#define WIN32_LEAN_AND_MEAN
|
||||
#endif
|
||||
|
||||
|
||||
#include <windows.h>
|
||||
#include <Commdlg.h>
|
||||
#include "IEBrowser.h"
|
||||
@@ -11,6 +10,9 @@
|
||||
#include "ax.h"
|
||||
#include "Tool/SurfaceTool.h"
|
||||
#include "Application.h"
|
||||
#include "Enum.h"
|
||||
#include "ToolEnum.h"
|
||||
#include "VS2005CompatShim.h"
|
||||
|
||||
HRESULT IEBrowser::doExternal(std::wstring funcName,
|
||||
DISPID dispIdMember,
|
||||
@@ -30,9 +32,24 @@ HRESULT IEBrowser::doExternal(std::wstring funcName,
|
||||
}
|
||||
else if (funcName==L"ToggleHopperBin")
|
||||
{
|
||||
pVarResult->vt = VT_INT;
|
||||
pVarResult->intVal = 5;
|
||||
//MessageBox(NULL, "BOOP", "Boopity boop",MB_OK);
|
||||
MessageBox(NULL, "BOOP", "Boopity boop",MB_OK);
|
||||
|
||||
/*To-do Make enums in ToolEnum work with this properly,
|
||||
commented code is not fully tested.*/
|
||||
/*MessageBox(NULL,
|
||||
std::to_string(pDispParams->rgvarg->intVal).c_str(),
|
||||
"Is it working?",
|
||||
MB_OK);
|
||||
Enum::Hopper::Value cont = (Enum::Hopper::Value)pDispParams->rgvarg->intVal;
|
||||
|
||||
switch (cont)
|
||||
{
|
||||
case GameTool
|
||||
case Grab
|
||||
|
||||
break;
|
||||
}*/
|
||||
return S_OK;
|
||||
}
|
||||
else if (funcName==L"SetController")
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user