/* The default is mostly: 1 SourceName 2 TargetName 3 AttackerName 4 InflictorName 5 AttackerIsillusion 6 TargetIsIllusion 7 Value 8 Health 9 Timestamp 10 TargetSourceName 11 TimestampRaw 12 AttackerIsHero 13 TargetIsHero */ func (c combatLogParser) parse(obj *dota.CSVCMsg_GameEvent) CombatLogEntry { keys := obj.GetKeys() var v CombatLogEntry t := dota.DOTA_COMBATLOG_TYPES(keys[0].GetValByte()) switch t { case dota.DOTA_COMBATLOG_TYPES_DOTA_COMBATLOG_ABILITY: v = &CombatLogAbility{} case dota.DOTA_COMBATLOG_TYPES_DOTA_COMBATLOG_ABILITY_TRIGGER: v = &CombatLogAbilityTrigger{} case dota.DOTA_COMBATLOG_TYPES_DOTA_COMBATLOG_DAMAGE: v = &CombatLogDamage{} case dota.DOTA_COMBATLOG_TYPES_DOTA_COMBATLOG_DEATH: v = &CombatLogDeath{} case dota.DOTA_COMBATLOG_TYPES_DOTA_COMBATLOG_GAME_STATE: v = &CombatLogGameState{} case dota.DOTA_COMBATLOG_TYPES_DOTA_COMBATLOG_GOLD: v = &CombatLogGold{} case dota.DOTA_COMBATLOG_TYPES_DOTA_COMBATLOG_HEAL: v = &CombatLogHeal{} case dota.DOTA_COMBATLOG_TYPES_DOTA_COMBATLOG_ITEM: v = &CombatLogItem{} case dota.DOTA_COMBATLOG_TYPES_DOTA_COMBATLOG_LOCATION: v = &CombatLogLocation{} case dota.DOTA_COMBATLOG_TYPES_DOTA_COMBATLOG_MODIFIER_ADD: v = &CombatLogModifierAdd{} case dota.DOTA_COMBATLOG_TYPES_DOTA_COMBATLOG_MODIFIER_REMOVE: v = &CombatLogModifierRemove{} case dota.DOTA_COMBATLOG_TYPES_DOTA_COMBATLOG_PURCHASE: v = &CombatLogPurchase{} // printCombatLogKeys(v, keys) case dota.DOTA_COMBATLOG_TYPES_DOTA_COMBATLOG_XP: v = &CombatLogXP{} case dota.DOTA_COMBATLOG_TYPES_DOTA_COMBATLOG_BUYBACK: v = &CombatLogBuyback{} case dota.DOTA_COMBATLOG_TYPES_DOTA_COMBATLOG_PLAYERSTATS: v = &CombatLogPlayerstats{} case dota.DOTA_COMBATLOG_TYPES_DOTA_COMBATLOG_TEAM_BUILDING_KILL: v = &CombatLogTeamBuildingKill{} case dota.DOTA_COMBATLOG_TYPES_DOTA_COMBATLOG_KILLSTREAK: v = &CombatLogKillStreak{} case dota.DOTA_COMBATLOG_TYPES_DOTA_COMBATLOG_MULTIKILL: v = &CombatLogMultikill{} case dota.DOTA_COMBATLOG_TYPES_DOTA_COMBATLOG_FIRST_BLOOD: // TODO: map DOTA_COMBATLOG_TYPES_DOTA_COMBATLOG_FIRST_BLOOD return nil case dota.DOTA_COMBATLOG_TYPES_DOTA_COMBATLOG_MODIFIER_REFRESH: // TODO: map DOTA_COMBATLOG_TYPES_DOTA_COMBATLOG_MODIFIER_REFRESH return nil default: pp(t, keys) return nil } c.assign(v, keys) return v }
/* The default is mostly: 1 SourceName 2 TargetName 3 AttackerName 4 InflictorName 5 AttackerIsillusion 6 TargetIsIllusion 7 Value 8 Health 9 Timestamp 10 TargetSourceName 11 TimestampRaw 12 AttackerIsHero 13 TargetIsHero */ func (c combatLogParser) parse(obj *dota.CSVCMsg_GameEvent) CombatLogEntry { keys := obj.GetKeys() var v CombatLogEntry t := dota.DOTA_COMBATLOG_TYPES(keys[0].GetValByte()) switch t { case dota.DOTA_COMBATLOG_TYPES_DOTA_COMBATLOG_ABILITY: v = &CombatLogAbility{} case dota.DOTA_COMBATLOG_TYPES_DOTA_COMBATLOG_DAMAGE: v = &CombatLogDamage{} case dota.DOTA_COMBATLOG_TYPES_DOTA_COMBATLOG_DEATH: v = &CombatLogDeath{} case dota.DOTA_COMBATLOG_TYPES_DOTA_COMBATLOG_GAME_STATE: v = &CombatLogGameState{} case dota.DOTA_COMBATLOG_TYPES_DOTA_COMBATLOG_GOLD: v = &CombatLogGold{} case dota.DOTA_COMBATLOG_TYPES_DOTA_COMBATLOG_HEAL: v = &CombatLogHeal{} case dota.DOTA_COMBATLOG_TYPES_DOTA_COMBATLOG_ITEM: v = &CombatLogItem{} case dota.DOTA_COMBATLOG_TYPES_DOTA_COMBATLOG_LOCATION: v = &CombatLogLocation{} case dota.DOTA_COMBATLOG_TYPES_DOTA_COMBATLOG_MODIFIER_ADD: v = &CombatLogModifierAdd{} case dota.DOTA_COMBATLOG_TYPES_DOTA_COMBATLOG_MODIFIER_REMOVE: v = &CombatLogModifierRemove{} case dota.DOTA_COMBATLOG_TYPES_DOTA_COMBATLOG_PURCHASE: v = &CombatLogPurchase{} case dota.DOTA_COMBATLOG_TYPES_DOTA_COMBATLOG_XP: v = &CombatLogXP{} case dota.DOTA_COMBATLOG_TYPES_DOTA_COMBATLOG_BUYBACK: v = &CombatLogBuyback{} default: pp(t, keys) return nil } c.assign(v, keys) return v }