# HG changeset patch # User Wuzzy # Date 1518804995 -3600 # Node ID 880662cf41eef0b9a3256be4d472aea14466c14a # Parent 0248cf0da8345fa5aef46ef9e418570312b6574c Add team score next to team bars for CTF_Blizard, Control, CTF, Mutant, Space Invasion diff -r 0248cf0da834 -r 880662cf41ee share/hedgewars/Data/Maps/CTF_Blizzard/map.lua --- a/share/hedgewars/Data/Maps/CTF_Blizzard/map.lua Fri Feb 16 13:57:48 2018 +0100 +++ b/share/hedgewars/Data/Maps/CTF_Blizzard/map.lua Fri Feb 16 19:16:35 2018 +0100 @@ -1,4 +1,4 @@ --------------------------------- +------------------------------- -- CTF_BLIZZARD 0.9 -------------------------------- @@ -119,6 +119,7 @@ local teamNameArr = {} -- store the list of teams local teamSize = {} -- store how many hogs per team local teamIndex = {} -- at what point in the hhs{} does each team begin +local clanTeams = {} -- list of teams per clan ------------------- -- flag variables @@ -228,11 +229,9 @@ if teamID == 0 then alt = 1 - winner = "Red" elseif teamID == 1 then alt = 0 - winner = "Blue" end if fCaptures[teamID] == 3 then @@ -242,7 +241,6 @@ SetHealth(hhs[i],0) end end - --ShowMission("GAME OVER!", "Victory for the " .. winner .. " Team!", "Hooray!", 0, 0) ShowMission(loc("GAME OVER!"), loc("Victory for the ") .. GetHogTeamName(CurrentHedgehog), loc("Hooray!"), 0, 0) end @@ -253,7 +251,7 @@ for i = 0, 1 do if fNeedsRespawn[i] == true then - fGear[i] = SpawnAmmoCrate(fSpawnX[i],fSpawnY[i],amSkip) + fGear[i] = SpawnFakeAmmoCrate(fSpawnX[i],fSpawnY[i],false,false) --fGear[i] = SpawnHealthCrate(fSpawnX[i],fSpawnY[i]) fNeedsRespawn[i] = false fIsMissing[i] = false -- new, this should solve problems of a respawned flag being "returned" when a player tries to score @@ -266,6 +264,7 @@ function FlagDeleted(gear) + PlaySound(sndShotgunReload) if (gear == fGear[0]) then wtf = 0 bbq = 1 @@ -292,10 +291,12 @@ fNeedsRespawn[bbq] = true fCaptures[wtf] = fCaptures[wtf] +1 --fCaptures[wtf] - --ShowMission(LOC_NOT("You have SCORED!!"), "Red Team: " .. fCaptures[0], "Blue Team: " .. fCaptures[1], -amBazooka, 0) - ShowMission(loc("You have SCORED!!"), GetHogTeamName(CurrentHedgehog) .. ": " .. fCaptures[wtf], loc("Opposing Team: ") .. fCaptures[bbq], 0, 0) + AddCaption(string.format(loc("%s has scored!"), GetHogTeamName(CurrentHedgehog)), 0xFFFFFFFF, capgrpGameState) + for i=1, #clanTeams[wtf] do + SetTeamLabel(clanTeams[wtf][i], fCaptures[wtf]) + end - PlaySound(sndVictory) + PlaySound(sndHomerun) --SetEffect(fThief[bbq], hePoisoned, false) fThief[bbq] = nil -- player no longer has the enemy flag CheckScore(wtf) @@ -376,9 +377,9 @@ if fThief[wtf] ~= nil then if fThiefY[wtf] > 2040 then - fGear[wtf] = SpawnAmmoCrate(fThiefX[wtf],(fThiefY[wtf]+10),amSkip) + fGear[wtf] = SpawnFakeAmmoCrate(fThiefX[wtf],(fThiefY[wtf]+10),false,false) else - fGear[wtf] = SpawnAmmoCrate(fThiefX[wtf],(fThiefY[wtf]-50),amSkip) + fGear[wtf] = SpawnFakeAmmoCrate(fThiefX[wtf],(fThiefY[wtf]-50),false,false) end AddVisualGear(fThiefX[wtf], fThiefY[wtf], vgtBigExplosion, 0, false) @@ -477,39 +478,12 @@ -- make a list of individual team names for i = 0, (TeamsCount-1) do - teamNameArr[i] = i + teamNameArr[i] = GetTeamName(i) teamSize[i] = 0 teamIndex[i] = 0 + SetTeamLabel(teamNameArr[i], "0") end - numTeams = 0 - - for i = 0, (numhhs-1) do - - z = 0 - unfinished = true - while(unfinished == true) do - - newTeam = true - tempHogTeamName = GetHogTeamName(hhs[i]) -- this is the new name - - if tempHogTeamName == teamNameArr[z] then - newTeam = false - unfinished = false - end - - z = z + 1 - - if z == TeamsCount then - unfinished = false - if newTeam == true then - teamNameArr[numTeams] = tempHogTeamName - numTeams = numTeams + 1 - end - end - - end - - end + numTeams = TeamsCount -- find out how many hogs per team, and the index of the first hog in hhs for i = 0, numTeams-1 do @@ -520,10 +494,17 @@ teamIndex[i] = z -- should give starting index end teamSize[i] = teamSize[i] + 1 - --add a pointer so this hog appears at i in hhs + + local clan = GetHogClan(hhs[z]) + -- Also remember the clan to which the team belongs to + if not clanTeams[clan] then + clanTeams[clan] = {} + end + table.insert(clanTeams[clan], teamNameArr[i]) end end + end end @@ -628,7 +609,7 @@ fSpawnY[1] = 1747 for i = 0, 1 do - fGear[i] = SpawnAmmoCrate(fSpawnX[i],fSpawnY[i],amSkip) + fGear[i] = SpawnFakeAmmoCrate(fSpawnX[i],fSpawnY[i],false,false) fCirc[i] = AddVisualGear(fSpawnX[i],fSpawnY[i],vgtCircle,0,true) fCol[i] = GetClanColor(i) diff -r 0248cf0da834 -r 880662cf41ee share/hedgewars/Data/Maps/Control/map.lua --- a/share/hedgewars/Data/Maps/Control/map.lua Fri Feb 16 13:57:48 2018 +0100 +++ b/share/hedgewars/Data/Maps/Control/map.lua Fri Feb 16 19:16:35 2018 +0100 @@ -225,6 +225,13 @@ end end + -- Update team labels + for i = 0,(TeamsCount-1) do + if teamNameArr[i] ~= " " then + SetTeamLabel(teamNameArr[i], teamScore[teamClan[i]]) + end + end + end ----------------- @@ -273,6 +280,7 @@ -- find out how many hogs per team, and the index of the first hog in hhs for i = 0, (numTeams-1) do + SetTeamLabel(GetTeamName(i), "0") for z = 0, (numhhs-1) do if GetHogTeamName(hhs[z]) == teamNameArr[i] then teamClan[i] = GetHogClan(hhs[z]) @@ -412,22 +420,6 @@ TurnTimeLeft = 1 end - totalComment = "" - for i = 0,(TeamsCount-1) do - if teamNameArr[i] ~= " " then - -- Team scores (“: ”) - teamComment[i] = string.format(loc("%s: %d"), teamNameArr[i], teamScore[teamClan[i]]) .. "|" - totalComment = totalComment .. teamComment[i] - elseif teamNameArr[i] == " " then - teamComment[i] = "|" - end - end - - ShowMission(missionName, missionCaption, - missionHelp .. "|" .. - loc("Team Scores:") .. "|" .. - totalComment, 0, 1600) - end end diff -r 0248cf0da834 -r 880662cf41ee share/hedgewars/Data/Scripts/Multiplayer/Capture_the_Flag.lua --- a/share/hedgewars/Data/Scripts/Multiplayer/Capture_the_Flag.lua Fri Feb 16 13:57:48 2018 +0100 +++ b/share/hedgewars/Data/Scripts/Multiplayer/Capture_the_Flag.lua Fri Feb 16 19:16:35 2018 +0100 @@ -156,7 +156,7 @@ end if CurrentHedgehog ~= nil then AddCaption(string.format(loc("Victory for %s!"), GetHogTeamName(CurrentHedgehog))) - showMissionAndScorebar() + updateScores() end end @@ -184,7 +184,7 @@ fNeedsRespawn[bbq] = true fCaptures[wtf] = fCaptures[wtf] +1 AddCaption(string.format(loc("%s has scored!"), GetHogName(CurrentHedgehog))) - showMissionAndScorebar() + updateScores() PlaySound(sndHomerun) fThief[bbq] = nil -- player no longer has the enemy flag CheckScore(wtf) @@ -472,7 +472,7 @@ end -function showMissionAndScorebar(instaHide) +function showCTFMission() local captures if captureLimit == 1 then captures = string.format(loc("- First team to capture the flag wins"), captureLimit) @@ -489,26 +489,18 @@ loc("- Dropped flags may be returned or recaptured").."|".. loc("- Hogs will be revived") - local scoreboard = "" + ShowMission(loc("Capture The Flag"), loc("A Hedgewars minigame"), rules, 0, 0) +end - if gameStarted then - scoreboard = "|" .. loc("Scores: ") .. "|" - for i=0, 1 do - scoreboard = scoreboard .. string.format(loc("%s: %d"), teamNameArr[i], fCaptures[i]) - if i~=1 then scoreboard = scoreboard .. "|" end - end - end - local mission = rules .. scoreboard - - ShowMission(loc("Capture The Flag"), loc("A Hedgewars minigame"), mission, 0, 0) - if instaHide then - HideMission() +function updateScores() + for i=0, 1 do + SetTeamLabel(teamNameArr[i], tostring(fCaptures[i])) end end function onGameStart() - showMissionAndScorebar() + showCTFMission() RebuildTeamInfo() @@ -547,7 +539,7 @@ HandleRespawns() --new method of placing starting flags elseif gameTurns == 1 then - showMissionAndScorebar() + showCTFMission() elseif gameTurns == 2 then fPlaced[0] = true elseif gameTurns == 3 then diff -r 0248cf0da834 -r 880662cf41ee share/hedgewars/Data/Scripts/Multiplayer/Construction_Mode.lua --- a/share/hedgewars/Data/Scripts/Multiplayer/Construction_Mode.lua Fri Feb 16 13:57:48 2018 +0100 +++ b/share/hedgewars/Data/Scripts/Multiplayer/Construction_Mode.lua Fri Feb 16 19:16:35 2018 +0100 @@ -1689,7 +1689,7 @@ ShowMission ( loc("CONSTRUCTION MODE"), - loc("a Hedgewars mini-game"), + loc("A Hedgewars mini-game"), loc("Build a fortress and destroy your enemy.") .. "|" .. loc("There are a variety of structures available to aid you.") .. "|" .. loc("Use the structure placer to place structures.") diff -r 0248cf0da834 -r 880662cf41ee share/hedgewars/Data/Scripts/Multiplayer/Mutant.lua --- a/share/hedgewars/Data/Scripts/Multiplayer/Mutant.lua Fri Feb 16 13:57:48 2018 +0100 +++ b/share/hedgewars/Data/Scripts/Multiplayer/Mutant.lua Fri Feb 16 19:16:35 2018 +0100 @@ -119,8 +119,7 @@ loc("+2 for becoming the Mutant") .. "|" .. loc("+1 to the Mutant for killing anyone") .. "|" .. loc("+1 to the Bottom Feeder for killing anyone") .. "|" .. - loc("-1 to anyone for a suicide") .. "|" .. - loc("Other kills don't give you points.") + loc("-1 to anyone for a suicide") return ruleSet @@ -369,25 +368,12 @@ SetHealth(gear, 0) end -function updateScore() - - local showScore = "" - +function renderScores() for i=0, TeamsCount-1 do if teams[i]~= nil then - - local curr_score = getTeamValue(teams[i], "Score") - showScore = showScore .. string.format(loc("%s: %d (deaths: %d)"), teams[i], curr_score, getTeamValue(teams[i], "DeadHogs")) .. "|" - + SetTeamLabel(teams[i], string.format(loc("Score: %d | Deaths: %d"), getTeamValue(teams[i], "Score"), getTeamValue(teams[i], "DeadHogs"))) end end - - ShowMission(loc("Mutant"), - loc("Scores"), - showScore, 4, 1) - - HideMission() - end function checkScore() @@ -507,11 +493,6 @@ if meh == false then meh = true - else - ShowMission( loc("Mutant"), - loc("Scores"), - showScore, 4, 1) - HideMission() end end @@ -603,6 +584,8 @@ end end + renderScores() + ---***--- end @@ -700,7 +683,7 @@ end AddVisualGear(GetX(gear), GetY(gear), vgtSmokeRing, 0, false) PlaySound(sndWhack) - updateScore() + renderScores() end end end diff -r 0248cf0da834 -r 880662cf41ee share/hedgewars/Data/Scripts/Multiplayer/Space_Invasion.lua --- a/share/hedgewars/Data/Scripts/Multiplayer/Space_Invasion.lua Fri Feb 16 13:57:48 2018 +0100 +++ b/share/hedgewars/Data/Scripts/Multiplayer/Space_Invasion.lua Fri Feb 16 19:16:35 2018 +0100 @@ -575,7 +575,6 @@ -- make a list of individual team names for i = 0, (TeamsCount-1) do - teamNameArr[i] = " " -- = i teamSize[i] = 0 teamIndex[i] = 0 teamScore[i] = 0 @@ -628,6 +627,10 @@ end + for i=0, TeamsCount-1 do + SetTeamLabel(teamNameArr[i], teamScore[i]) + end + end -- control @@ -638,6 +641,7 @@ for i = 0,(TeamsCount-1) do if teamClan[i] == GetHogClan(CurrentHedgehog) then teamScore[i] = teamScore[i] + p + SetTeamLabel(teamNameArr[i], teamScore[i]) end end @@ -729,16 +733,11 @@ end local statusText, scoreText if roundNumber >= roundLimit then - if teamStats[1].score == teamStats[2].score then - statusText = loc("Status Update") - scoreText = loc("Team scores:") - else - statusText = loc("Game over!") - scoreText = loc("Final team scores:") - end + statusText = loc("Game over!") + scoreText = loc("Final team scores:") else - statusText = loc("Status Update") - scoreText = loc("Team scores:") + AddCaption(string.format(loc("Rounds complete: %d/%d"), roundNumber, roundLimit, 0xFFFFFFFF)) + return end local displayTime if roundNumber >= roundLimit then @@ -1256,7 +1255,6 @@ " " .. "|" .. string.format(loc("Round Limit: %d"), roundLimit) .. "|" .. - string.format(loc("Turn Time: %dsec"), (TurnTime/1000)) .. "|" .. " " .. "|" .. loc("Movement: [Up], [Down], [Left], [Right]") .. "|" ..