summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorkrzys-h <krzys_h@interia.pl>2014-10-22 17:52:17 +0200
committerkrzys-h <krzys_h@interia.pl>2014-10-22 17:52:17 +0200
commit2d043d46bb85f486847300080e4d58add49c0a44 (patch)
treeb79da960c4d3b7d0452b0a199be19da61133df30 /src
parentd3a722a0c56119f13d5ff3e68e9f4560c7924788 (diff)
parentd019a4990f2e2da71555daf085a3e09c92085fa5 (diff)
downloadcolobot-2d043d46bb85f486847300080e4d58add49c0a44.tar.gz
colobot-2d043d46bb85f486847300080e4d58add49c0a44.tar.bz2
colobot-2d043d46bb85f486847300080e4d58add49c0a44.zip
Merge branch 'vieux-blood_mode' into dev
Conflicts: src/common/restext.cpp src/ui/maindialog.cpp
Diffstat (limited to 'src')
-rw-r--r--src/common/event.h1
-rw-r--r--src/common/restext.cpp1
-rw-r--r--src/graphics/engine/camera.cpp10
-rw-r--r--src/graphics/engine/camera.h4
-rw-r--r--src/graphics/engine/pyro.cpp6
-rw-r--r--src/ui/maindialog.cpp23
-rw-r--r--src/ui/maindialog.h1
7 files changed, 43 insertions, 3 deletions
diff --git a/src/common/event.h b/src/common/event.h
index 7637e34..bb9e123 100644
--- a/src/common/event.h
+++ b/src/common/event.h
@@ -240,6 +240,7 @@ enum EventType
EVENT_INTERFACE_EDITMODE= 476,
EVENT_INTERFACE_EDITVALUE= 477,
EVENT_INTERFACE_SOLUCE4 = 478,
+ EVENT_INTERFACE_BLOOD = 479,
EVENT_INTERFACE_KINFO1 = 500,
EVENT_INTERFACE_KINFO2 = 501,
diff --git a/src/common/restext.cpp b/src/common/restext.cpp
index dcecb81..95e015c 100644
--- a/src/common/restext.cpp
+++ b/src/common/restext.cpp
@@ -205,6 +205,7 @@ void InitializeRestext()
stringsEvent[EVENT_INTERFACE_EDITMODE] = TR("Automatic indent\\When program editing");
stringsEvent[EVENT_INTERFACE_EDITVALUE] = TR("Big indent\\Indent 2 or 4 spaces per level defined by braces");
stringsEvent[EVENT_INTERFACE_SOLUCE4] = TR("Access to solutions\\Show program \"4: Solution\" in the exercises");
+ stringsEvent[EVENT_INTERFACE_BLOOD] = TR("Blood\\Display blood when the astronaut or the alien queen is hit");
stringsEvent[EVENT_INTERFACE_KDEF] = TR("Standard controls\\Standard key functions");
stringsEvent[EVENT_INTERFACE_KLEFT] = TR("Turn left\\turns the bot to the left");
diff --git a/src/graphics/engine/camera.cpp b/src/graphics/engine/camera.cpp
index b7769ab..6464b22 100644
--- a/src/graphics/engine/camera.cpp
+++ b/src/graphics/engine/camera.cpp
@@ -139,6 +139,7 @@ CCamera::CCamera()
m_scriptLookat = Math::Vector(0.0f, 0.0f, 0.0f);
m_effect = true;
+ m_blood = true;
m_cameraScroll = true;
m_cameraInvertX = false;
m_cameraInvertY = false;
@@ -153,6 +154,15 @@ void CCamera::SetEffect(bool enable)
m_effect = enable;
}
+void CCamera::SetBlood(bool enable)
+{
+ m_blood = enable;
+}
+
+bool CCamera::GetBlood() {
+ return m_blood;
+}
+
void CCamera::SetCameraScroll(bool scroll)
{
m_cameraScroll = scroll;
diff --git a/src/graphics/engine/camera.h b/src/graphics/engine/camera.h
index 3478086..4fe821f 100644
--- a/src/graphics/engine/camera.h
+++ b/src/graphics/engine/camera.h
@@ -200,6 +200,8 @@ public:
void SetScriptLookat(Math::Vector lookat);
void SetEffect(bool enable);
+ void SetBlood(bool enable);
+ bool GetBlood();
void SetCameraScroll(bool scroll);
void SetCameraInvertX(bool invert);
void SetCameraInvertY(bool invert);
@@ -381,6 +383,8 @@ protected:
//! Shocks if explosion?
bool m_effect;
+ //! Blood?
+ bool m_blood;
//! Scroll in the edges?
bool m_cameraScroll;
//! X inversion in the edges?
diff --git a/src/graphics/engine/pyro.cpp b/src/graphics/engine/pyro.cpp
index 42f0e84..8d5d323 100644
--- a/src/graphics/engine/pyro.cpp
+++ b/src/graphics/engine/pyro.cpp
@@ -314,7 +314,7 @@ bool CPyro::Create(PyroType type, CObject* obj, float force)
}
if ( m_type == PT_SHOTH )
{
- if ( m_object->GetSelect() )
+ if ( m_camera->GetBlood() && m_object->GetSelect() )
{
m_camera->StartOver(CAM_OVER_EFFECT_BLOOD, m_pos, force);
}
@@ -674,7 +674,7 @@ bool CPyro::EventProcess(const Event &event)
}
}
- if ( m_type == PT_SHOTH &&
+ if ( m_camera->GetBlood() && m_type == PT_SHOTH &&
m_lastParticle+m_engine->ParticleAdapt(0.05f) <= m_time )
{
m_lastParticle = m_time;
@@ -696,7 +696,7 @@ bool CPyro::EventProcess(const Event &event)
}
}
- if ( m_type == PT_SHOTM &&
+ if ( m_camera->GetBlood() && m_type == PT_SHOTM &&
m_lastParticle+m_engine->ParticleAdapt(0.05f) <= m_time )
{
m_lastParticle = m_time;
diff --git a/src/ui/maindialog.cpp b/src/ui/maindialog.cpp
index cc0c8ec..fe40609 100644
--- a/src/ui/maindialog.cpp
+++ b/src/ui/maindialog.cpp
@@ -170,6 +170,7 @@ CMainDialog::CMainDialog()
m_bCameraInvertX = false;
m_bCameraInvertY = false;
m_bEffect = true;
+ m_bBlood = true;
m_shotDelay = 0;
m_glintMouse = Math::Point(0.0f, 0.0f);
@@ -1213,6 +1214,9 @@ void CMainDialog::ChangePhase(Phase phase)
pos.y -= 0.048f;
pc = pw->CreateCheck(pos, ddim, -1, EVENT_INTERFACE_EFFECT);
pc->SetState(STATE_SHADOW);
+ pos.y -= 0.048f;
+ pc = pw->CreateCheck(pos, ddim, -1, EVENT_INTERFACE_BLOOD);
+ pc->SetState(STATE_SHADOW);
//? pos.y -= 0.048f;
//? pc = pw->CreateCheck(pos, ddim, -1, EVENT_INTERFACE_NICERST);
//? pc->SetState(STATE_SHADOW);
@@ -2535,6 +2539,13 @@ bool CMainDialog::EventProcess(const Event &event)
UpdateSetupButtons();
break;
+ case EVENT_INTERFACE_BLOOD:
+ m_bBlood = !m_bBlood;
+ m_camera->SetBlood(m_bBlood);
+ ChangeSetupButtons();
+ UpdateSetupButtons();
+ break;
+
default:
break;
}
@@ -4856,6 +4867,12 @@ void CMainDialog::UpdateSetupButtons()
pc->SetState(STATE_CHECK, m_bEffect);
}
+ pc = static_cast<CCheck*>(pw->SearchControl(EVENT_INTERFACE_BLOOD));
+ if ( pc != 0 )
+ {
+ pc->SetState(STATE_CHECK, m_bBlood);
+ }
+
pc = static_cast<CCheck*>(pw->SearchControl(EVENT_INTERFACE_SHADOW));
if ( pc != 0 )
{
@@ -5041,6 +5058,7 @@ void CMainDialog::SetupMemorize()
GetProfile().SetIntProperty("Setup", "CameraInvertX", m_bCameraInvertX);
GetProfile().SetIntProperty("Setup", "CameraInvertY", m_bCameraInvertY);
GetProfile().SetIntProperty("Setup", "InterfaceEffect", m_bEffect);
+ GetProfile().SetIntProperty("Setup", "Blood", m_bBlood);
GetProfile().SetIntProperty("Setup", "GroundShadow", m_engine->GetShadow());
GetProfile().SetIntProperty("Setup", "GroundSpot", m_engine->GetGroundSpot());
GetProfile().SetIntProperty("Setup", "ObjectDirty", m_engine->GetDirty());
@@ -5189,6 +5207,11 @@ void CMainDialog::SetupRecall()
m_bEffect = iValue;
}
+ if ( GetProfile().GetIntProperty("Setup", "Blood", iValue) )
+ {
+ m_bBlood = iValue;
+ }
+
if ( GetProfile().GetIntProperty("Setup", "GroundShadow", iValue) )
{
m_engine->SetShadow(iValue);
diff --git a/src/ui/maindialog.h b/src/ui/maindialog.h
index 1ff9045..355b18e 100644
--- a/src/ui/maindialog.h
+++ b/src/ui/maindialog.h
@@ -245,6 +245,7 @@ protected:
bool m_bCameraInvertX; // for CCamera
bool m_bCameraInvertY; // for CCamera
bool m_bEffect; // for CCamera
+ bool m_bBlood; // for CCamera
Math::Point m_glintMouse;
float m_glintTime;