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

from atlas import *

from common import const

import server

class Fire(server.Thing):
    """fire to burn things up"""
    #CHEAT! make it more realistic (like spreading to things that burn near)
    def extinguish_operation(self, op):
        """If somebody tries to extinguish us, change status lower"""
        self.status=self.status-0.25
        self_ent=Entity(self.id,status=self.status)
        #print "Extinguish:",self,self.location.parent,self.status,op.from_
        return Operation("set",self_ent,to=self)
    def tick_operation(self, op):
        """things to do every tick, see comments"""
        #print `self`,"Got tick operation:\n",op
        #Is fire extinguished?
        # if self.status<0.0:
            # return Operation("delete",Entity(self.id),to=self)

        #Have we burned up our parent container?
        if server.world==self.location.parent:
            return Operation("delete",Entity(self.id),to=self)

        #Send burn operation to parent container
        self_ent=Entity(self.id,status=self.status)
        opBurn=Operation("burn",self_ent,to=self.location.parent)
        if self.status<0.2:
            status=self.status-0.02
        else:
            status=self.status-0.02
        if status > 1:
            status=1
        self_ent2=Entity(self.id,status=status)
        opSet=Operation("set",self_ent2,to=self)

        #and call this method later
        opTick=Operation("tick",to=self)
        opTick.setFutureSeconds(const.basic_tick*4)
        return Oplist(opBurn,Operation("sight",opBurn),opTick,opSet)
    def nourish_operation(self, op):
        #Increase fire
        inc=op[0].mass
        self.status=self.status+inc
        #No need to send a set. The next tick will deal with that.
    #def move_operation(self, op): pass
