import "networkbasetypes.proto";

option optimize_for = SPEED;
option cc_generic_services = false;

enum EPingSource {
	k_ePingSource_Default = 0;
	k_ePingSource_Warning = 1;
	k_ePingSource_Wheel = 2;
	k_ePingSource_System = 3;
}

enum EDOTAStatPopupTypes {
	k_EDOTA_SPT_Textline = 0;
	k_EDOTA_SPT_Basic = 1;
	k_EDOTA_SPT_Poll = 2;
	k_EDOTA_SPT_Grid = 3;
	k_EDOTA_SPT_DualImage = 4;
	k_EDOTA_SPT_Movie = 5;
}

enum dotaunitorder_t {
	DOTA_UNIT_ORDER_NONE = 0;
	DOTA_UNIT_ORDER_MOVE_TO_POSITION = 1;
	DOTA_UNIT_ORDER_MOVE_TO_TARGET = 2;
	DOTA_UNIT_ORDER_ATTACK_MOVE = 3;
	DOTA_UNIT_ORDER_ATTACK_TARGET = 4;
	DOTA_UNIT_ORDER_CAST_POSITION = 5;
	DOTA_UNIT_ORDER_CAST_TARGET = 6;
	DOTA_UNIT_ORDER_CAST_TARGET_TREE = 7;
	DOTA_UNIT_ORDER_CAST_NO_TARGET = 8;
	DOTA_UNIT_ORDER_CAST_TOGGLE = 9;
	DOTA_UNIT_ORDER_HOLD_POSITION = 10;
	DOTA_UNIT_ORDER_TRAIN_ABILITY = 11;
	DOTA_UNIT_ORDER_DROP_ITEM = 12;
	DOTA_UNIT_ORDER_GIVE_ITEM = 13;
	DOTA_UNIT_ORDER_PICKUP_ITEM = 14;
	DOTA_UNIT_ORDER_PICKUP_RUNE = 15;
	DOTA_UNIT_ORDER_PURCHASE_ITEM = 16;
	DOTA_UNIT_ORDER_SELL_ITEM = 17;
	DOTA_UNIT_ORDER_DISASSEMBLE_ITEM = 18;
	DOTA_UNIT_ORDER_MOVE_ITEM = 19;
	DOTA_UNIT_ORDER_CAST_TOGGLE_AUTO = 20;
	DOTA_UNIT_ORDER_STOP = 21;
	DOTA_UNIT_ORDER_TAUNT = 22;
	DOTA_UNIT_ORDER_BUYBACK = 23;
	DOTA_UNIT_ORDER_GLYPH = 24;
	DOTA_UNIT_ORDER_EJECT_ITEM_FROM_STASH = 25;
	DOTA_UNIT_ORDER_CAST_RUNE = 26;
	DOTA_UNIT_ORDER_PING_ABILITY = 27;
	DOTA_UNIT_ORDER_MOVE_TO_DIRECTION = 28;
	DOTA_UNIT_ORDER_PATROL = 29;
	DOTA_UNIT_ORDER_VECTOR_TARGET_POSITION = 30;
	DOTA_UNIT_ORDER_RADAR = 31;
	DOTA_UNIT_ORDER_SET_ITEM_COMBINE_LOCK = 32;
	DOTA_UNIT_ORDER_CONTINUE = 33;
	DOTA_UNIT_ORDER_VECTOR_TARGET_CANCELED = 34;
	DOTA_UNIT_ORDER_CAST_RIVER_PAINT = 35;
	DOTA_UNIT_ORDER_PREGAME_ADJUST_ITEM_ASSIGNMENT = 36;
	DOTA_UNIT_ORDER_DROP_ITEM_AT_FOUNTAIN = 37;
	DOTA_UNIT_ORDER_TAKE_ITEM_FROM_NEUTRAL_ITEM_STASH = 38;
	DOTA_UNIT_ORDER_MOVE_RELATIVE = 39;
}

enum EDOTAVersusScenePlayerBehavior {
	VS_PLAYER_BEHAVIOR_PLAY_ACTIVITY = 1;
	VS_PLAYER_BEHAVIOR_CHAT_WHEEL = 2;
	VS_PLAYER_BEHAVIOR_PLAYBACK_RATE = 3;
}

message CDOTAMsg_LocationPing {
	optional int32 x = 1;
	optional int32 y = 2;
	optional int32 target = 3;
	optional bool direct_ping = 4;
	optional int32 type = 5;
	optional .EPingSource ping_source = 6 [default = k_ePingSource_Default];
}

message CDOTAMsg_ItemAlert {
	optional int32 x = 1;
	optional int32 y = 2;
	optional int32 item_ability_id = 3;
}

message CDOTAMsg_MapLine {
	optional int32 x = 1;
	optional int32 y = 2;
	optional bool initial = 3;
}

message CDOTAMsg_WorldLine {
	optional int32 x = 1;
	optional int32 y = 2;
	optional int32 z = 3;
	optional bool initial = 4;
	optional bool end = 5;
}

message CDOTAMsg_SendStatPopup {
	optional .EDOTAStatPopupTypes style = 1 [default = k_EDOTA_SPT_Textline];
	repeated string stat_strings = 2;
	repeated int32 stat_images = 3;
	repeated int32 stat_image_types = 4;
	optional float duration = 5;
	optional bool use_html = 6;
	optional string movie_name = 7;
}

message CDOTAMsg_DismissAllStatPopups {
	optional float time_delay = 1;
}

message CDOTAMsg_CoachHUDPing {
	optional uint32 x = 1;
	optional uint32 y = 2;
	optional string tgtpath = 3;
}

message CDOTAMsg_UnitOrder {
	optional .dotaunitorder_t order_type = 2 [default = DOTA_UNIT_ORDER_NONE];
	repeated int32 units = 3;
	optional int32 target_index = 4;
	optional int32 ability_index = 5;
	optional .CMsgVector position = 6;
	optional int32 sequence_number = 8;
	optional uint32 flags = 9;
}

message VersusScene_PlayActivity {
	message ActivityInfo {
		optional string activity = 1;
		optional bool disable_auto_kill = 2;
		optional bool force_looping = 3;
	}

	repeated .VersusScene_PlayActivity.ActivityInfo activities = 1;
	optional float playback_rate = 2;
}

message VersusScene_ChatWheel {
	optional uint32 chat_message_id = 1;
	optional uint32 emoticon_id = 2;
}

message VersusScene_PlaybackRate {
	optional float rate = 1;
}
