#This file is distributed under the terms of the GNU General Public license.
#Copyright (C) 2005 Al Riddoch (See the file COPYING for details).

from atlas import *

from physics import Point3D
from physics import BBox

import server

class Torch(server.Thing):
    """This is base class for axes, this one just ordinary axe"""
    def ignite_operation(self, op):
        fire_child=None
        for child in self.contains:
            if child.type[0] == 'fire':
                fire_child = child
        if not fire_child:
            return
        to_ = op[0].id
        if not to_:
            return self.error(op,"To is undefined object")
        return Operation("create",Entity(parents=['fire'],status=fire_child.status, location=Location(server.world.get_object(to_),Point3D(0.0,0.0,0.0))),to=to_)
    def burn_operation(self, op):
        fire_status = op[0].status
        to_ = op[0].id
        ret = Oplist()
        if fire_status < 0.5:
            ret = ret + Operation("nourish", Entity(op[0].id, mass=(0.5 - fire_status)), to=to_)
        fire_loc = Location(self, Point3D(0,0,0.75))
        fire_loc.bbox = BBox(0.05, 0.05, 0.5)
        ret = ret + Operation("move", Entity(to_, location=fire_loc, mode='fixed'), to=to_)
        return ret
