Ejemplo n.º 1
0
    def write_foreach(self, writer):
        writer.start_brace()
        eval_name = self.convert_index(0)

        obj_param = self.parameters[1].loader
        obj = (obj_param.objectInfo, obj_param.objectType)
        obj = self.converter.filter_object_type(obj)
        object_class = self.converter.get_object_class(obj[1])
        foreach = self.converter.get_object_writer(self.get_object())
        loop_names = foreach.loop_names
        name = None
        try:
            exp, = self.parameters[0].loader.items[:-1]
            real_name = exp.loader.value
            if real_name not in loop_names:
                print 'invalid foreach loop:', real_name, loop_names
                writer.end_brace()
                return
            name = get_method_name(real_name)
            func_call = loop_names[real_name]
        except ValueError:
            raise NotImplementedError()
            writer.putln('std::string name = %s;' % eval_name)
            func_call = 'call_dynamic_foreach(name, '
            object_class = 'FrameObject*'
        obj_param = self.parameters[1].loader
        obj = (obj_param.objectInfo, obj_param.objectType)
        with self.converter.iterate_object(obj, writer, 'selected'):
            if name is not None:
                selected = self.converter.get_object(obj)
                writer.putlnc('foreach_instance_%s = %s;', name, selected)
            writer.putlnc('%s();', func_call)
        writer.end_brace()
Ejemplo n.º 2
0
    def write_frame(self, writer):
        loops = defaultdict(list)
        loop_objects = {}
        for loop in self.get_conditions(LOOP_FOR_OBJECT, ON_LOOP):
            parameters = loop.conditions[0].data.items
            exp, = parameters[0].loader.items[:-1]
            real_name = exp.loader.value
            try:
                object_info = parameters[1].loader.objectInfo
                object_type = parameters[1].loader.objectType
                obj = (object_info, object_type)
                obj = self.converter.filter_object_type(obj)
                loop_objects[real_name] = obj
            except IndexError:
                # for ON_LOOP
                pass
            loops[real_name].append(loop)

        self.loop_names = {}

        self.converter.begin_events()
        for real_name, groups in loops.iteritems():
            obj = loop_objects[real_name]
            name = get_method_name(real_name)
            instance_name = 'foreach_instance_' + name
            writer.add_member('FrameObject * %s' % instance_name)
            name = 'foreach_%s_%s' % (name, self.converter.current_frame_index)
            object_class = self.converter.get_object_class(obj[1])
            set_value = '((%s)%s)' % (object_class, instance_name)
            self.converter.set_object(obj, set_value)
            for qual_obj in self.converter.resolve_qualifier(obj):
                self.converter.set_object(qual_obj, set_value)

            name = self.converter.write_generated(name, writer, groups)
            self.loop_names[real_name] = name
Ejemplo n.º 3
0
def write_shader_param():
    header = CodeWriter(os.path.join(get_base_path(), 'shaderparam.h'))
    code = CodeWriter(os.path.join(get_base_path(), 'shaderparam.cpp'))

    parameters = []
    for shader in SHADERS:
        for param in shader.uniforms:
            parameters.append(param[0])
        if shader.tex_param:
            parameters.append(shader.tex_param)
    parameters = list(set(parameters))

    hash_data = get_hash_function('hash_shader_parameter', parameters,
                                  False)

    code.putln(hash_data.code.replace('inline ', ''))

    header.start_guard('CHOWDREN_SHADERPARAM_H')
    header.putln('unsigned int hash_shader_parameter(const char * str, '
                                                    'unsigned int len);')
    header.putln('')

    for k, v in hash_data.strings.iteritems():
        name = 'SHADER_PARAM_%s' % get_method_name(k).upper()
        header.putdefine(name, v)

    header.close_guard('CHOWDREN_SHADERPARAM_H')

    header.close()
    code.close()
Ejemplo n.º 4
0
 def get_string(self):
     converter = self.converter
     name = converter.expression_items[converter.item_index+1].loader.value
     foreach_instance = 'foreach_instance_' + get_method_name(name)
     fixed = foreach_instance + '->get_fixed()'
     converter.item_index += 2
     return fixed
Ejemplo n.º 5
0
    def write_init(self, writer):
        name_id = 'BACK_ID_' + get_method_name(self.data.name).upper()
        writer.putraw('#ifdef %s' % name_id)
        writer.putlnc('manager.frame->back_instances[%s].push_back(this);',
                      name_id)
        writer.putraw('#endif')

        image = self.converter.get_image(self.common.image)
        writer.putln('image = %s;' % image)
        if self.data.name.endswith('(DRC)'):
            writer.putraw('#if defined(CHOWDREN_IS_WIIU) || '
                          'defined(CHOWDREN_EMULATE_WIIU)')
            writer.putln('remote = CHOWDREN_REMOTE_TARGET;')
            writer.putraw('#endif')
        writer.putln('width = image->width;')
        writer.putln('height = image->height;')
        obstacle_type = self.common.obstacleType
        if obstacle_type == NONE_OBSTACLE:
            return
        if self.common.collisionMode == FINE_COLLISION:
            writer.putln('collision = new BackdropCollision(this, image);')
        else:
            writer.putln('collision = new InstanceBox(this);')
        if obstacle_type == LADDER_OBSTACLE:
            writer.putln('collision->flags |= LADDER_OBSTACLE;')
Ejemplo n.º 6
0
    def write_init(self, writer):
        name_id = 'BACK_ID_' + get_method_name(self.data.name).upper()
        writer.putraw('#ifdef %s' % name_id)
        writer.putlnc('manager.frame->back_instances[%s].push_back(this);',
                      name_id)
        writer.putraw('#endif')

        image = self.converter.get_image(self.common.image)
        writer.putln('image = %s;' % image)
        if self.data.name.endswith('(DRC)'):
            writer.putraw('#if defined(CHOWDREN_IS_WIIU) || '
                          'defined(CHOWDREN_EMULATE_WIIU)')
            writer.putln('remote = CHOWDREN_REMOTE_TARGET;')
            writer.putraw('#endif')
        writer.putln('width = image->width;')
        writer.putln('height = image->height;')
        obstacle_type = self.common.obstacleType
        if obstacle_type == NONE_OBSTACLE:
            return
        if self.common.collisionMode == FINE_COLLISION:
            writer.putln('collision = new BackdropCollision(this, image);')
        else:
            writer.putln('collision = new InstanceBox(this);')
        if obstacle_type == LADDER_OBSTACLE:
            writer.putln('collision->flags |= LADDER_OBSTACLE;')
Ejemplo n.º 7
0
 def get_string(self):
     converter = self.converter
     name = converter.expression_items[converter.item_index +
                                       1].loader.value
     foreach_instance = 'foreach_instance_' + get_method_name(name)
     fixed = foreach_instance + '->get_fixed()'
     converter.item_index += 2
     return fixed
Ejemplo n.º 8
0
 def get_list_name(self, name):
     name_id = self.converter.back_ids.get(name.lower(), None)
     if name_id is None:
         name_id = 'BACK_ID_' + get_method_name(name).upper()
         next_id = len(self.converter.back_ids)
         self.converter.back_ids[name] = name_id
         self.converter.add_define(name_id, next_id)
     list_name = 'back_instances[%s]' % name_id
     return list_name
Ejemplo n.º 9
0
 def get_list_name(self, name):
     name_id = self.converter.back_ids.get(name.lower(), None)
     if name_id is None:
         name_id = 'BACK_ID_' + get_method_name(name).upper()
         next_id = len(self.converter.back_ids)
         self.converter.back_ids[name] = name_id
         self.converter.add_define(name_id, next_id)
     list_name = 'back_instances[%s]' % name_id
     return list_name
Ejemplo n.º 10
0
 def get_global(self, typ):
     data = self.converter.global_object_data
     key = (self.data.name, self.class_name, typ)
     try:
         return data[key]
     except KeyError:
         pass
     name = 'global_data_%s_%s' % (len(data),
                                   get_method_name(self.data.name))
     data[key] = name
     self.converter.global_object_header.putlnc('extern %s %s;', typ, name)
     self.converter.global_object_code.putlnc('%s %s;', typ, name)
     return name
Ejemplo n.º 11
0
 def get_global(self, typ):
     data = self.converter.global_object_data
     key = (self.data.name, self.class_name, typ)
     try:
         return data[key]
     except KeyError:
         pass
     name = 'global_data_%s_%s' % (len(data),
                                   get_method_name(self.data.name))
     data[key] = name
     self.converter.global_object_header.putlnc('extern %s %s;', typ, name)
     self.converter.global_object_code.putlnc('%s %s;', typ, name)
     return name
Ejemplo n.º 12
0
    def write_init(self, writer):
        name_id = "BACK_ID_" + get_method_name(self.data.name).upper()
        writer.putraw("#ifdef %s" % name_id)
        writer.putlnc("manager.frame->back_instances[%s].push_back(this);", name_id)
        writer.putraw("#endif")

        image = self.converter.get_image(self.common.image)
        writer.putln("image = %s;" % image)
        if self.data.name.endswith("(DRC)"):
            writer.putraw("#if defined(CHOWDREN_IS_WIIU) || " "defined(CHOWDREN_EMULATE_WIIU)")
            writer.putln("remote = CHOWDREN_REMOTE_TARGET;")
            writer.putraw("#endif")
        writer.putln("width = image->width;")
        writer.putln("height = image->height;")
        obstacle_type = self.common.obstacleType
        if obstacle_type == NONE_OBSTACLE:
            return
        if self.common.collisionMode == FINE_COLLISION:
            writer.putln("collision = new BackdropCollision(this, image);")
        else:
            writer.putln("collision = new InstanceBox(this);")
        if obstacle_type == LADDER_OBSTACLE:
            writer.putln("collision->flags |= LADDER_OBSTACLE;")
Ejemplo n.º 13
0
def get_asset_name(typ, name, index=None):
    name = get_method_name(name).upper()
    if index is None:
        return '%s_%s' % (typ, name)
    return '%s_%s_%s' % (typ, name, index)
Ejemplo n.º 14
0
def get_asset_name(typ, name, index=None):
    name = get_method_name(name).upper()
    if index is None:
        return '%s_%s' % (typ, name)
    return '%s_%s_%s' % (typ, name, index)
Ejemplo n.º 15
0
 def get_pool(self):
     return '%s_pool' % get_method_name(self.class_name)