# HG changeset patch # User Wuzzy # Date 1520538000 -3600 # Node ID b1de2f84e130418a6eb39c88abe954e41b5ac271 # Parent c8c8f856e236019b7626672586b22beca0d5da60 HedgeEditor: Fix sndIncoming playing for placing stuff, add many sound effects diff -r c8c8f856e236 -r b1de2f84e130 ChangeLog.txt --- a/ChangeLog.txt Thu Mar 08 19:36:07 2018 +0100 +++ b/ChangeLog.txt Thu Mar 08 20:40:00 2018 +0100 @@ -54,7 +54,7 @@ + Control: Always remove TimeBox and Resurrector * Battalion: Some texts in the mission panel were wrong and misleading * Construction Mode: Remove drill strike if added by weapon scheme (it's broken) - * Construction Mode, Racer: No longer play Incoming voice for building stuff, fix other sound issues + * Construction Mode, Racer, HedgeEditor: No longer play Incoming voice for building stuff, fix other sound problems * Capture the Flag: Fix many bugs caused by playing with >2 teams * Capture the Flag: Properly place flag when first hog uses kamikaze or TimeBox * Capture the Flag: Fix flag not being dropped when carrier uses piano strike diff -r c8c8f856e236 -r b1de2f84e130 share/hedgewars/Data/Scripts/Multiplayer/HedgeEditor.lua --- a/share/hedgewars/Data/Scripts/Multiplayer/HedgeEditor.lua Thu Mar 08 19:36:07 2018 +0100 +++ b/share/hedgewars/Data/Scripts/Multiplayer/HedgeEditor.lua Thu Mar 08 20:40:00 2018 +0100 @@ -963,7 +963,11 @@ end -function CallPlaceSprite(pID) +function CallPlaceSprite(pID, silent) + + if silent == nil then + silent = false + end if landType == lfIce then placedLandFlags[pID] = "lfIce" @@ -986,12 +990,22 @@ actualDisplayedImage = ammoFrameAirAttack end - return PlaceSprite(placedX[pID], placedY[pID], placedSprite[pID], actualDisplayedImage, + local success = PlaceSprite(placedX[pID], placedY[pID], placedSprite[pID], actualDisplayedImage, placedTint[pID], nil, -- overrite existing land nil, nil, -- this stuff specifies flipping landType) + if not silent then + if success then + PlaySound(sndPlaced) + else + PlaySound(sndDenied) + end + end + + return success + end function SelectClosestSprite() @@ -1030,6 +1044,8 @@ nil, -- flip sprite vertically placedLandFlags[closestSpriteID]) + PlaySound(sndBump) + placedX[closestSpriteID] = nil placedY[closestSpriteID] = nil placedSpec[closestSpriteID] = nil @@ -1040,6 +1056,8 @@ placedLandFlags[closestSpriteID] = nil closestSpriteID = nil SetVisualGearValues(sSprite, 0, 0, 0, 0, 0, 1, 10000, sprAmGirder, 10000, 0x00000000 ) + else + PlaySound(sndDenied) end end @@ -1051,16 +1069,15 @@ for i = 0, (placedCount-1) do if (placedType[i] == loc("Waypoint Editing Mode")) then - q = placedX[i] - placedX[placedCount] - w = placedY[i] - placedY[placedCount] - d = ( (q*q) + (w*w) ) - if d < closestDist then - closestDist = d - closestSpriteID = i - - SetVisualGearValues(sSprite, placedX[i], placedY[i], 0, 0, nil, placedFrame[i], 10000, placedSprite[i], 10000, newTint ) - - end + local q = placedX[i] - placedX[placedCount] + local w = placedY[i] - placedY[placedCount] + local d = ( (q*q) + (w*w) ) + if d < closestDist then + closestDist = d + closestSpriteID = i + + SetVisualGearValues(sSprite, placedX[i], placedY[i], 0, 0, nil, placedFrame[i], 10000, placedSprite[i], 10000, newTint ) + end end end @@ -1076,6 +1093,9 @@ placedLandFlags[closestSpriteID] = nil closestSpriteID = nil SetVisualGearValues(sSprite, 0, 0, 0, 0, 0, 1, 10000, sprAmGirder, 10000, 0x00000000 ) + PlaySound(sndBump) + else + PlaySound(sndDenied) end end @@ -1139,8 +1159,10 @@ elseif CGR == 2 then placedHWMapFlag[placedCount] = 126 elseif CGR == 3 then placedHWMapFlag[placedCount] = 127 end + PlaySound(sndPlaced) else placedType[placedCount] = "bogus" + PlaySound(sndDenied) end else placedType[placedCount] = "bogus" @@ -1184,18 +1206,25 @@ if pMode[pIndex] == loc("Selection Mode") then sGear = GetClosestGear() + if sGear ~= nil then + PlaySound(sndPortalSwitch) + end elseif pMode[pIndex] == loc("Placement Mode") then if sGear ~= nil then SetGearPosition(sGear, x, y) + PlaySound(sndWarp) end elseif pMode[pIndex] == loc("Deletion Mode") then sGear = GetClosestGear() if (sGear == nil) then AddCaption(loc("Please click on a gear."), colorErrorMessage, capgrpVolume) + PlaySound(sndDenied) elseif (GetGearType(sGear) == gtHedgehog) then AddCaption(loc("Hedgehogs can not be deleted."), colorErrorMessage, capgrpVolume) + PlaySound(sndDenied) else DeleteGear(sGear) + PlaySound(sndBump) end sGear = nil end @@ -1209,8 +1238,10 @@ else -- set for the whole team SetTeamIdentity(sGear) end + PlaySound(sndHello, sGear) else AddCaption(loc("Please click on a hedgehog."), colorErrorMessage, capgrpVolume) + PlaySound(sndDenied) end @@ -1220,13 +1251,21 @@ sGear = GetClosestGear() local gt = GetGearType(sGear) if gt == gtHedgehog or gt == gtExplosives or (gt == gtCase and GetGearPos(sGear) == 0x2) then + local oldHealth, hDiff = GetHealth(sGear) if pMode[pIndex][2] == "set" then SetHealth(sGear, pMode[pIndex][1]) + hDiff = pMode[pIndex][1] - oldHealth elseif pMode[pIndex][2] == "mod" then local min if gt == gtCase then min = 0 else min = 1 end local newHealth = math.max(min, GetHealth(sGear) + tonumber(pMode[pIndex][1])) SetHealth(sGear, newHealth) + hDiff = newHealth - oldHealth + end + PlaySound(sndPortalSwitch) + if gt == gtHedgehog and hDiff < 0 then + local snd = { sndOw1, sndOw2, sndOw3 } + PlaySound(snd[math.random(1, #snd)], sGear) end elseif gt == gtMine and GetHealth(sGear) == 0 then local newHealth @@ -1240,9 +1279,11 @@ end if newHealth ~= nil then SetGearValues(sGear, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 36 - newHealth) + PlaySound(sndPortalSwitch) end else AddCaption(loc("Please click on a hedgehog, barrel, health crate or dud mine."), colorErrorMessage, capgrpVolume) + PlaySound(sndDenied) end elseif cat[cIndex] == loc("Sprite Modification Mode") then @@ -1252,16 +1293,21 @@ if closestSpriteID ~= nil then if pMode[pIndex] == loc("LandFlag Modification Mode") then EraseSprite(placedX[closestSpriteID], placedY[closestSpriteID], placedSprite[closestSpriteID], placedFrame[closestSpriteID], nil, nil, nil, nil, placedLandFlags[closestSpriteID]) - placementSucceeded = CallPlaceSprite(closestSpriteID) + placementSucceeded = CallPlaceSprite(closestSpriteID, true) if placementSucceeded then closestSpriteID = nil SetVisualGearValues(sSprite, 0, 0, 0, 0, 0, 1, 10000, sprAmGirder, 10000, 0x00000000 ) + PlaySound(sndPortalSwitch) + else + PlaySound(sndDenied) end elseif pMode[pIndex] == loc("Sprite Erasure Mode") then EraseClosestSprite() end + else + PlaySound(sndDenied) end @@ -1275,14 +1321,18 @@ if pMode[pIndex] == loc("Victory Condition: Collect") then if GetGearType(sGear) == gtCase then setGearValue(sGear, "tag","collection") + PlaySound(sndPortalSwitch) else AddCaption(loc("Please click on a crate."), colorErrorMessage, capgrpVolume) + PlaySound(sndDenied) end else if pMode[pIndex] == loc("Victory Condition: Destroy") then setGearValue(sGear, "tag","victory") + PlaySound(sndPortalSwitch) elseif pMode[pIndex] == loc("Losing Condition: Destroy") then setGearValue(sGear, "tag","failure") + PlaySound(sndPortalSwitch) end end @@ -1291,6 +1341,7 @@ setGearValue(sGear, "tag", nil) DeleteVisualGear(getGearValue(sGear,"tCirc")) setGearValue(sGear, "tCirc", nil) + PlaySound(sndBump) end @@ -1304,9 +1355,6 @@ placedFrame[placedCount] = sFrame placedSprite[placedCount] = reducedSpriteIDArray[pIndex] placementSucceeded = CallPlaceSprite(placedCount) - if placementSucceeded then - PlaySound(sndPlaced) - end else placedType[placedCount] = "bogus" SelectClosestSprite() @@ -2857,6 +2905,8 @@ if (curWep == amCMGearPlacementTool) then + SetSoundMask(sndIncoming, true) + --wowaweewa, holyeeeee shite this is badly hacked (please rewrite when less lazy/morefeatures) dCol = 0xFFFFFFFF dFrame = 0 @@ -2926,6 +2976,7 @@ end else + SetSoundMask(sndIncoming, false) if CG ~= nil then SetVisualGearValues(CG, 0, 0, 0, 0, 0, 0, 1000, sprArrow, 1000, 0xFFFFFF00) end @@ -2961,6 +3012,12 @@ RedefineSubset() end + if curWep == amGirder or curWep == amRubber then + SetSoundMask(sndDenied, true) + else + SetSoundMask(sndDenied, false) + end + -- update display selection criteria if (curWep == amGirder) or (curWep == amRubber) or (curWep == amCMGearPlacementTool) then AddCaption(cat[cIndex], colorPlaceMode1, capgrpMessage)