syntax = "proto3";

package bilibili.dagw.component.avatar.v1;

option java_multiple_files = true;

import "bilibili/dagw/component/avatar/common/common.proto";
import "bilibili/dagw/component/avatar/v1/plugin.proto";

//
message AvatarItem {
  //
  bilibili.dagw.component.avatar.common.SizeSpec container_size = 1;
  //
  repeated LayerGroup layers = 2;
  //
  LayerGroup fallback_layers = 3;
  //
  int64 mid = 4;
}

//
message BasicLayerResource {
  //
  int32 res_type = 1;
  //
  oneof payload {
    //
    ResImage res_image = 2;
    //
    ResAnimation res_animation = 3;
    ///
    ResNativeDraw res_native_draw = 4;
  };
}

//
message GeneralConfig {
  //
  map<string, string> web_css_style = 1;
}

//
message Layer {
  //
  string layer_id = 1;
  //
  bool visible = 2;
  //
  bilibili.dagw.component.avatar.common.LayerGeneralSpec general_spec = 3;
  //
  LayerConfig layer_config = 4;
  //
  BasicLayerResource resource = 5;
}

//
message LayerConfig {
  //
  map<string, LayerTagConfig> tags = 1;
  //
  bool is_critical = 2;
  //
  bool allow_over_paint = 3;
  //
  bilibili.dagw.component.avatar.common.MaskProperty layer_mask = 4;
}

//
message LayerGroup {
  //
  string group_id = 1;
  //
  repeated Layer layers = 2;
  //
  bilibili.dagw.component.avatar.common.MaskProperty group_mask = 3;
  //
  bool is_critical_group = 4;
}

//
message LayerTagConfig {
  //
  int32 config_type = 1;
  //
  oneof config {
    //
    GeneralConfig general_config = 2;
    //
    bilibili.dagw.component.avatar.v1.plugin.GyroConfig gyro_config = 3;
    //
    bilibili.dagw.component.avatar.v1.plugin.CommentDoubleClickConfig comment_doubleClick_config = 4;
    //
    bilibili.dagw.component.avatar.v1.plugin.LiveAnimeConfig live_anime_config = 5;
  };
}

//
message ResAnimation {
  //
  bilibili.dagw.component.avatar.common.ResourceSource webp_src = 1;
}

//
message ResImage {
  //
  bilibili.dagw.component.avatar.common.ResourceSource image_src = 1;
}

//
message ResNativeDraw {
  //
  bilibili.dagw.component.avatar.common.ResourceSource draw_src = 1;
}