2019-05-13 08:15:53 +02:00
package main
import (
"fmt"
2019-05-18 09:46:34 +02:00
"log"
2019-05-13 08:15:53 +02:00
"regexp"
"strconv"
"time"
)
2019-05-19 06:19:24 +02:00
func parseSubTypeMessageReportAck ( m * ChatWarsMessage , r * regexp . Regexp ) ( * ChatWarsMessageReportAck , error ) {
cwm := ChatWarsMessageReportAck { }
2019-05-18 09:46:34 +02:00
log . Printf ( "parseSubTypeMessageReport : War report identified\n" )
log . Printf ( "parseSubTypeMessageReport : Castle : %s\n" , r . ReplaceAllString ( m . Text , "${Castle}" ) )
log . Printf ( "parseSubTypeMessageReport : Guild : %s\n" , r . ReplaceAllString ( m . Text , "${Guild}" ) )
log . Printf ( "parseSubTypeMessageReport : User : %s\n" , r . ReplaceAllString ( m . Text , "${User}" ) )
log . Printf ( "parseSubTypeMessageReport : Attack : %s\n" , r . ReplaceAllString ( m . Text , "${Attack}" ) )
log . Printf ( "parseSubTypeMessageReport : AttackMod : %s\n" , r . ReplaceAllString ( m . Text , "${AttackMod}" ) )
log . Printf ( "parseSubTypeMessageReport : Defense : %s\n" , r . ReplaceAllString ( m . Text , "${Defense}" ) )
log . Printf ( "parseSubTypeMessageReport : Level : %s\n" , r . ReplaceAllString ( m . Text , "${Level}" ) )
log . Printf ( "parseSubTypeMessageReport : Exp : %s\n" , r . ReplaceAllString ( m . Text , "${Exp}" ) )
log . Printf ( "parseSubTypeMessageReport : Gold : %s\n" , r . ReplaceAllString ( m . Text , "${Gold}" ) )
log . Printf ( "parseSubTypeMessageReport : Stock : %s\n" , r . ReplaceAllString ( m . Text , "${Stock}" ) )
log . Printf ( "parseSubTypeMessageReport : Stamina : %s\n" , r . ReplaceAllString ( m . Text , "${Stamina}" ) )
log . Printf ( "parseSubTypeMessageReport : Crit : %s\n" , r . ReplaceAllString ( m . Text , "${Crit}" ) )
2019-05-18 09:44:25 +02:00
2019-05-18 10:09:33 +02:00
return & cwm , nil
2019-05-18 09:44:25 +02:00
}
2019-05-28 06:14:46 +02:00
func parseSubTypeMessageMeAck ( m * ChatWarsMessage , r * regexp . Regexp ) ( * ChatWarsMessageMeAck , error ) {
cwm := ChatWarsMessageMeAck { }
2019-05-28 09:00:37 +02:00
/ *
log . Printf ( "parseSubTypeMessageReport : Me report identified\n" )
log . Printf ( "parseSubTypeMessageReport : Player : %s\n" , r . ReplaceAllString ( m . Text , "${Player}" ) )
log . Printf ( "parseSubTypeMessageReport : Guild : %s\n" , r . ReplaceAllString ( m . Text , "${Guild}" ) )
log . Printf ( "parseSubTypeMessageReport : Class : %s\n" , r . ReplaceAllString ( m . Text , "${Class}" ) )
log . Printf ( "parseSubTypeMessageReport : Castle : %s\n" , r . ReplaceAllString ( m . Text , "${Castle}" ) )
log . Printf ( "parseSubTypeMessageReport : Level : %s\n" , r . ReplaceAllString ( m . Text , "${Level}" ) )
log . Printf ( "parseSubTypeMessageReport : Atk : %s\n" , r . ReplaceAllString ( m . Text , "${Atk}" ) )
log . Printf ( "parseSubTypeMessageReport : Def : %s\n" , r . ReplaceAllString ( m . Text , "${Def}" ) )
log . Printf ( "parseSubTypeMessageReport : ExpNow : %s\n" , r . ReplaceAllString ( m . Text , "${ExpNow}" ) )
log . Printf ( "parseSubTypeMessageReport : ExpLvl : %s\n" , r . ReplaceAllString ( m . Text , "${ExpLvl}" ) )
log . Printf ( "parseSubTypeMessageReport : StaminaNow : %s\n" , r . ReplaceAllString ( m . Text , "${StaminaNow}" ) )
log . Printf ( "parseSubTypeMessageReport : StaminaMax : %s\n" , r . ReplaceAllString ( m . Text , "${StaminaMax}" ) )
log . Printf ( "parseSubTypeMessageReport : Gold : %s\n" , r . ReplaceAllString ( m . Text , "${Gold}" ) )
log . Printf ( "parseSubTypeMessageReport : Pogs : %s\n" , r . ReplaceAllString ( m . Text , "${Pogs}" ) )
log . Printf ( "parseSubTypeMessageReport : Gems : %s\n" , r . ReplaceAllString ( m . Text , "${Gems}" ) )
log . Printf ( "parseSubTypeMessageReport : AtkGear : %s\n" , r . ReplaceAllString ( m . Text , "${AtkGear}" ) )
log . Printf ( "parseSubTypeMessageReport : DefGear : %s\n" , r . ReplaceAllString ( m . Text , "${DefGear}" ) )
log . Printf ( "parseSubTypeMessageReport : BagUsed : %s\n" , r . ReplaceAllString ( m . Text , "${BagUsed}" ) )
log . Printf ( "parseSubTypeMessageReport : BagDispo : %s\n" , r . ReplaceAllString ( m . Text , "${BagDispo}" ) )
log . Printf ( "parseSubTypeMessageReport : State : %s\n" , r . ReplaceAllString ( m . Text , "${State}" ) )
* /
return & cwm , nil
}
2019-05-28 06:14:46 +02:00
2019-05-28 09:00:37 +02:00
func parseSubTypeMessageGoQuestAck ( m * ChatWarsMessage , r * regexp . Regexp ) ( * ChatWarsMessageGoQuestAck , error ) {
cwm := ChatWarsMessageGoQuestAck { }
2019-05-28 09:15:18 +02:00
log . Printf ( "parseSubTypeMessageReport : Go Quest Ack report identified\n" )
log . Printf ( "parseSubTypeMessageReport : Place : %s\n" , r . ReplaceAllString ( m . Text , "${Place}" ) )
log . Printf ( "parseSubTypeMessageReport : Time : %s\n" , r . ReplaceAllString ( m . Text , "${Time}" ) )
2019-05-28 06:14:46 +02:00
return & cwm , nil
}
2019-05-25 13:12:31 +02:00
func parseSubTypeMessageUnionWar ( m * ChatWarsMessage , r * regexp . Regexp ) ( * ChatWarsMessageUnionWar , error ) {
2019-05-26 13:30:21 +02:00
//re := regexp.MustCompile('^(🏠Trade union news:\\n)(?P<Union>(?s:[^(🎪State of exclusive rights)]*))(🎪State of exclusive rights:)(?P<Fair>(?s:.*))$')
2019-05-25 13:12:31 +02:00
/ *
" ^ ( 🏠 Trade union news : \ \ n ) { 0 , 1 } ` +
` (((?P<Union>[A-Z][a-z]+ [A-Z][a-z]+) was (?P<Status>(easily defended|defended successfully|breached.|easily breached.|closely breached.))(Attackers have pillage union for (?<Loot>[0-9]+) stock):\\n ` +
` (🎖Attack leaders: (?P<AtkCastle1>[🐉🦅🐺🦈🦌🥔🌑])(?P<AtkUser1>[^,]+)(,(?P<AtkCastle2>[🐉🦅🐺🦈🦌🥔🌑])(?P<AtkUser2>[^,]+)) { 0,1}(,(?P<AtkCastle3>[🐉🦅🐺🦈🦌🥔🌑])(?P<AtkUser3>[^,]+)) { 0,1}(,(?P<AtkCastle4>[🐉🦅🐺🦈🦌🥔🌑])(?P<AtkUser4>[^,]+)) { 0,1}) { 0,1}(\\n) { 0,1} ` +
` (🎖Defense leaders: (?P<DefCastle1>[🐉🦅🐺🦈🦌🥔🌑])(?P<DefUser1>[^,]+)(,(?P<DefCastle2>[🐉🦅🐺🦈🦌🥔🌑])(?P<AtkUser2>[^,]+)) { 0,1}(,(?P<DefCastle3>[🐉🦅🐺🦈🦌🥔🌑])(?P<DefUser3>[^,]+)) { 0,1}(,(?P<DefCastle4>[🐉🦅🐺🦈🦌🥔🌑])(?P<AtkUser4>[^,]+)) { 0,1}) { 0,1}(\\n) { 0,1})(\\n)*)* ` +
` (🎪State of exclusive rights:\\n) { 0,1} ` +
` (((?P<Fair>[A-Z][a-z]+ [A-Z][a-z]+) (?P<Status>(was protected|belongs to)( (?P<Attacker>[A-Z][a-z]+ [A-Z][a-z]+):)\\n ` +
` (🎖Attack leaders: (?P<AtkCastle1>[🐉🦅🐺🦈🦌🥔🌑])(?P<AtkUser1>[^,]+)(,(?P<AtkCastle2>[🐉🦅🐺🦈🦌🥔🌑])(?P<AtkUser2>[^,]+)) { 0,1}(,(?P<AtkCastle3>[🐉🦅🐺🦈🦌🥔🌑])(?P<AtkUser3>[^,]+)) { 0,1}(,(?P<AtkCastle4>[🐉🦅🐺🦈🦌🥔🌑])(?P<AtkUser4>[^,]+)) { 0,1}) { 0,1}(\\n) { 0,1} ` +
` (🎖Defense leaders: (?P<DefCastle1>[🐉🦅🐺🦈🦌🥔🌑])(?P<DefUser1>[^,]+)(,(?P<DefCastle2>[🐉🦅🐺🦈🦌🥔🌑])(?P<AtkUser2>[^,]+)) { 0,1}(,(?P<DefCastle3>[🐉🦅🐺🦈🦌🥔🌑])(?P<DefUser3>[^,]+)) { 0,1}(,(?P<DefCastle4>[🐉🦅🐺🦈🦌🥔🌑])(?P<AtkUser4>[^,]+)) { 0,1}) { 0,1}(\\n) { 0,1})(\\n)*)* ` +
` $ ) "
* /
cwm := ChatWarsMessageUnionWar { }
/ *
log . Printf ( "parseSubTypeMessageReport : War report identified\n" )
log . Printf ( "parseSubTypeMessageReport : Castle : %s\n" , r . ReplaceAllString ( m . Text , "${Castle}" ) )
log . Printf ( "parseSubTypeMessageReport : Guild : %s\n" , r . ReplaceAllString ( m . Text , "${Guild}" ) )
log . Printf ( "parseSubTypeMessageReport : User : %s\n" , r . ReplaceAllString ( m . Text , "${User}" ) )
log . Printf ( "parseSubTypeMessageReport : Attack : %s\n" , r . ReplaceAllString ( m . Text , "${Attack}" ) )
log . Printf ( "parseSubTypeMessageReport : AttackMod : %s\n" , r . ReplaceAllString ( m . Text , "${AttackMod}" ) )
log . Printf ( "parseSubTypeMessageReport : Defense : %s\n" , r . ReplaceAllString ( m . Text , "${Defense}" ) )
log . Printf ( "parseSubTypeMessageReport : Level : %s\n" , r . ReplaceAllString ( m . Text , "${Level}" ) )
log . Printf ( "parseSubTypeMessageReport : Exp : %s\n" , r . ReplaceAllString ( m . Text , "${Exp}" ) )
log . Printf ( "parseSubTypeMessageReport : Gold : %s\n" , r . ReplaceAllString ( m . Text , "${Gold}" ) )
log . Printf ( "parseSubTypeMessageReport : Stock : %s\n" , r . ReplaceAllString ( m . Text , "${Stock}" ) )
log . Printf ( "parseSubTypeMessageReport : Stamina : %s\n" , r . ReplaceAllString ( m . Text , "${Stamina}" ) )
log . Printf ( "parseSubTypeMessageReport : Crit : %s\n" , r . ReplaceAllString ( m . Text , "${Crit}" ) )
* /
return & cwm , nil
}
2019-05-18 16:16:26 +02:00
func parseSubTypeMessageDuelFight ( m * ChatWarsMessage , r * regexp . Regexp ) ( * ChatWarsMessageDuelFight , error ) {
2019-05-18 16:15:24 +02:00
cwm := ChatWarsMessageDuelFight { }
2019-05-19 14:00:18 +02:00
if r . ReplaceAllString ( m . Text , "${Duelist1}" ) == r . ReplaceAllString ( m . Text , "${WinDuelist}" ) {
cwm . WinCastle = r . ReplaceAllString ( m . Text , "${Castle1}" )
cwm . WinGuild = r . ReplaceAllString ( m . Text , "${Guild1}" )
cwm . WinUser = r . ReplaceAllString ( m . Text , "${Duelist1}" )
cwm . WinLife , _ = strconv . ParseInt ( r . ReplaceAllString ( m . Text , "${Life1}" ) , 10 , 64 )
cwm . LossCastle = r . ReplaceAllString ( m . Text , "${Castle2}" )
cwm . LossGuild = r . ReplaceAllString ( m . Text , "${Guild2}" )
cwm . LossUser = r . ReplaceAllString ( m . Text , "${Duelist2}" )
cwm . LossLife , _ = strconv . ParseInt ( r . ReplaceAllString ( m . Text , "${Life2}" ) , 10 , 64 )
} else {
cwm . LossCastle = r . ReplaceAllString ( m . Text , "${Castle1}" )
cwm . LossGuild = r . ReplaceAllString ( m . Text , "${Guild1}" )
cwm . LossUser = r . ReplaceAllString ( m . Text , "${Duelist1}" )
cwm . LossLife , _ = strconv . ParseInt ( r . ReplaceAllString ( m . Text , "${Life1}" ) , 10 , 64 )
cwm . WinCastle = r . ReplaceAllString ( m . Text , "${Castle2}" )
cwm . WinGuild = r . ReplaceAllString ( m . Text , "${Guild2}" )
cwm . WinUser = r . ReplaceAllString ( m . Text , "${Duelist2}" )
cwm . WinLife , _ = strconv . ParseInt ( r . ReplaceAllString ( m . Text , "${Life2}" ) , 10 , 64 )
}
cwm . Weapon = r . ReplaceAllString ( m . Text , "${Weapon}" )
2019-05-18 16:15:24 +02:00
return & cwm , nil
}
2019-05-13 08:16:44 +02:00
func parseSubTypeMessageMiniWar ( m * ChatWarsMessage , r * regexp . Regexp ) ( * ChatWarsMessageMiniWar , error ) {
2019-05-13 08:15:53 +02:00
t , err := time . Parse ( "02/01/06 15:04" , r . ReplaceAllString ( m . Text , "${Time}" ) )
logOnError ( err , "parseSubTypeMessageMiniWar : parsing time : " + r . ReplaceAllString ( m . Text , "${Time}" ) )
cwm := ChatWarsMessageMiniWar {
Time : t ,
Report : make ( map [ string ] * ChatWarsMessageMiniWarCastle ) ,
}
for i := 1 ; i <= 7 ; i ++ {
loot := fmt . Sprintf ( "${Loot%d}" , i )
gardian := fmt . Sprintf ( "${Gardian%d}" , i )
result := fmt . Sprintf ( "${Result%d}" , i )
gold := fmt . Sprintf ( "${Gold%d}" , i )
stock := fmt . Sprintf ( "${Stock%d}" , i )
rep := ChatWarsMessageMiniWarCastle {
Gardian : r . ReplaceAllString ( m . Text , gardian ) ,
Result : r . ReplaceAllString ( m . Text , result ) ,
}
rep . Gold , err = strconv . ParseInt ( r . ReplaceAllString ( m . Text , gold ) , 10 , 64 )
rep . Stock , err = strconv . ParseInt ( r . ReplaceAllString ( m . Text , stock ) , 10 , 64 )
cwm . Report [ r . ReplaceAllString ( m . Text , loot ) ] = & rep
}
for i := 1 ; i <= 7 ; i ++ {
score := fmt . Sprintf ( "${Score%d}" , i )
points := fmt . Sprintf ( "${Points%d}" , i )
cwm . Report [ r . ReplaceAllString ( m . Text , score ) ] . Points , err = strconv . ParseInt ( r . ReplaceAllString ( m . Text , points ) , 10 , 64 )
}
2019-05-13 08:17:15 +02:00
return & cwm , err
2019-05-13 08:15:53 +02:00
}
2019-05-15 12:02:17 +02:00
func parseSubTypeMessagePillageInc ( m * ChatWarsMessage , r * regexp . Regexp ) ( * ChatWarsMessagePillageInc , error ) {
cwm := ChatWarsMessagePillageInc { }
cwm . Attacker = r . ReplaceAllString ( m . Text , "${Attacker}" )
cwm . Castle = r . ReplaceAllString ( m . Text , "${Castle}" )
cwm . Guild = r . ReplaceAllString ( m . Text , "${Guild}" )
return & cwm , nil
}