Hi Karl,
On 2022-12-14T15:54:17+00:00, commits@source.squeak.org wrote:
> A new version of EToys was added to project The Inbox:
> http://source.squeak.org/inbox/EToys-kfr.487.mcz
>
> ==================== Summary ====================
>
> Name: EToys-kfr.487
> Author: kfr
> Time: 14 December 2022, 4:52:54.725958 pm
> UUID: 9e4ab847-85fd-dc47-a79a-e6f6388e33e2
> Ancestors: EToys-ct.486
>
> MineGame scale to HD Display
>
> =============== Diff against EToys-ct.486 ===============
>
> Item was changed:
> ----- Method: Mines>>defaultBorderWidth (in category 'initialization') -----
> defaultBorderWidth
> "answer the default border width for the receiver"
> + ^ 2 px!
> - ^ 2!
>
> Item was changed:
> ----- Method: Mines>>initialize (in category 'initialization') -----
> initialize
> "initialize the state of the receiver"
>
> super initialize.
>
> level := 1.
> self listDirection: #topToBottom;
> wrapCentering: #center;
> cellPositioning: #topCenter;
> vResizing: #shrinkWrap;
> hResizing: #shrinkWrap;
> + layoutInset: 3 px;
> - layoutInset: 3;
> addMorph: self makeControls;
> addMorph: self board.
> helpText := nil.
>
> self newGame!
>
> Item was changed:
> ----- Method: Mines>>makeControls (in category 'initialize') -----
> makeControls
> | row |
> row := AlignmentMorph newRow color: color;
> + borderWidth: 2 px;
> + layoutInset: 3 px.
> - borderWidth: 2;
> - layoutInset: 3.
> row borderStyle: BorderStyle inset.
> row hResizing: #spaceFill;
> vResizing: #shrinkWrap;
> wrapCentering: #center;
> cellPositioning: #leftCenter;
> + extent: 5 px @ 5 px.
> - extent: 5 @ 5.
> row
> addMorph: (self
> buildButton: SimpleSwitchMorph new
> target: self
> label: ' Help ' translated
> selector: #help:).
> row
> addMorph: (self
> buildButton: (levelButton := SimpleButtonMorph new)
> target: self
> label: level asString translated
> selector: #nextLevel).
> row
> addMorph: (self
> buildButton: SimpleButtonMorph new
> target: self
> label: ' Quit ' translated
> selector: #delete).
> "row
> addMorph: (self
> buildButton: SimpleButtonMorph new
> target: self
> label: ' Hint ' translated
> selector: #hint)."
> row
> addMorph: (self
> buildButton: SimpleButtonMorph new
> target: self
> label: ' New game ' translated
> selector: #newGame).
> minesDisplay := LedMorph new digits: 2;
> + extent: 2 * 10 px @ 15 px.
> - extent: 2 * 10 @ 15.
> row
> addMorph: (self wrapPanel: minesDisplay label: 'Mines:' translated).
> + timeDisplay := LedTimerMorph new digits: 3; extent: 3 * 10 px @ 15 px.
> - timeDisplay := LedTimerMorph new digits: 3; extent: 3 * 10 @ 15.
>
> row
> addMorph: (self wrapPanel: timeDisplay label: 'Time:' translated).
> + hiScoreDisplay := LedMorph new digits: 3; extent: 3 * 10 px@ 15 px.
> - hiScoreDisplay := LedMorph new digits: 3; extent: 3 * 10 @ 15.
> row
> addMorph: (self wrapPanel: hiScoreDisplay label: 'Hi Score:' translated).
> ^ row!
>
> Item was changed:
> ----- Method: Mines>>wrapPanel:label: (in category 'initialize') -----
> wrapPanel: anLedPanel label: aLabel
> "wrap an LED panel in an alignmentMorph with a label to its left"
>
> | a |
> a := AlignmentMorph newRow
> wrapCentering: #center; cellPositioning: #leftCenter;
> hResizing: #shrinkWrap;
> vResizing: #shrinkWrap;
> borderWidth: 0;
> + layoutInset: 3 px;
> - layoutInset: 3;
> color: color lighter.
> a addMorph: anLedPanel.
> a addMorph: (StringMorph contents: aLabel).
> ^ a
> !
>
> Item was changed:
> ----- Method: MinesBoard>>defaultBorderWidth (in category 'initialization') -----
> defaultBorderWidth
> "answer the default border width for the receiver"
> + ^ 2 px!
> - ^ 2!
>
> Item was changed:
> ----- Method: MinesTile>>drawOn: (in category 'drawing') -----
> drawOn: aCanvas
> "Draw a rectangle with a solid, inset, or raised border.
> Note: the raised border color *and* the inset border color are generated
> from the receiver's own color, instead of having the inset border color
> generated from the owner's color, as in BorderedMorph."
>
> | font rct |
> super drawOn: aCanvas.
>
> self borderStyle style == #inset ifTrue: [
> self isMine ifTrue: [
> + font := StrikeFont familyName: 'Atlanta' size: 22 px emphasized: 1.
> + rct := self bounds insetBy: ((self bounds width) - (font widthOfString: '*'))/2 @0.
> - font := StrikeFont familyName: 'Atlanta' size: 22 emphasized: 1.
> - rct := self bounds insetBy: ((self bounds width) - (font widthOfString: '*'))/2 at 0.
> rct := rct top: rct top + 1.
> aCanvas drawString: '*' in: (rct translateBy: 1 at 1) font: font color: Color black.
> ^ aCanvas drawString: '*' in: rct font: font color: Color red .].
> self nearMines > 0 ifTrue: [
> + font := StrikeFont familyName: 'ComicBold' size: 22 px emphasized: 1.
> + rct := self bounds insetBy: ((self bounds width) - (font widthOfString: nearMines asString))/2 @0.
> - font := StrikeFont familyName: 'ComicBold' size: 22 emphasized: 1.
> - rct := self bounds insetBy: ((self bounds width) - (font widthOfString: nearMines asString))/2 at 0.
> rct := rct top: rct top + 1.
> aCanvas drawString: nearMines asString in: (rct translateBy: 1 at 1) font: font color: Color black.
> ^ aCanvas drawString: nearMines asString in: rct font: font color: ((palette at: nearMines) ) .]].!
not sure whether the use of fontSize + #px is idiomatic. Maybe Marcel can help with that?
Otherwise, LGTM. Thanks! :-)
Best,
Christoph
>
> Item was changed:
> ----- Method: MinesTile>>initialize (in category 'initialization') -----
> initialize
>
> super initialize.
> self label: ''.
> + self borderWidth: 3 px.
> + bounds := 0 at 0 corner: 20 px at 20 px.
> - self borderWidth: 3.
> - bounds := 0 at 0 corner: 20 at 20.
> offColor := self preferredColor.
> onColor := self preferredColor.
> switchState := false.
> oldSwitchState := false.
> disabled := false.
> isMine := false.
> nearMines := 0.
> self useSquareCorners.
> palette := (Color wheel: 8) asOrderedCollection reverse.
> " flashColor := palette removeLast."
> !
>
>
---
Sent from Squeak Inbox Talk