Change brush size with [ and ] keys, change order of drawing for Lua, Fix print and tpt.log so they log to the console when it is open
This commit is contained in:
parent
89cdeef9ad
commit
ea51cde1f0
@ -31,7 +31,7 @@ public:
|
||||
virtual bool OnMouseWheel(int x, int y, int d) {return true;}
|
||||
virtual bool OnKeyPress(int key, Uint16 character, bool shift, bool ctrl, bool alt) {return true;}
|
||||
virtual bool OnKeyRelease(int key, Uint16 character, bool shift, bool ctrl, bool alt) {return true;}
|
||||
virtual void OnTick(float dt) {}
|
||||
virtual void OnTick() {}
|
||||
virtual int Command(std::string command);
|
||||
virtual std::string FormatCommand(std::string command);
|
||||
std::string GetLastError();
|
||||
|
@ -13,6 +13,9 @@ Simulation * luacon_sim;
|
||||
LuaScriptInterface * luacon_ci;
|
||||
Graphics * luacon_g;
|
||||
|
||||
bool *luacon_currentCommand;
|
||||
string *luacon_lastError;
|
||||
|
||||
int *lua_el_func, *lua_el_mode;
|
||||
|
||||
int getPartIndex_curIdx;
|
||||
|
@ -13,7 +13,8 @@
|
||||
#include "LuaScriptHelper.h"
|
||||
|
||||
LuaScriptInterface::LuaScriptInterface(GameModel * m):
|
||||
CommandInterface(m)
|
||||
CommandInterface(m),
|
||||
currentCommand(false)
|
||||
{
|
||||
int i = 0, j;
|
||||
char tmpname[12];
|
||||
@ -77,6 +78,9 @@ LuaScriptInterface::LuaScriptInterface(GameModel * m):
|
||||
{NULL,NULL}
|
||||
};
|
||||
|
||||
luacon_currentCommand = ¤tCommand;
|
||||
luacon_lastError = &lastError;
|
||||
|
||||
luacon_model = m;
|
||||
luacon_sim = m->GetSimulation();
|
||||
luacon_g = ui::Engine::Ref().g;
|
||||
@ -246,7 +250,7 @@ bool LuaScriptInterface::OnKeyRelease(int key, Uint16 character, bool shift, boo
|
||||
return luacon_keyevent(key, /*TODO: sdl_mod*/0, LUACON_KUP);
|
||||
}
|
||||
|
||||
void LuaScriptInterface::OnTick(float dt)
|
||||
void LuaScriptInterface::OnTick()
|
||||
{
|
||||
if(luacon_mousedown)
|
||||
luacon_mouseevent(luacon_mousex, luacon_mousey, luacon_mousebutton, LUACON_MPRESS);
|
||||
@ -257,11 +261,13 @@ int LuaScriptInterface::Command(std::string command)
|
||||
{
|
||||
int ret;
|
||||
lastError = "";
|
||||
currentCommand = true;
|
||||
if((ret = luaL_dostring(l, command.c_str())))
|
||||
{
|
||||
lastError = luacon_geterror();
|
||||
Log(LogError, lastError);
|
||||
//Log(LogError, lastError);
|
||||
}
|
||||
currentCommand = false;
|
||||
return ret;
|
||||
}
|
||||
|
||||
@ -977,7 +983,10 @@ int luatpt_setconsole(lua_State* l)
|
||||
|
||||
int luatpt_log(lua_State* l)
|
||||
{
|
||||
luacon_ci->Log(CommandInterface::LogNotice, luaL_optstring(l, 1, ""));
|
||||
if((*luacon_currentCommand) && !(*luacon_lastError).length())
|
||||
(*luacon_lastError) = luaL_optstring(l, 1, "");
|
||||
else
|
||||
luacon_ci->Log(CommandInterface::LogNotice, luaL_optstring(l, 1, ""));
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -36,6 +36,7 @@ extern "C"
|
||||
class LuaScriptInterface: public CommandInterface {
|
||||
int luacon_mousex, luacon_mousey, luacon_selectedl, luacon_selectedr, luacon_mousebutton;
|
||||
bool luacon_mousedown;
|
||||
bool currentCommand;
|
||||
public:
|
||||
lua_State *l;
|
||||
LuaScriptInterface(GameModel * m);
|
||||
@ -45,7 +46,7 @@ public:
|
||||
virtual bool OnMouseWheel(int x, int y, int d);
|
||||
virtual bool OnKeyPress(int key, Uint16 character, bool shift, bool ctrl, bool alt);
|
||||
virtual bool OnKeyRelease(int key, Uint16 character, bool shift, bool ctrl, bool alt);
|
||||
virtual void OnTick(float dt);
|
||||
virtual void OnTick();
|
||||
virtual int Command(std::string command);
|
||||
virtual std::string FormatCommand(std::string command);
|
||||
virtual ~LuaScriptInterface();
|
||||
|
@ -174,9 +174,13 @@ void GameController::PlaceClipboard(ui::Point position)
|
||||
}
|
||||
}
|
||||
|
||||
void GameController::AdjustBrushSize(int direction)
|
||||
void GameController::AdjustBrushSize(int direction, bool logarithmic)
|
||||
{
|
||||
ui::Point newSize = gameModel->GetBrush()->GetRadius() + ui::Point(direction, direction);
|
||||
ui::Point newSize(0, 0);
|
||||
if(logarithmic)
|
||||
newSize = gameModel->GetBrush()->GetRadius() + ui::Point(direction * ((gameModel->GetBrush()->GetRadius().X/10)>0?gameModel->GetBrush()->GetRadius().X/10:1), direction * ((gameModel->GetBrush()->GetRadius().Y/10)>0?gameModel->GetBrush()->GetRadius().Y/10:1));
|
||||
else
|
||||
newSize = gameModel->GetBrush()->GetRadius() + ui::Point(direction, direction);
|
||||
if(newSize.X<0)
|
||||
newSize.X = 0;
|
||||
if(newSize.Y<0)
|
||||
@ -184,9 +188,13 @@ void GameController::AdjustBrushSize(int direction)
|
||||
gameModel->GetBrush()->SetRadius(newSize);
|
||||
}
|
||||
|
||||
void GameController::AdjustZoomSize(int direction)
|
||||
void GameController::AdjustZoomSize(int direction, bool logarithmic)
|
||||
{
|
||||
int newSize = gameModel->GetZoomSize()+direction;
|
||||
int newSize;
|
||||
if(logarithmic)
|
||||
newSize = gameModel->GetZoomSize()+direction;
|
||||
else
|
||||
newSize = gameModel->GetZoomSize()+(((gameModel->GetZoomSize()/10)>0?(gameModel->GetZoomSize()/10):1)*direction);
|
||||
if(newSize<5)
|
||||
newSize = 5;
|
||||
if(newSize>64)
|
||||
@ -333,9 +341,13 @@ bool GameController::KeyRelease(int key, Uint16 character, bool shift, bool ctrl
|
||||
return commandInterface->OnKeyRelease(key, character, shift, ctrl, alt);
|
||||
}
|
||||
|
||||
void GameController::Tick()
|
||||
{
|
||||
commandInterface->OnTick();
|
||||
}
|
||||
|
||||
void GameController::Update()
|
||||
{
|
||||
commandInterface->OnTick(1.0f);
|
||||
gameModel->GetSimulation()->update_particles();
|
||||
if(renderOptions && renderOptions->HasExited)
|
||||
{
|
||||
|
@ -54,11 +54,12 @@ public:
|
||||
bool MouseWheel(int x, int y, int d);
|
||||
bool KeyPress(int key, Uint16 character, bool shift, bool ctrl, bool alt);
|
||||
bool KeyRelease(int key, Uint16 character, bool shift, bool ctrl, bool alt);
|
||||
void Tick();
|
||||
|
||||
void SetZoomEnabled(bool zoomEnable);
|
||||
void SetZoomPosition(ui::Point position);
|
||||
void AdjustBrushSize(int direction);
|
||||
void AdjustZoomSize(int direction);
|
||||
void AdjustBrushSize(int direction, bool logarithmic = false);
|
||||
void AdjustZoomSize(int direction, bool logarithmic = false);
|
||||
void DrawPoints(int toolSelection, queue<ui::Point*> & pointQueue);
|
||||
void DrawRect(int toolSelection, ui::Point point1, ui::Point point2);
|
||||
void DrawLine(int toolSelection, ui::Point point1, ui::Point point2);
|
||||
|
@ -693,6 +693,12 @@ void GameView::OnKeyPress(int key, Uint16 character, bool shift, bool ctrl, bool
|
||||
selectPoint1 = selectPoint2;
|
||||
c->OpenStamps();
|
||||
break;
|
||||
case ']':
|
||||
c->AdjustBrushSize(1, true);
|
||||
break;
|
||||
case '[':
|
||||
c->AdjustBrushSize(-1, true);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@ -739,6 +745,8 @@ void GameView::OnTick(float dt)
|
||||
c->DrawFill(toolIndex, currentMouse);
|
||||
}
|
||||
c->Update();
|
||||
if(lastLogEntry > -0.1f)
|
||||
lastLogEntry -= 0.16*dt;
|
||||
}
|
||||
|
||||
void GameView::DoMouseMove(int x, int y, int dx, int dy)
|
||||
@ -777,6 +785,13 @@ void GameView::DoKeyRelease(int key, Uint16 character, bool shift, bool ctrl, bo
|
||||
Window::DoKeyRelease(key, character, shift, ctrl, alt);
|
||||
}
|
||||
|
||||
void GameView::DoDraw()
|
||||
{
|
||||
Window::DoDraw();
|
||||
c->Tick();
|
||||
}
|
||||
|
||||
|
||||
void GameView::NotifyZoomChanged(GameModel * sender)
|
||||
{
|
||||
zoomEnabled = sender->GetZoomEnabled();
|
||||
@ -786,7 +801,7 @@ void GameView::NotifyLogChanged(GameModel * sender, string entry)
|
||||
{
|
||||
logEntries.push_front(entry);
|
||||
lastLogEntry = 100.0f;
|
||||
if(logEntries.size()>10)
|
||||
if(logEntries.size()>20)
|
||||
logEntries.pop_back();
|
||||
}
|
||||
|
||||
@ -900,15 +915,18 @@ void GameView::OnDraw()
|
||||
|
||||
int startX = 20;
|
||||
int startY = YRES-20;
|
||||
if(lastLogEntry>0.1 && logEntries.size())
|
||||
int startAlpha;
|
||||
if(lastLogEntry>0.1f && logEntries.size())
|
||||
{
|
||||
startAlpha = 2.55f*lastLogEntry;
|
||||
deque<string>::iterator iter;
|
||||
for(iter = logEntries.begin(); iter != logEntries.end(); iter++)
|
||||
for(iter = logEntries.begin(); iter != logEntries.end() && startAlpha>0; iter++)
|
||||
{
|
||||
string message = (*iter);
|
||||
startY -= 14;
|
||||
startY -= 13;
|
||||
g->fillrect(startX-3, startY-3, Graphics::textwidth((char*)message.c_str())+6, 14, 0, 0, 0, 100);
|
||||
g->drawtext(startX, startY, message.c_str(), 255, 255, 255, 255);
|
||||
g->drawtext(startX, startY, message.c_str(), 255, 255, 255, startAlpha);
|
||||
startAlpha-=14;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -101,6 +101,7 @@ public:
|
||||
virtual void OnKeyRelease(int key, Uint16 character, bool shift, bool ctrl, bool alt);
|
||||
|
||||
//Top-level handers, for Lua interface
|
||||
virtual void DoDraw();
|
||||
virtual void DoMouseMove(int x, int y, int dx, int dy);
|
||||
virtual void DoMouseDown(int x, int y, unsigned button);
|
||||
virtual void DoMouseUp(int x, int y, unsigned button);
|
||||
|
Loading…
Reference in New Issue
Block a user