TraceColor enum
parent
fdc0081bb8
commit
4506a4b8bd
|
@ -192,6 +192,7 @@ set(BASE_SOURCES
|
|||
object/task/taskturn.cpp
|
||||
object/task/taskwait.cpp
|
||||
object/tool_type.cpp
|
||||
object/trace_color.cpp
|
||||
object/subclass/exchange_post.cpp
|
||||
object/subclass/static_object.cpp
|
||||
physics/physics.cpp
|
||||
|
|
|
@ -798,35 +798,35 @@ bool CBrain::EventProcess(const Event &event)
|
|||
}
|
||||
if ( action == EVENT_OBJECT_PEN1 ) // black
|
||||
{
|
||||
err = StartTaskPen(true, 1);
|
||||
err = StartTaskPen(true, TraceColor::Black);
|
||||
}
|
||||
if ( action == EVENT_OBJECT_PEN2 ) // yellow
|
||||
{
|
||||
err = StartTaskPen(true, 8);
|
||||
err = StartTaskPen(true, TraceColor::Yellow);
|
||||
}
|
||||
if ( action == EVENT_OBJECT_PEN3 ) // orange
|
||||
{
|
||||
err = StartTaskPen(true, 7);
|
||||
err = StartTaskPen(true, TraceColor::Orange);
|
||||
}
|
||||
if ( action == EVENT_OBJECT_PEN4 ) // red
|
||||
{
|
||||
err = StartTaskPen(true, 4);
|
||||
err = StartTaskPen(true, TraceColor::Red);
|
||||
}
|
||||
if ( action == EVENT_OBJECT_PEN5 ) // violet
|
||||
{
|
||||
err = StartTaskPen(true, 6);
|
||||
err = StartTaskPen(true, TraceColor::Purple);
|
||||
}
|
||||
if ( action == EVENT_OBJECT_PEN6 ) // blue
|
||||
{
|
||||
err = StartTaskPen(true, 14);
|
||||
err = StartTaskPen(true, TraceColor::Blue);
|
||||
}
|
||||
if ( action == EVENT_OBJECT_PEN7 ) // green
|
||||
{
|
||||
err = StartTaskPen(true, 12);
|
||||
err = StartTaskPen(true, TraceColor::Green);
|
||||
}
|
||||
if ( action == EVENT_OBJECT_PEN8 ) // brown
|
||||
{
|
||||
err = StartTaskPen(true, 10);
|
||||
err = StartTaskPen(true, TraceColor::Brown);
|
||||
}
|
||||
|
||||
if ( action == EVENT_OBJECT_REC ) // registered?
|
||||
|
@ -1156,12 +1156,12 @@ Error CBrain::StartTaskTerraform()
|
|||
|
||||
// Change pencil.
|
||||
|
||||
Error CBrain::StartTaskPen(bool down, int color)
|
||||
Error CBrain::StartTaskPen(bool down, TraceColor color)
|
||||
{
|
||||
auto motionVehicle = dynamic_cast<CMotionVehicle*>(m_motion);
|
||||
assert(motionVehicle != nullptr);
|
||||
|
||||
if (color == -1)
|
||||
if (color == TraceColor::Default)
|
||||
color = motionVehicle->GetTraceColor();
|
||||
|
||||
motionVehicle->SetTraceDown(down);
|
||||
|
@ -2267,7 +2267,6 @@ void CBrain::UpdateInterface()
|
|||
Ui::CButton* pb;
|
||||
Ui::CSlider* ps;
|
||||
Ui::CColor* pc;
|
||||
int color;
|
||||
bool bEnable, bFly, bRun;
|
||||
char title[100];
|
||||
|
||||
|
@ -2485,46 +2484,46 @@ void CBrain::UpdateInterface()
|
|||
pb->ClearState(Ui::STATE_CHECK);
|
||||
}
|
||||
|
||||
color = motionVehicle->GetTraceColor();
|
||||
TraceColor color = motionVehicle->GetTraceColor();
|
||||
pc = static_cast< Ui::CColor* >(pw->SearchControl(EVENT_OBJECT_PEN1));
|
||||
if ( pc != 0 )
|
||||
{
|
||||
pc->SetState(Ui::STATE_CHECK, color==1);
|
||||
pc->SetState(Ui::STATE_CHECK, color == TraceColor::Black);
|
||||
}
|
||||
pc = static_cast< Ui::CColor* >(pw->SearchControl(EVENT_OBJECT_PEN2));
|
||||
if ( pc != 0 )
|
||||
{
|
||||
pc->SetState(Ui::STATE_CHECK, color==8);
|
||||
pc->SetState(Ui::STATE_CHECK, color == TraceColor::Yellow);
|
||||
}
|
||||
pc = static_cast< Ui::CColor* >(pw->SearchControl(EVENT_OBJECT_PEN3));
|
||||
if ( pc != 0 )
|
||||
{
|
||||
pc->SetState(Ui::STATE_CHECK, color==7);
|
||||
pc->SetState(Ui::STATE_CHECK, color == TraceColor::Orange);
|
||||
}
|
||||
pc = static_cast< Ui::CColor* >(pw->SearchControl(EVENT_OBJECT_PEN4));
|
||||
if ( pc != 0 )
|
||||
{
|
||||
pc->SetState(Ui::STATE_CHECK, color==4);
|
||||
pc->SetState(Ui::STATE_CHECK, color == TraceColor::Red);
|
||||
}
|
||||
pc = static_cast< Ui::CColor* >(pw->SearchControl(EVENT_OBJECT_PEN5));
|
||||
if ( pc != 0 )
|
||||
{
|
||||
pc->SetState(Ui::STATE_CHECK, color==6);
|
||||
pc->SetState(Ui::STATE_CHECK, color == TraceColor::Purple);
|
||||
}
|
||||
pc = static_cast< Ui::CColor* >(pw->SearchControl(EVENT_OBJECT_PEN6));
|
||||
if ( pc != 0 )
|
||||
{
|
||||
pc->SetState(Ui::STATE_CHECK, color==14);
|
||||
pc->SetState(Ui::STATE_CHECK, color == TraceColor::Blue);
|
||||
}
|
||||
pc = static_cast< Ui::CColor* >(pw->SearchControl(EVENT_OBJECT_PEN7));
|
||||
if ( pc != 0 )
|
||||
{
|
||||
pc->SetState(Ui::STATE_CHECK, color==12);
|
||||
pc->SetState(Ui::STATE_CHECK, color == TraceColor::Green);
|
||||
}
|
||||
pc = static_cast< Ui::CColor* >(pw->SearchControl(EVENT_OBJECT_PEN8));
|
||||
if ( pc != 0 )
|
||||
{
|
||||
pc->SetState(Ui::STATE_CHECK, color==10);
|
||||
pc->SetState(Ui::STATE_CHECK, color == TraceColor::Brown);
|
||||
}
|
||||
}
|
||||
else
|
||||
|
@ -2930,7 +2929,7 @@ void CBrain::TraceRecordStart()
|
|||
}
|
||||
else // pen up?
|
||||
{
|
||||
m_traceColor = -1;
|
||||
m_traceColor = TraceColor::Default;
|
||||
}
|
||||
|
||||
delete[] m_traceRecordBuffer;
|
||||
|
@ -2945,7 +2944,6 @@ void CBrain::TraceRecordFrame()
|
|||
TraceOper oper = TO_STOP;
|
||||
Math::Vector pos;
|
||||
float angle, len, speed;
|
||||
int color;
|
||||
|
||||
CMotionVehicle* motionVehicle = dynamic_cast<CMotionVehicle*>(m_motion);
|
||||
assert(motionVehicle != nullptr);
|
||||
|
@ -2957,14 +2955,11 @@ void CBrain::TraceRecordFrame()
|
|||
speed = m_physics->GetCirMotionY(MO_REASPEED);
|
||||
if ( speed != 0.0f ) oper = TO_TURN;
|
||||
|
||||
TraceColor color = TraceColor::Default;
|
||||
if ( motionVehicle->GetTraceDown() ) // pencil down?
|
||||
{
|
||||
color = motionVehicle->GetTraceColor();
|
||||
}
|
||||
else // pen up?
|
||||
{
|
||||
color = -1;
|
||||
}
|
||||
|
||||
if ( oper != m_traceOper ||
|
||||
color != m_traceColor )
|
||||
|
|
|
@ -31,6 +31,7 @@
|
|||
#include "object/task/taskmanip.h"
|
||||
#include "object/task/taskflag.h"
|
||||
#include "object/task/taskshield.h"
|
||||
#include "object/trace_color.h"
|
||||
|
||||
#include <vector>
|
||||
|
||||
|
@ -155,7 +156,7 @@ public:
|
|||
int GetProgramIndex(Program* program);
|
||||
|
||||
protected:
|
||||
Error StartTaskPen(bool down, int color = -1);
|
||||
Error StartTaskPen(bool down, TraceColor color = TraceColor::Default);
|
||||
|
||||
bool EventFrame(const Event &event);
|
||||
|
||||
|
@ -236,8 +237,7 @@ protected:
|
|||
TraceOper m_traceOper;
|
||||
Math::Vector m_tracePos;
|
||||
float m_traceAngle;
|
||||
int m_traceColor;
|
||||
TraceColor m_traceColor;
|
||||
int m_traceRecordIndex;
|
||||
TraceRecord* m_traceRecordBuffer;
|
||||
};
|
||||
|
||||
|
|
|
@ -68,7 +68,7 @@ CMotionVehicle::CMotionVehicle(COldObject* object) : CMotion(object)
|
|||
m_bFlyFix = false;
|
||||
|
||||
m_bTraceDown = false;
|
||||
m_traceColor = 1; // black
|
||||
m_traceColor = TraceColor::Black; // black
|
||||
m_traceWidth = 0.5f;
|
||||
}
|
||||
|
||||
|
@ -1909,12 +1909,12 @@ void CMotionVehicle::SetTraceDown(bool bDown)
|
|||
m_bTraceDown = bDown;
|
||||
}
|
||||
|
||||
int CMotionVehicle::GetTraceColor()
|
||||
TraceColor CMotionVehicle::GetTraceColor()
|
||||
{
|
||||
return m_traceColor;
|
||||
}
|
||||
|
||||
void CMotionVehicle::SetTraceColor(int color)
|
||||
void CMotionVehicle::SetTraceColor(TraceColor color)
|
||||
{
|
||||
m_traceColor = color;
|
||||
}
|
||||
|
@ -1928,4 +1928,3 @@ void CMotionVehicle::SetTraceWidth(float width)
|
|||
{
|
||||
m_traceWidth = width;
|
||||
}
|
||||
|
||||
|
|
|
@ -17,12 +17,11 @@
|
|||
* along with this program. If not, see http://gnu.org/licenses
|
||||
*/
|
||||
|
||||
// motionvehicle.h
|
||||
|
||||
#pragma once
|
||||
|
||||
|
||||
#include "object/motion/motion.h"
|
||||
#include "object/trace_color.h"
|
||||
|
||||
|
||||
|
||||
|
@ -38,8 +37,8 @@ public:
|
|||
|
||||
bool GetTraceDown();
|
||||
void SetTraceDown(bool bDown);
|
||||
int GetTraceColor();
|
||||
void SetTraceColor(int color);
|
||||
TraceColor GetTraceColor();
|
||||
void SetTraceColor(TraceColor color);
|
||||
float GetTraceWidth();
|
||||
void SetTraceWidth(float width);
|
||||
|
||||
|
@ -66,7 +65,6 @@ protected:
|
|||
Math::Vector m_posKey;
|
||||
bool m_bFlyFix;
|
||||
bool m_bTraceDown;
|
||||
int m_traceColor;
|
||||
TraceColor m_traceColor;
|
||||
float m_traceWidth;
|
||||
};
|
||||
|
||||
|
|
|
@ -156,7 +156,7 @@ Error CTaskManager::StartTaskTerraform()
|
|||
|
||||
// Changes the pencil.
|
||||
|
||||
Error CTaskManager::StartTaskPen(bool bDown, int color)
|
||||
Error CTaskManager::StartTaskPen(bool bDown, TraceColor color)
|
||||
{
|
||||
m_task = new CTaskPen(m_object);
|
||||
return (static_cast<CTaskPen*>(m_task))->Start(bDown, color);
|
||||
|
@ -263,4 +263,3 @@ bool CTaskManager::Abort()
|
|||
if ( m_task == 0 ) return false;
|
||||
return m_task->Abort();
|
||||
}
|
||||
|
||||
|
|
|
@ -27,6 +27,7 @@
|
|||
#include "object/task/taskgoto.h"
|
||||
#include "object/task/taskshield.h"
|
||||
#include "object/task/taskflag.h"
|
||||
#include "object/trace_color.h"
|
||||
|
||||
|
||||
|
||||
|
@ -48,7 +49,7 @@ public:
|
|||
Error StartTaskDeleteMark();
|
||||
Error StartTaskInfo(const char *name, float value, float power, bool bSend);
|
||||
Error StartTaskTerraform();
|
||||
Error StartTaskPen(bool bDown, int color);
|
||||
Error StartTaskPen(bool bDown, TraceColor color);
|
||||
Error StartTaskRecover();
|
||||
Error StartTaskShield(TaskShieldMode mode, float delay);
|
||||
Error StartTaskFire(float delay);
|
||||
|
@ -67,4 +68,3 @@ protected:
|
|||
COldObject* m_object;
|
||||
bool m_bPilot;
|
||||
};
|
||||
|
||||
|
|
|
@ -129,7 +129,7 @@ bool CTaskPen::EventProcess(const Event &event)
|
|||
|
||||
// Assigns the goal has achieved.
|
||||
|
||||
Error CTaskPen::Start(bool bDown, int color)
|
||||
Error CTaskPen::Start(bool bDown, TraceColor color)
|
||||
{
|
||||
Math::Vector pos;
|
||||
Math::Matrix* mat;
|
||||
|
@ -262,26 +262,28 @@ int CTaskPen::AngleToRank(float angle)
|
|||
|
||||
// Converting a color to the angle of carousel of pencils.
|
||||
|
||||
float CTaskPen::ColorToAngle(int color)
|
||||
float CTaskPen::ColorToAngle(TraceColor color)
|
||||
{
|
||||
return -45.0f*Math::PI/180.0f*ColorToRank(color);
|
||||
}
|
||||
|
||||
// Converting a color number to the pencil (0 .. 7).
|
||||
|
||||
int CTaskPen::ColorToRank(int color)
|
||||
int CTaskPen::ColorToRank(TraceColor color)
|
||||
{
|
||||
if ( color == 8 ) return 1; // yellow
|
||||
if ( color == 7 ) return 2; // orange
|
||||
if ( color == 5 ) return 2; // pink
|
||||
if ( color == 4 ) return 3; // red
|
||||
if ( color == 6 ) return 4; // purple
|
||||
if ( color == 14 ) return 5; // blue
|
||||
if ( color == 15 ) return 5; // light blue
|
||||
if ( color == 12 ) return 6; // green
|
||||
if ( color == 13 ) return 6; // light green
|
||||
if ( color == 10 ) return 7; // brown
|
||||
if ( color == 9 ) return 7; // beige
|
||||
if ( color == TraceColor::Yellow ) return 1; // yellow
|
||||
if ( color == TraceColor::Orange ) return 2; // orange
|
||||
if ( color == TraceColor::Pink ) return 2; // pink
|
||||
if ( color == TraceColor::Red ) return 3; // red
|
||||
if ( color == TraceColor::Purple ) return 4; // purple
|
||||
if ( color == TraceColor::Blue ) return 5; // blue
|
||||
if ( color == TraceColor::LightBlue ) return 5; // light blue
|
||||
if ( color == TraceColor::Green ) return 6; // green
|
||||
if ( color == TraceColor::LightGreen ) return 6; // light green
|
||||
if ( color == TraceColor::Brown ) return 7; // brown
|
||||
if ( color == TraceColor::Beige ) return 7; // beige
|
||||
|
||||
if ( color == TraceColor::RedArrow ) return 3; // red
|
||||
|
||||
return 0; // black
|
||||
}
|
||||
|
||||
|
|
|
@ -23,6 +23,7 @@
|
|||
|
||||
|
||||
#include "object/task/task.h"
|
||||
#include "object/trace_color.h"
|
||||
#include "math/vector.h"
|
||||
|
||||
|
||||
|
@ -44,15 +45,15 @@ public:
|
|||
|
||||
bool EventProcess(const Event &event);
|
||||
|
||||
Error Start(bool bDown, int color);
|
||||
Error Start(bool bDown, TraceColor color);
|
||||
Error IsEnded();
|
||||
bool Abort();
|
||||
|
||||
protected:
|
||||
void SoundManip(float time, float amplitude, float frequency);
|
||||
int AngleToRank(float angle);
|
||||
float ColorToAngle(int color);
|
||||
int ColorToRank(int color);
|
||||
float ColorToAngle(TraceColor color);
|
||||
int ColorToRank(TraceColor color);
|
||||
|
||||
protected:
|
||||
bool m_bError;
|
||||
|
@ -68,4 +69,3 @@ protected:
|
|||
float m_newAngle;
|
||||
float m_timeDown;
|
||||
};
|
||||
|
||||
|
|
|
@ -0,0 +1,44 @@
|
|||
/*
|
||||
* This file is part of the Colobot: Gold Edition source code
|
||||
* Copyright (C) 2001-2015, 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
|
||||
*/
|
||||
#include "object/trace_color.h"
|
||||
|
||||
std::string TraceColorName(TraceColor color)
|
||||
{
|
||||
switch(color) {
|
||||
case TraceColor::White: return "White"; break;
|
||||
case TraceColor::Black: return "Black"; break;
|
||||
case TraceColor::Gray: return "Gray"; break;
|
||||
case TraceColor::LightGray: return "LightGray"; break;
|
||||
case TraceColor::Red: return "Red"; break;
|
||||
case TraceColor::Pink: return "Pink"; break;
|
||||
case TraceColor::Purple: return "Purple"; break;
|
||||
case TraceColor::Orange: return "Orange"; break;
|
||||
case TraceColor::Yellow: return "Yellow"; break;
|
||||
case TraceColor::Beige: return "Beige"; break;
|
||||
case TraceColor::Brown: return "Brown"; break;
|
||||
case TraceColor::Skin: return "Skin"; break;
|
||||
case TraceColor::Green: return "Green"; break;
|
||||
case TraceColor::LightGreen: return "LightGreen"; break;
|
||||
case TraceColor::Blue: return "Blue"; break;
|
||||
case TraceColor::LightBlue: return "LightBlue"; break;
|
||||
case TraceColor::RedArrow: return "RedArrow"; break;
|
||||
case TraceColor::BlackArrow: return "BlackArrow"; break;
|
||||
default: return ""; break;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,47 @@
|
|||
/*
|
||||
* This file is part of the Colobot: Gold Edition source code
|
||||
* Copyright (C) 2001-2015, 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
|
||||
*/
|
||||
#pragma once
|
||||
|
||||
#include <string>
|
||||
|
||||
enum class TraceColor : int {
|
||||
Default = -1,
|
||||
|
||||
White = 0,
|
||||
Black = 1,
|
||||
Gray = 2,
|
||||
LightGray = 3,
|
||||
Red = 4,
|
||||
Pink = 5,
|
||||
Purple = 6,
|
||||
Orange = 7,
|
||||
Yellow = 8,
|
||||
Beige = 9,
|
||||
Brown = 10,
|
||||
Skin = 11,
|
||||
Green = 12,
|
||||
LightGreen = 13,
|
||||
Blue = 14,
|
||||
LightBlue = 15,
|
||||
RedArrow = 16,
|
||||
BlackArrow = 17,
|
||||
Max,
|
||||
};
|
||||
|
||||
std::string TraceColorName(TraceColor c);
|
|
@ -2423,7 +2423,7 @@ void CPhysics::FloorAdapt(float aTime, float rTime,
|
|||
}
|
||||
else
|
||||
{
|
||||
WheelParticle(-1, 0.0f);
|
||||
WheelParticle(TraceColor::Default, 0.0f);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -3748,7 +3748,7 @@ void CPhysics::WaterParticle(float aTime, Math::Vector pos, ObjectType type,
|
|||
|
||||
// Creates the trace under the robot.
|
||||
|
||||
void CPhysics::WheelParticle(int color, float width)
|
||||
void CPhysics::WheelParticle(TraceColor color, float width)
|
||||
{
|
||||
Math::Matrix* mat;
|
||||
Math::Vector goal1, goal2, wheel1, wheel2;
|
||||
|
@ -3758,11 +3758,11 @@ void CPhysics::WheelParticle(int color, float width)
|
|||
mat = m_object->GetWorldMatrix(0);
|
||||
|
||||
// Draw a trace on the ground.
|
||||
if ( color >= 0 && color <= 17 )
|
||||
if ( color != TraceColor::Default )
|
||||
{
|
||||
parti = static_cast<Gfx::ParticleType>(Gfx::PARTITRACE0+color);
|
||||
parti = static_cast<Gfx::ParticleType>(Gfx::PARTITRACE0+static_cast<int>(color));
|
||||
step = 2.0f;
|
||||
if ( color >= 16 ) step = 4.0f; // arrow?
|
||||
if ( static_cast<int>(color) >= static_cast<int>(TraceColor::RedArrow) ) step = 4.0f; // arrow?
|
||||
step /= m_engine->GetTracePrecision();
|
||||
|
||||
goal1.x = step/2.0f;
|
||||
|
@ -3892,4 +3892,3 @@ float CPhysics::GetFallDamageFraction()
|
|||
{
|
||||
return m_fallDamageFraction;
|
||||
}
|
||||
|
||||
|
|
|
@ -30,6 +30,7 @@
|
|||
#include "math/vector.h"
|
||||
|
||||
#include "object/object_type.h"
|
||||
#include "object/trace_color.h"
|
||||
|
||||
|
||||
class CObject;
|
||||
|
@ -205,7 +206,7 @@ protected:
|
|||
void CrashParticle(float crash);
|
||||
void MotorParticle(float aTime, float rTime);
|
||||
void WaterParticle(float aTime, Math::Vector pos, ObjectType type, float floor, float advance, float turn);
|
||||
void WheelParticle(int color, float width);
|
||||
void WheelParticle(TraceColor color, float width);
|
||||
void SetFalling();
|
||||
|
||||
protected:
|
||||
|
@ -268,4 +269,3 @@ protected:
|
|||
float m_fallDamageFraction;
|
||||
float m_minFallingHeight;
|
||||
};
|
||||
|
||||
|
|
|
@ -36,6 +36,7 @@
|
|||
#include "object/brain.h"
|
||||
#include "object/object.h"
|
||||
#include "object/object_manager.h"
|
||||
#include "object/trace_color.h"
|
||||
#include "object/robotmain.h"
|
||||
#include "object/task/taskmanager.h"
|
||||
#include "object/subclass/exchange_post.h"
|
||||
|
@ -1642,6 +1643,11 @@ bool CScriptFunctions::rProduce(CBotVar* var, CBotVar* result, int& exception, v
|
|||
result->SetValInt(1); // error
|
||||
return true;
|
||||
}
|
||||
if(type == OBJECT_MOBILEdr)
|
||||
{
|
||||
assert(object->Implements(ObjectInterfaceType::Old)); // TODO: temporary hack
|
||||
dynamic_cast<COldObject*>(object)->SetManual(true);
|
||||
}
|
||||
script->m_main->CreateShortcuts();
|
||||
}
|
||||
|
||||
|
@ -2934,30 +2940,30 @@ bool CScriptFunctions::rPenDown(CBotVar* var, CBotVar* result, int& exception, v
|
|||
CMotionVehicle* motionVehicle = dynamic_cast<CMotionVehicle*>(pThis->GetMotion());
|
||||
assert(motionVehicle != nullptr);
|
||||
|
||||
exception = 0;
|
||||
|
||||
if ( var != 0 )
|
||||
{
|
||||
color = var->GetValInt();
|
||||
if ( color < 0 ) color = 0;
|
||||
if ( color > static_cast<int>(TraceColor::Max) ) color = static_cast<int>(TraceColor::Max);
|
||||
motionVehicle->SetTraceColor(static_cast<TraceColor>(color));
|
||||
|
||||
var = var->GetNext();
|
||||
if ( var != 0 )
|
||||
{
|
||||
width = var->GetValFloat();
|
||||
if ( width < 0.1f ) width = 0.1f;
|
||||
if ( width > 1.0f ) width = 1.0f;
|
||||
motionVehicle->SetTraceWidth(width);
|
||||
}
|
||||
}
|
||||
motionVehicle->SetTraceDown(true);
|
||||
|
||||
if ( pThis->GetType() == OBJECT_MOBILEdr )
|
||||
{
|
||||
exception = 0;
|
||||
|
||||
if ( script->m_primaryTask == 0 ) // no task in progress?
|
||||
{
|
||||
if ( var != 0 )
|
||||
{
|
||||
color = var->GetValInt();
|
||||
if ( color < 0 ) color = 0;
|
||||
if ( color > 17 ) color = 17;
|
||||
motionVehicle->SetTraceColor(color);
|
||||
|
||||
var = var->GetNext();
|
||||
if ( var != 0 )
|
||||
{
|
||||
width = var->GetValFloat();
|
||||
if ( width < 0.1f ) width = 0.1f;
|
||||
if ( width > 1.0f ) width = 1.0f;
|
||||
motionVehicle->SetTraceWidth(width);
|
||||
}
|
||||
}
|
||||
motionVehicle->SetTraceDown(true);
|
||||
|
||||
script->m_primaryTask = new CTaskManager(script->m_object);
|
||||
err = script->m_primaryTask->StartTaskPen(motionVehicle->GetTraceDown(), motionVehicle->GetTraceColor());
|
||||
if ( err != ERR_OK )
|
||||
|
@ -2977,24 +2983,6 @@ bool CScriptFunctions::rPenDown(CBotVar* var, CBotVar* result, int& exception, v
|
|||
}
|
||||
else
|
||||
{
|
||||
if ( var != 0 )
|
||||
{
|
||||
color = var->GetValInt();
|
||||
if ( color < 0 ) color = 0;
|
||||
if ( color > 17 ) color = 17;
|
||||
motionVehicle->SetTraceColor(color);
|
||||
|
||||
var = var->GetNext();
|
||||
if ( var != 0 )
|
||||
{
|
||||
width = var->GetValFloat();
|
||||
if ( width < 0.1f ) width = 0.1f;
|
||||
if ( width > 1.0f ) width = 1.0f;
|
||||
motionVehicle->SetTraceWidth(width);
|
||||
}
|
||||
}
|
||||
motionVehicle->SetTraceDown(true);
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
@ -3010,10 +2998,12 @@ bool CScriptFunctions::rPenUp(CBotVar* var, CBotVar* result, int& exception, voi
|
|||
CMotionVehicle* motionVehicle = dynamic_cast<CMotionVehicle*>(pThis->GetMotion());
|
||||
assert(motionVehicle != nullptr);
|
||||
|
||||
exception = 0;
|
||||
|
||||
motionVehicle->SetTraceDown(false);
|
||||
|
||||
if ( pThis->GetType() == OBJECT_MOBILEdr )
|
||||
{
|
||||
exception = 0;
|
||||
|
||||
if ( script->m_primaryTask == 0 ) // no task in progress?
|
||||
{
|
||||
motionVehicle->SetTraceDown(false);
|
||||
|
@ -3037,7 +3027,6 @@ bool CScriptFunctions::rPenUp(CBotVar* var, CBotVar* result, int& exception, voi
|
|||
}
|
||||
else
|
||||
{
|
||||
motionVehicle->SetTraceDown(false);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
@ -3054,17 +3043,17 @@ bool CScriptFunctions::rPenColor(CBotVar* var, CBotVar* result, int& exception,
|
|||
CMotionVehicle* motionVehicle = dynamic_cast<CMotionVehicle*>(pThis->GetMotion());
|
||||
assert(motionVehicle != nullptr);
|
||||
|
||||
exception = 0;
|
||||
|
||||
color = var->GetValInt();
|
||||
if ( color < 0 ) color = 0;
|
||||
if ( color > static_cast<int>(TraceColor::Max) ) color = static_cast<int>(TraceColor::Max);
|
||||
motionVehicle->SetTraceColor(static_cast<TraceColor>(color));
|
||||
|
||||
if ( pThis->GetType() == OBJECT_MOBILEdr )
|
||||
{
|
||||
exception = 0;
|
||||
|
||||
if ( script->m_primaryTask == 0 ) // no task in progress?
|
||||
{
|
||||
color = var->GetValInt();
|
||||
if ( color < 0 ) color = 0;
|
||||
if ( color > 17 ) color = 17;
|
||||
motionVehicle->SetTraceColor(color);
|
||||
|
||||
script->m_primaryTask = new CTaskManager(script->m_object);
|
||||
err = script->m_primaryTask->StartTaskPen(motionVehicle->GetTraceDown(), motionVehicle->GetTraceColor());
|
||||
if ( err != ERR_OK )
|
||||
|
@ -3084,11 +3073,6 @@ bool CScriptFunctions::rPenColor(CBotVar* var, CBotVar* result, int& exception,
|
|||
}
|
||||
else
|
||||
{
|
||||
color = var->GetValInt();
|
||||
if ( color < 0 ) color = 0;
|
||||
if ( color > 17 ) color = 17;
|
||||
motionVehicle->SetTraceColor(color);
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
@ -3676,24 +3660,11 @@ void CScriptFunctions::Init()
|
|||
}
|
||||
CBotProgram::DefineNum("Any", OBJECT_NULL);
|
||||
|
||||
CBotProgram::DefineNum("White", 0);
|
||||
CBotProgram::DefineNum("Black", 1);
|
||||
CBotProgram::DefineNum("Gray", 2);
|
||||
CBotProgram::DefineNum("LightGray", 3);
|
||||
CBotProgram::DefineNum("Red", 4);
|
||||
CBotProgram::DefineNum("Pink", 5);
|
||||
CBotProgram::DefineNum("Purple", 6);
|
||||
CBotProgram::DefineNum("Orange", 7);
|
||||
CBotProgram::DefineNum("Yellow", 8);
|
||||
CBotProgram::DefineNum("Beige", 9);
|
||||
CBotProgram::DefineNum("Brown", 10);
|
||||
CBotProgram::DefineNum("Skin", 11);
|
||||
CBotProgram::DefineNum("Green", 12);
|
||||
CBotProgram::DefineNum("LightGreen", 13);
|
||||
CBotProgram::DefineNum("Blue", 14);
|
||||
CBotProgram::DefineNum("LightBlue", 15);
|
||||
CBotProgram::DefineNum("BlackArrow", 16);
|
||||
CBotProgram::DefineNum("RedArrow", 17);
|
||||
for (int i = 0; i < static_cast<int>(TraceColor::Max); i++)
|
||||
{
|
||||
TraceColor color = static_cast<TraceColor>(i);
|
||||
CBotProgram::DefineNum(TraceColorName(color).c_str(), static_cast<int>(color));
|
||||
}
|
||||
|
||||
CBotProgram::DefineNum("InFront", TMA_FFRONT);
|
||||
CBotProgram::DefineNum("Behind", TMA_FBACK);
|
||||
|
|
Loading…
Reference in New Issue