Remove $/min from the basic stats

This commit is contained in:
abcdefg30
2019-10-06 12:09:24 +02:00
committed by reaperrr
parent 0ad8320bff
commit 4ca42f6e83
5 changed files with 65 additions and 130 deletions

View File

@@ -383,7 +383,6 @@ namespace OpenRA.Mods.Common.Widgets.Logic
var res = player.PlayerActor.Trait<PlayerResources>(); var res = player.PlayerActor.Trait<PlayerResources>();
template.Get<LabelWidget>("CASH").GetText = () => "$" + (res.Cash + res.Resources); template.Get<LabelWidget>("CASH").GetText = () => "$" + (res.Cash + res.Resources);
template.Get<LabelWidget>("EARNED_MIN").GetText = () => AverageEarnedPerMinute(res.Earned);
var powerRes = player.PlayerActor.TraitOrDefault<PowerManager>(); var powerRes = player.PlayerActor.TraitOrDefault<PowerManager>();
if (powerRes != null) if (powerRes != null)

View File

@@ -288,7 +288,7 @@ Container@OBSERVER_WIDGETS:
Container@BASIC_STATS_HEADERS: Container@BASIC_STATS_HEADERS:
X: 0 X: 0
Y: 0 Y: 0
Width: 765 Width: 705
Height: PARENT_BOTTOM Height: PARENT_BOTTOM
Children: Children:
ColorBlock@HEADER_COLOR: ColorBlock@HEADER_COLOR:
@@ -322,17 +322,8 @@ Container@OBSERVER_WIDGETS:
Text: Cash Text: Cash
Align: Right Align: Right
Shadow: True Shadow: True
Label@EARNED_MIN_HEADER:
X: 240
Y: 0
Width: 60
Height: PARENT_BOTTOM
Font: Bold
Text: $/min
Align: Right
Shadow: True
Label@POWER_HEADER: Label@POWER_HEADER:
X: 300 X: 240
Y: 0 Y: 0
Width: 80 Width: 80
Height: PARENT_BOTTOM Height: PARENT_BOTTOM
@@ -341,7 +332,7 @@ Container@OBSERVER_WIDGETS:
Align: Center Align: Center
Shadow: True Shadow: True
Label@KILLS_HEADER: Label@KILLS_HEADER:
X: 380 X: 320
Y: 0 Y: 0
Width: 40 Width: 40
Height: PARENT_BOTTOM Height: PARENT_BOTTOM
@@ -350,7 +341,7 @@ Container@OBSERVER_WIDGETS:
Align: Right Align: Right
Shadow: True Shadow: True
Label@DEATHS_HEADER: Label@DEATHS_HEADER:
X: 420 X: 360
Y: 0 Y: 0
Width: 60 Width: 60
Height: PARENT_BOTTOM Height: PARENT_BOTTOM
@@ -359,7 +350,7 @@ Container@OBSERVER_WIDGETS:
Align: Right Align: Right
Shadow: True Shadow: True
Label@ASSETS_DESTROYED_HEADER: Label@ASSETS_DESTROYED_HEADER:
X: 480 X: 420
Y: 0 Y: 0
Width: 80 Width: 80
Height: PARENT_BOTTOM Height: PARENT_BOTTOM
@@ -368,7 +359,7 @@ Container@OBSERVER_WIDGETS:
Align: Right Align: Right
Shadow: True Shadow: True
Label@ASSETS_LOST_HEADER: Label@ASSETS_LOST_HEADER:
X: 560 X: 500
Y: 0 Y: 0
Width: 80 Width: 80
Height: PARENT_BOTTOM Height: PARENT_BOTTOM
@@ -377,7 +368,7 @@ Container@OBSERVER_WIDGETS:
Align: Right Align: Right
Shadow: True Shadow: True
Label@EXPERIENCE_HEADER: Label@EXPERIENCE_HEADER:
X: 640 X: 580
Y: 0 Y: 0
Width: 60 Width: 60
Height: PARENT_BOTTOM Height: PARENT_BOTTOM
@@ -386,7 +377,7 @@ Container@OBSERVER_WIDGETS:
Align: Right Align: Right
Shadow: True Shadow: True
Label@ACTIONS_MIN_HEADER: Label@ACTIONS_MIN_HEADER:
X: 700 X: 640
Y: 0 Y: 0
Width: 60 Width: 60
Height: PARENT_BOTTOM Height: PARENT_BOTTOM
@@ -679,7 +670,7 @@ Container@OBSERVER_WIDGETS:
ScrollItem@BASIC_PLAYER_TEMPLATE: ScrollItem@BASIC_PLAYER_TEMPLATE:
X: 0 X: 0
Y: 0 Y: 0
Width: 765 Width: 705
Height: 24 Height: 24
BaseName: scrollitem-nohover BaseName: scrollitem-nohover
Children: Children:
@@ -714,57 +705,50 @@ Container@OBSERVER_WIDGETS:
Height: PARENT_BOTTOM Height: PARENT_BOTTOM
Align: Right Align: Right
Shadow: True Shadow: True
Label@EARNED_MIN:
X: 240
Y: 0
Width: 60
Height: PARENT_BOTTOM
Align: Right
Shadow: True
Label@POWER: Label@POWER:
X: 300 X: 240
Y: 0 Y: 0
Width: 80 Width: 80
Height: PARENT_BOTTOM Height: PARENT_BOTTOM
Align: Center Align: Center
Shadow: True Shadow: True
Label@KILLS: Label@KILLS:
X: 380 X: 320
Y: 0 Y: 0
Width: 40 Width: 40
Height: PARENT_BOTTOM Height: PARENT_BOTTOM
Align: Right Align: Right
Shadow: True Shadow: True
Label@DEATHS: Label@DEATHS:
X: 420 X: 360
Y: 0 Y: 0
Width: 60 Width: 60
Height: PARENT_BOTTOM Height: PARENT_BOTTOM
Align: Right Align: Right
Shadow: True Shadow: True
Label@ASSETS_DESTROYED: Label@ASSETS_DESTROYED:
X: 480 X: 420
Y: 0 Y: 0
Width: 80 Width: 80
Height: PARENT_BOTTOM Height: PARENT_BOTTOM
Align: Right Align: Right
Shadow: True Shadow: True
Label@ASSETS_LOST: Label@ASSETS_LOST:
X: 560 X: 500
Y: 0 Y: 0
Width: 80 Width: 80
Height: PARENT_BOTTOM Height: PARENT_BOTTOM
Align: Right Align: Right
Shadow: True Shadow: True
Label@EXPERIENCE: Label@EXPERIENCE:
X: 640 X: 580
Y: 0 Y: 0
Width: 60 Width: 60
Height: PARENT_BOTTOM Height: PARENT_BOTTOM
Align: Right Align: Right
Shadow: True Shadow: True
Label@ACTIONS_MIN: Label@ACTIONS_MIN:
X: 700 X: 640
Y: 0 Y: 0
Width: 60 Width: 60
Height: PARENT_BOTTOM Height: PARENT_BOTTOM

View File

@@ -192,7 +192,7 @@ Container@OBSERVER_WIDGETS:
Container@BASIC_STATS_HEADERS: Container@BASIC_STATS_HEADERS:
X: 0 X: 0
Y: 0 Y: 0
Width: 760 Width: 700
Height: PARENT_BOTTOM Height: PARENT_BOTTOM
Children: Children:
ColorBlock@HEADER_COLOR: ColorBlock@HEADER_COLOR:
@@ -226,17 +226,8 @@ Container@OBSERVER_WIDGETS:
Text: Cash Text: Cash
Align: Right Align: Right
Shadow: True Shadow: True
Label@EARNED_MIN_HEADER:
X: 235
Y: 0
Width: 60
Height: PARENT_BOTTOM
Font: Bold
Text: $/min
Align: Right
Shadow: True
Label@POWER_HEADER: Label@POWER_HEADER:
X: 295 X: 235
Y: 0 Y: 0
Width: 80 Width: 80
Height: PARENT_BOTTOM Height: PARENT_BOTTOM
@@ -245,7 +236,7 @@ Container@OBSERVER_WIDGETS:
Align: Center Align: Center
Shadow: True Shadow: True
Label@KILLS_HEADER: Label@KILLS_HEADER:
X: 375 X: 315
Y: 0 Y: 0
Width: 40 Width: 40
Height: PARENT_BOTTOM Height: PARENT_BOTTOM
@@ -254,7 +245,7 @@ Container@OBSERVER_WIDGETS:
Align: Right Align: Right
Shadow: True Shadow: True
Label@DEATHS_HEADER: Label@DEATHS_HEADER:
X: 415 X: 355
Y: 0 Y: 0
Width: 60 Width: 60
Height: PARENT_BOTTOM Height: PARENT_BOTTOM
@@ -263,7 +254,7 @@ Container@OBSERVER_WIDGETS:
Align: Right Align: Right
Shadow: True Shadow: True
Label@ASSETS_DESTROYED_HEADER: Label@ASSETS_DESTROYED_HEADER:
X: 475 X: 415
Y: 0 Y: 0
Width: 80 Width: 80
Height: PARENT_BOTTOM Height: PARENT_BOTTOM
@@ -272,7 +263,7 @@ Container@OBSERVER_WIDGETS:
Align: Right Align: Right
Shadow: True Shadow: True
Label@ASSETS_LOST_HEADER: Label@ASSETS_LOST_HEADER:
X: 555 X: 495
Y: 0 Y: 0
Width: 80 Width: 80
Height: PARENT_BOTTOM Height: PARENT_BOTTOM
@@ -281,7 +272,7 @@ Container@OBSERVER_WIDGETS:
Align: Right Align: Right
Shadow: True Shadow: True
Label@EXPERIENCE_HEADER: Label@EXPERIENCE_HEADER:
X: 635 X: 575
Y: 0 Y: 0
Width: 60 Width: 60
Height: PARENT_BOTTOM Height: PARENT_BOTTOM
@@ -290,7 +281,7 @@ Container@OBSERVER_WIDGETS:
Align: Right Align: Right
Shadow: True Shadow: True
Label@ACTIONS_MIN_HEADER: Label@ACTIONS_MIN_HEADER:
X: 695 X: 635
Y: 0 Y: 0
Width: 60 Width: 60
Height: PARENT_BOTTOM Height: PARENT_BOTTOM
@@ -575,7 +566,7 @@ Container@OBSERVER_WIDGETS:
ScrollItem@BASIC_PLAYER_TEMPLATE: ScrollItem@BASIC_PLAYER_TEMPLATE:
X: 0 X: 0
Y: 0 Y: 0
Width: 760 Width: 700
Height: 25 Height: 25
BaseName: scrollitem-nohover BaseName: scrollitem-nohover
Children: Children:
@@ -608,57 +599,50 @@ Container@OBSERVER_WIDGETS:
Height: PARENT_BOTTOM Height: PARENT_BOTTOM
Align: Right Align: Right
Shadow: True Shadow: True
Label@EARNED_MIN:
X: 235
Y: 0
Width: 60
Height: PARENT_BOTTOM
Align: Right
Shadow: True
Label@POWER: Label@POWER:
X: 295 X: 235
Y: 0 Y: 0
Width: 80 Width: 80
Height: PARENT_BOTTOM Height: PARENT_BOTTOM
Align: Center Align: Center
Shadow: True Shadow: True
Label@KILLS: Label@KILLS:
X: 375 X: 315
Y: 0 Y: 0
Width: 40 Width: 40
Height: PARENT_BOTTOM Height: PARENT_BOTTOM
Align: Right Align: Right
Shadow: True Shadow: True
Label@DEATHS: Label@DEATHS:
X: 415 X: 355
Y: 0 Y: 0
Width: 60 Width: 60
Height: PARENT_BOTTOM Height: PARENT_BOTTOM
Align: Right Align: Right
Shadow: True Shadow: True
Label@ASSETS_DESTROYED: Label@ASSETS_DESTROYED:
X: 475 X: 415
Y: 0 Y: 0
Width: 80 Width: 80
Height: PARENT_BOTTOM Height: PARENT_BOTTOM
Align: Right Align: Right
Shadow: True Shadow: True
Label@ASSETS_LOST: Label@ASSETS_LOST:
X: 555 X: 495
Y: 0 Y: 0
Width: 80 Width: 80
Height: PARENT_BOTTOM Height: PARENT_BOTTOM
Align: Right Align: Right
Shadow: True Shadow: True
Label@EXPERIENCE: Label@EXPERIENCE:
X: 635 X: 575
Y: 0 Y: 0
Width: 60 Width: 60
Height: PARENT_BOTTOM Height: PARENT_BOTTOM
Align: Right Align: Right
Shadow: True Shadow: True
Label@ACTIONS_MIN: Label@ACTIONS_MIN:
X: 695 X: 635
Y: 0 Y: 0
Width: 60 Width: 60
Height: PARENT_BOTTOM Height: PARENT_BOTTOM

View File

@@ -224,7 +224,7 @@ Container@OBSERVER_WIDGETS:
Container@BASIC_STATS_HEADERS: Container@BASIC_STATS_HEADERS:
X: 0 X: 0
Y: 0 Y: 0
Width: 765 Width: 705
Height: PARENT_BOTTOM Height: PARENT_BOTTOM
Children: Children:
ColorBlock@HEADER_COLOR: ColorBlock@HEADER_COLOR:
@@ -258,17 +258,8 @@ Container@OBSERVER_WIDGETS:
Text: Cash Text: Cash
Align: Right Align: Right
Shadow: True Shadow: True
Label@EARNED_MIN_HEADER:
X: 240
Y: 0
Width: 60
Height: PARENT_BOTTOM
Font: Bold
Text: $/min
Align: Right
Shadow: True
Label@POWER_HEADER: Label@POWER_HEADER:
X: 300 X: 240
Y: 0 Y: 0
Width: 80 Width: 80
Height: PARENT_BOTTOM Height: PARENT_BOTTOM
@@ -277,7 +268,7 @@ Container@OBSERVER_WIDGETS:
Align: Center Align: Center
Shadow: True Shadow: True
Label@KILLS_HEADER: Label@KILLS_HEADER:
X: 380 X: 320
Y: 0 Y: 0
Width: 40 Width: 40
Height: PARENT_BOTTOM Height: PARENT_BOTTOM
@@ -286,7 +277,7 @@ Container@OBSERVER_WIDGETS:
Align: Right Align: Right
Shadow: True Shadow: True
Label@DEATHS_HEADER: Label@DEATHS_HEADER:
X: 420 X: 360
Y: 0 Y: 0
Width: 60 Width: 60
Height: PARENT_BOTTOM Height: PARENT_BOTTOM
@@ -295,7 +286,7 @@ Container@OBSERVER_WIDGETS:
Align: Right Align: Right
Shadow: True Shadow: True
Label@ASSETS_DESTROYED_HEADER: Label@ASSETS_DESTROYED_HEADER:
X: 480 X: 420
Y: 0 Y: 0
Width: 80 Width: 80
Height: PARENT_BOTTOM Height: PARENT_BOTTOM
@@ -304,7 +295,7 @@ Container@OBSERVER_WIDGETS:
Align: Right Align: Right
Shadow: True Shadow: True
Label@ASSETS_LOST_HEADER: Label@ASSETS_LOST_HEADER:
X: 560 X: 500
Y: 0 Y: 0
Width: 80 Width: 80
Height: PARENT_BOTTOM Height: PARENT_BOTTOM
@@ -313,7 +304,7 @@ Container@OBSERVER_WIDGETS:
Align: Right Align: Right
Shadow: True Shadow: True
Label@EXPERIENCE_HEADER: Label@EXPERIENCE_HEADER:
X: 640 X: 580
Y: 0 Y: 0
Width: 60 Width: 60
Height: PARENT_BOTTOM Height: PARENT_BOTTOM
@@ -322,7 +313,7 @@ Container@OBSERVER_WIDGETS:
Align: Right Align: Right
Shadow: True Shadow: True
Label@ACTIONS_MIN_HEADER: Label@ACTIONS_MIN_HEADER:
X: 700 X: 640
Y: 0 Y: 0
Width: 60 Width: 60
Height: PARENT_BOTTOM Height: PARENT_BOTTOM
@@ -591,7 +582,7 @@ Container@OBSERVER_WIDGETS:
ScrollItem@TEAM_TEMPLATE: ScrollItem@TEAM_TEMPLATE:
X: 0 X: 0
Y: 0 Y: 0
Width: 650 #PARENT_RIGHT - 35 Width: 650
Height: 24 Height: 24
Children: Children:
ColorBlock@TEAM_COLOR: ColorBlock@TEAM_COLOR:
@@ -617,7 +608,7 @@ Container@OBSERVER_WIDGETS:
ScrollItem@BASIC_PLAYER_TEMPLATE: ScrollItem@BASIC_PLAYER_TEMPLATE:
X: 0 X: 0
Y: 0 Y: 0
Width: 765 Width: 705
Height: 24 Height: 24
BaseName: scrollitem-nohover BaseName: scrollitem-nohover
Children: Children:
@@ -652,57 +643,50 @@ Container@OBSERVER_WIDGETS:
Height: PARENT_BOTTOM Height: PARENT_BOTTOM
Align: Right Align: Right
Shadow: True Shadow: True
Label@EARNED_MIN:
X: 240
Y: 0
Width: 60
Height: PARENT_BOTTOM
Align: Right
Shadow: True
Label@POWER: Label@POWER:
X: 300 X: 240
Y: 0 Y: 0
Width: 80 Width: 80
Height: PARENT_BOTTOM Height: PARENT_BOTTOM
Align: Center Align: Center
Shadow: True Shadow: True
Label@KILLS: Label@KILLS:
X: 380 X: 320
Y: 0 Y: 0
Width: 40 Width: 40
Height: PARENT_BOTTOM Height: PARENT_BOTTOM
Align: Right Align: Right
Shadow: True Shadow: True
Label@DEATHS: Label@DEATHS:
X: 420 X: 360
Y: 0 Y: 0
Width: 60 Width: 60
Height: PARENT_BOTTOM Height: PARENT_BOTTOM
Align: Right Align: Right
Shadow: True Shadow: True
Label@ASSETS_DESTROYED: Label@ASSETS_DESTROYED:
X: 480 X: 420
Y: 0 Y: 0
Width: 80 Width: 80
Height: PARENT_BOTTOM Height: PARENT_BOTTOM
Align: Right Align: Right
Shadow: True Shadow: True
Label@ASSETS_LOST: Label@ASSETS_LOST:
X: 560 X: 500
Y: 0 Y: 0
Width: 80 Width: 80
Height: PARENT_BOTTOM Height: PARENT_BOTTOM
Align: Right Align: Right
Shadow: True Shadow: True
Label@EXPERIENCE: Label@EXPERIENCE:
X: 640 X: 580
Y: 0 Y: 0
Width: 60 Width: 60
Height: PARENT_BOTTOM Height: PARENT_BOTTOM
Align: Right Align: Right
Shadow: True Shadow: True
Label@ACTIONS_MIN: Label@ACTIONS_MIN:
X: 700 X: 640
Y: 0 Y: 0
Width: 60 Width: 60
Height: PARENT_BOTTOM Height: PARENT_BOTTOM

View File

@@ -192,7 +192,7 @@ Container@OBSERVER_WIDGETS:
Container@BASIC_STATS_HEADERS: Container@BASIC_STATS_HEADERS:
X: 0 X: 0
Y: 0 Y: 0
Width: 765 Width: 705
Height: PARENT_BOTTOM Height: PARENT_BOTTOM
Children: Children:
ColorBlock@HEADER_COLOR: ColorBlock@HEADER_COLOR:
@@ -226,17 +226,8 @@ Container@OBSERVER_WIDGETS:
Text: Cash Text: Cash
Align: Right Align: Right
Shadow: True Shadow: True
Label@EARNED_MIN_HEADER:
X: 240
Y: 0
Width: 60
Height: PARENT_BOTTOM
Font: Bold
Text: $/min
Align: Right
Shadow: True
Label@POWER_HEADER: Label@POWER_HEADER:
X: 300 X: 240
Y: 0 Y: 0
Width: 80 Width: 80
Height: PARENT_BOTTOM Height: PARENT_BOTTOM
@@ -245,7 +236,7 @@ Container@OBSERVER_WIDGETS:
Align: Center Align: Center
Shadow: True Shadow: True
Label@KILLS_HEADER: Label@KILLS_HEADER:
X: 380 X: 320
Y: 0 Y: 0
Width: 40 Width: 40
Height: PARENT_BOTTOM Height: PARENT_BOTTOM
@@ -254,7 +245,7 @@ Container@OBSERVER_WIDGETS:
Align: Right Align: Right
Shadow: True Shadow: True
Label@DEATHS_HEADER: Label@DEATHS_HEADER:
X: 420 X: 360
Y: 0 Y: 0
Width: 60 Width: 60
Height: PARENT_BOTTOM Height: PARENT_BOTTOM
@@ -263,7 +254,7 @@ Container@OBSERVER_WIDGETS:
Align: Right Align: Right
Shadow: True Shadow: True
Label@ASSETS_DESTROYED_HEADER: Label@ASSETS_DESTROYED_HEADER:
X: 480 X: 420
Y: 0 Y: 0
Width: 80 Width: 80
Height: PARENT_BOTTOM Height: PARENT_BOTTOM
@@ -272,7 +263,7 @@ Container@OBSERVER_WIDGETS:
Align: Right Align: Right
Shadow: True Shadow: True
Label@ASSETS_LOST_HEADER: Label@ASSETS_LOST_HEADER:
X: 560 X: 500
Y: 0 Y: 0
Width: 80 Width: 80
Height: PARENT_BOTTOM Height: PARENT_BOTTOM
@@ -281,7 +272,7 @@ Container@OBSERVER_WIDGETS:
Align: Right Align: Right
Shadow: True Shadow: True
Label@EXPERIENCE_HEADER: Label@EXPERIENCE_HEADER:
X: 640 X: 580
Y: 0 Y: 0
Width: 60 Width: 60
Height: PARENT_BOTTOM Height: PARENT_BOTTOM
@@ -290,7 +281,7 @@ Container@OBSERVER_WIDGETS:
Align: Right Align: Right
Shadow: True Shadow: True
Label@ACTIONS_MIN_HEADER: Label@ACTIONS_MIN_HEADER:
X: 700 X: 640
Y: 0 Y: 0
Width: 60 Width: 60
Height: PARENT_BOTTOM Height: PARENT_BOTTOM
@@ -575,7 +566,7 @@ Container@OBSERVER_WIDGETS:
ScrollItem@BASIC_PLAYER_TEMPLATE: ScrollItem@BASIC_PLAYER_TEMPLATE:
X: 0 X: 0
Y: 0 Y: 0
Width: 765 Width: 705
Height: 24 Height: 24
BaseName: scrollitem-nohover BaseName: scrollitem-nohover
Children: Children:
@@ -610,57 +601,50 @@ Container@OBSERVER_WIDGETS:
Height: PARENT_BOTTOM Height: PARENT_BOTTOM
Align: Right Align: Right
Shadow: True Shadow: True
Label@EARNED_MIN:
X: 240
Y: 0
Width: 60
Height: PARENT_BOTTOM
Align: Right
Shadow: True
Label@POWER: Label@POWER:
X: 300 X: 240
Y: 0 Y: 0
Width: 80 Width: 80
Height: PARENT_BOTTOM Height: PARENT_BOTTOM
Align: Center Align: Center
Shadow: True Shadow: True
Label@KILLS: Label@KILLS:
X: 380 X: 320
Y: 0 Y: 0
Width: 40 Width: 40
Height: PARENT_BOTTOM Height: PARENT_BOTTOM
Align: Right Align: Right
Shadow: True Shadow: True
Label@DEATHS: Label@DEATHS:
X: 420 X: 360
Y: 0 Y: 0
Width: 60 Width: 60
Height: PARENT_BOTTOM Height: PARENT_BOTTOM
Align: Right Align: Right
Shadow: True Shadow: True
Label@ASSETS_DESTROYED: Label@ASSETS_DESTROYED:
X: 480 X: 420
Y: 0 Y: 0
Width: 80 Width: 80
Height: PARENT_BOTTOM Height: PARENT_BOTTOM
Align: Right Align: Right
Shadow: True Shadow: True
Label@ASSETS_LOST: Label@ASSETS_LOST:
X: 560 X: 500
Y: 0 Y: 0
Width: 80 Width: 80
Height: PARENT_BOTTOM Height: PARENT_BOTTOM
Align: Right Align: Right
Shadow: True Shadow: True
Label@EXPERIENCE: Label@EXPERIENCE:
X: 640 X: 580
Y: 0 Y: 0
Width: 60 Width: 60
Height: PARENT_BOTTOM Height: PARENT_BOTTOM
Align: Right Align: Right
Shadow: True Shadow: True
Label@ACTIONS_MIN: Label@ACTIONS_MIN:
X: 700 X: 640
Y: 0 Y: 0
Width: 60 Width: 60
Height: PARENT_BOTTOM Height: PARENT_BOTTOM