projects
/
supertux.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Magic Blocks. (DrawingContext::get_light is not working yet.)
[supertux.git]
/
src
/
object
/
camera.cpp
diff --git
a/src/object/camera.cpp
b/src/object/camera.cpp
index
7f836b5
..
b9d0097
100644
(file)
--- a/
src/object/camera.cpp
+++ b/
src/object/camera.cpp
@@
-39,10
+39,11
@@
#include "path.hpp"
#include "path_walker.hpp"
#include "path.hpp"
#include "path_walker.hpp"
-Camera::Camera(Sector* newsector)
- : sector(newsector), do_backscrolling(true), scrollchange(NONE)
+Camera::Camera(Sector* newsector, std::string name)
+ : mode(NORMAL), sector(newsector), do_backscrolling(true),
+ scrollchange(NONE)
{
{
-
mode = NORMAL
;
+
this->name = name
;
}
Camera::~Camera()
}
Camera::~Camera()
@@
-52,14
+53,16
@@
Camera::~Camera()
void
Camera::expose(HSQUIRRELVM vm, SQInteger table_idx)
{
void
Camera::expose(HSQUIRRELVM vm, SQInteger table_idx)
{
+ if(name.empty()) return;
Scripting::Camera* interface = new Scripting::Camera(this);
Scripting::Camera* interface = new Scripting::Camera(this);
- expose_object(vm, table_idx, interface,
"Camera"
, true);
+ expose_object(vm, table_idx, interface,
name
, true);
}
void
Camera::unexpose(HSQUIRRELVM vm, SQInteger table_idx)
{
}
void
Camera::unexpose(HSQUIRRELVM vm, SQInteger table_idx)
{
- Scripting::unexpose_object(vm, table_idx, "Camera");
+ if(name.empty()) return;
+ Scripting::unexpose_object(vm, table_idx, name);
}
const Vector&
}
const Vector&
@@
-72,7
+75,7
@@
void
Camera::parse(const lisp::Lisp& reader)
{
std::string modename;
Camera::parse(const lisp::Lisp& reader)
{
std::string modename;
-
+
reader.get("mode", modename);
if(modename == "normal") {
mode = NORMAL;
reader.get("mode", modename);
if(modename == "normal") {
mode = NORMAL;
@@
-102,7
+105,7
@@
void
Camera::write(lisp::Writer& writer)
{
writer.start_list("camera");
Camera::write(lisp::Writer& writer)
{
writer.start_list("camera");
-
+
if(mode == NORMAL) {
writer.write_string("mode", "normal");
writer.write_bool("backscrolling", do_backscrolling);
if(mode == NORMAL) {
writer.write_string("mode", "normal");
writer.write_bool("backscrolling", do_backscrolling);
@@
-112,7
+115,7
@@
Camera::write(lisp::Writer& writer)
} else if(mode == MANUAL) {
writer.write_string("mode", "manual");
}
} else if(mode == MANUAL) {
writer.write_string("mode", "manual");
}
-
+
writer.end_list("camera");
}
writer.end_list("camera");
}
@@
-177,12
+180,12
@@
Camera::keep_in_bounds(Vector& translation)
// don't scroll before the start or after the level's end
if(translation.y > height - SCREEN_HEIGHT)
translation.y = height - SCREEN_HEIGHT;
// don't scroll before the start or after the level's end
if(translation.y > height - SCREEN_HEIGHT)
translation.y = height - SCREEN_HEIGHT;
- if(translation.y < 0)
- translation.y = 0;
+ if(translation.y < 0)
+ translation.y = 0;
if(translation.x > width - SCREEN_WIDTH)
translation.x = width - SCREEN_WIDTH;
if(translation.x < 0)
if(translation.x > width - SCREEN_WIDTH)
translation.x = width - SCREEN_WIDTH;
if(translation.x < 0)
- translation.x = 0;
+ translation.x = 0;
}
void
}
void
@@
-199,7
+202,7
@@
Camera::update_scroll_normal(float elapsed_time)
{
assert(sector != 0);
Player* player = sector->player;
{
assert(sector != 0);
Player* player = sector->player;
-
+
// check that we don't have division by zero later
if(elapsed_time < EPSILON)
return;
// check that we don't have division by zero later
if(elapsed_time < EPSILON)
return;
@@
-227,7
+230,7
@@
Camera::update_scroll_normal(float elapsed_time)
float speed_y = delta_y / elapsed_time;
// limit the camera speed when jumping upwards
float speed_y = delta_y / elapsed_time;
// limit the camera speed when jumping upwards
- if(player->fall_mode != Player::FALLING
+ if(player->fall_mode != Player::FALLING
&& player->fall_mode != Player::TRAMPOLINE_JUMP) {
if(speed_y > max_speed_y)
speed_y = max_speed_y;
&& player->fall_mode != Player::TRAMPOLINE_JUMP) {
if(speed_y > max_speed_y)
speed_y = max_speed_y;
@@
-246,7
+249,7
@@
Camera::update_scroll_normal(float elapsed_time)
/****** Horizontal scrolling part *******/
// our camera is either in leftscrolling, rightscrolling or nonscrollingmode.
/****** Horizontal scrolling part *******/
// our camera is either in leftscrolling, rightscrolling or nonscrollingmode.
-
+
// when suddenly changing directions while scrolling into the other direction.
// abort scrolling, since tux might be going left/right at a relatively small
// part of the map (like when jumping upwards)
// when suddenly changing directions while scrolling into the other direction.
// abort scrolling, since tux might be going left/right at a relatively small
// part of the map (like when jumping upwards)
@@
-289,7
+292,7
@@
Camera::update_scroll_normal(float elapsed_time)
if( player->peeking_direction() == ::RIGHT ){
speed_x = -maxv;
}
if( player->peeking_direction() == ::RIGHT ){
speed_x = -maxv;
}
-
+
// apply scrolling
translation.x -= speed_x * elapsed_time;
// apply scrolling
translation.x -= speed_x * elapsed_time;
@@
-304,7
+307,7
@@
Camera::update_scroll_normal(float elapsed_time)
void
Camera::update_scroll_autoscroll(float elapsed_time)
{
void
Camera::update_scroll_autoscroll(float elapsed_time)
{
- Player* player = sector->player;
+ Player* player = sector->player;
if(player->is_dying())
return;
if(player->is_dying())
return;
@@
-326,4
+329,3
@@
Camera::update_scroll_to(float elapsed_time)
translation = scroll_from + (scroll_goal - scroll_from) * scroll_to_pos;
}
translation = scroll_from + (scroll_goal - scroll_from) * scroll_to_pos;
}
-