def DepthPerception(before,after,vision=False): cmeta = ops.loadmeta() cloc = ops.loadcloc() bMetaIDs = ops.fetchXYZMIDs(before.xyz) aMetaIDs = ops.fetchXYZMIDs(after.xyz) eMetaIDs = ops.conKIDs(bMetaIDs, aMetaIDs) pack = Packet() pack.refresh = True pack.who = cmeta.kid if before.databits != after.databits: pack.type = 'Databits' pack.metakind = before.metakind pack.metaid = before.metaid pack.kid = before.kid pack.medo = after for metaID in eMetaIDs: channel.send_message(str(metaID), ops.jsonify(pack)) elif before.xyz != after.xyz: #Relocation pack.metakind = before.metakind pack.metaid = before.metaid pack.kid = before.kid pack.fromkind = before.cokind pack.tokind = after.cokind pack.fromkid = before.cokind + str(before.coid) pack.tokid = after.cokind + str(after.coid) pack.medo = after # for metaID in eMetaIDs: # channel.send_message(str(metaID), ops.jsonify(pack)) for bMeta in bMetaIDs: pack.type = 'MedoMove' channel.send_message(str(bMeta), ops.jsonify(pack)) for aMeta in aMetaIDs: if after.metakind != 'Meta': if after.cowner == cmeta.kid: pack.type = 'ItemUpdate' else: pack.type = 'ItemArrive' elif aMeta == cmeta.metaid: #ops.mdb(aMeta, 'test') pack.type = 'YouArrive' pack.cloc = cloc pack.nMetas = ops.fetchLocalMetas(after.metakind, after.metaid) pack.nItems = ops.fetchLocalItems(after.metakind, after.metaid) else: pack.type = 'MetaArrive' channel.send_message(str(aMeta), ops.jsonify(pack)) else: ops.mdb('This is else') if vision: for metaID in eMetaIDs: pack = Packet() pack.type = 'vision' pack.vision = True pack.formatted = vision channel.send_message(str(metaID), ops.jsonify(pack))
def get(self): cmeta = ops.loadmeta() localmetas = ops.fetchLocalMetas('Meta',cmeta.metaid) self.response.out.write(ops.sonify(localmetas))
def get(self): self.response.out.write(ops.fetchLocalMetas('Meta', 37))
def post(self, direction): cmeta = ops.loadmeta() cmeta.cokind = 'Location' #Not robust premove = copy.copy(ops.loadmeta()) cloc = ops.loadcloc() localmetas = ops.fetchLocalMetaMetaIDs('Meta',cmeta.metaid) pack = Packet() pack.scope = 'local' pack.type = 'move' for localmeta in localmetas: if localmeta == cmeta.metaid: pack.content = "You move " + ops.dirFull(direction) + "." pack.type = 'usermove' channel.send_message(str(localmeta), ops.jsonify(pack)) else: pack.content = cmeta.name + " has moved " + ops.dirFull(direction) pack.name = cmeta.name pack.destination = ops.dirFull(direction) pack.type = 'userleave' channel.send_message(str(localmeta), ops.jsonify(pack)) if direction == 'n': cmeta.yloc = str(int(cmeta.yloc)+1) elif direction == 's': cmeta.yloc = str(int(cmeta.yloc)-1) elif direction == 'e': cmeta.xloc = str(int(cmeta.xloc)+1) elif direction == 'w': cmeta.xloc = str(int(cmeta.xloc)-1) elif direction == 'u': cmeta.zloc = str(int(cmeta.zloc)+1) elif direction == 'd': cmeta.zloc = str(int(cmeta.zloc)-1) elif direction == 'ne': cmeta.xloc = str(int(cmeta.xloc)+1) cmeta.yloc = str(int(cmeta.yloc)+1) elif direction == 'se': cmeta.xloc = str(int(cmeta.xloc)+1) cmeta.yloc = str(int(cmeta.yloc)-1) elif direction == 'sw': cmeta.xloc = str(int(cmeta.xloc)-1) cmeta.yloc = str(int(cmeta.yloc)-1) elif direction == 'nw': cmeta.xloc = str(int(cmeta.xloc)-1) cmeta.yloc = str(int(cmeta.yloc)+1) cmeta.put() newlocalmetas = ops.fetchLocalMetaMetaIDs('Meta',cmeta.metaid) for newlocalmeta in newlocalmetas: if newlocalmeta == cmeta.metaid: pass else: pack.content = cmeta.name + " has arrived from the " + ops.dirOpp(direction) pack.type = 'userenter' pack.name = cmeta.name pack.destination = ops.dirOpp(direction) channel.send_message(str(newlocalmeta), ops.jsonify(pack)) DepthPerception(premove,cmeta) #self.response.out.write(cmeta.xloc+cmeta.yloc+cmeta.zloc+cmeta.lattice) nLocaMetas = ops.fetchLocalMetas(Meta, cmeta.metaid) nloc = Packet() nloc.locdata = cloc nloc.metashere = nLocaMetas self.response.out.write(ops.jsonify(nloc))