X-Git-Url: https://git.verplant.org/?a=blobdiff_plain;f=src%2Ftrigger%2Fsequence_trigger.cpp;h=7491a08b070b1e7f42e270a11bf3396a90abae8c;hb=c1277f5b7db9f55d1d28f658b4e804f32b76f0ce;hp=b02bb5ebcb73003f2ad04c2406ba77de47fb09f6;hpb=6fe1f3519eecbbb75eca97c45a6697eee36b2442;p=supertux.git diff --git a/src/trigger/sequence_trigger.cpp b/src/trigger/sequence_trigger.cpp index b02bb5ebc..7491a08b0 100644 --- a/src/trigger/sequence_trigger.cpp +++ b/src/trigger/sequence_trigger.cpp @@ -1,17 +1,41 @@ -#include - -#include "sequence_trigger.h" -#include "utils/lispwriter.h" -#include "gameloop.h" - -SequenceTrigger::SequenceTrigger(LispReader& reader) +// SuperTux +// Copyright (C) 2006 Matthias Braun +// +// 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 . + +#include "object/player.hpp" +#include "supertux/object_factory.hpp" +#include "trigger/sequence_trigger.hpp" +#include "util/reader.hpp" + +SequenceTrigger::SequenceTrigger(const Reader& reader) : + triggerevent(), + sequence_name() { - (void) reader; - // TODO + reader.get("x", bbox.p1.x); + reader.get("y", bbox.p1.y); + float w = 0, h = 0; + reader.get("width", w); + reader.get("height", h); + bbox.set_size(w, h); + reader.get("sequence", sequence_name); + triggerevent = EVENT_TOUCH; } -SequenceTrigger::SequenceTrigger(const Vector& pos, - const std::string& sequence) +SequenceTrigger::SequenceTrigger(const Vector& pos, const std::string& sequence) : + triggerevent(), + sequence_name() { bbox.set_pos(pos); bbox.set_size(32, 32); @@ -24,23 +48,13 @@ SequenceTrigger::~SequenceTrigger() } void -SequenceTrigger::write(LispWriter& writer) -{ - writer.start_list("sequencetrigger"); - - writer.write_float("x", bbox.p1.x); - writer.write_float("y", bbox.p1.y); - writer.write_float("width", bbox.get_width()); - writer.write_float("height", bbox.get_height()); - writer.write_string("sequence", sequence_name); - - writer.end_list("sequencetrigger"); -} - -void -SequenceTrigger::event(Player& , EventType type) +SequenceTrigger::event(Player& player, EventType type) { if(type == triggerevent) { - GameSession::current()->start_sequence(sequence_name); + player.trigger_sequence(sequence_name); } } + +IMPLEMENT_FACTORY(SequenceTrigger, "sequencetrigger"); + +/* EOF */