[popMenuScr]
property spriteNum
property menuContents,maxLine,selNum
property lineHi,orgLoc,menuSt,mLineOld
property memName,marker,triMarker,triPos

on beginSprite
  set menuSt = 0
  set mLineOld = 0
  set memName = the name of the member of sprite spriteNum
  
  -- 選択マーカー
  set marker = getMarker(spriteNum)
  set triMarker = getTriMarker(spriteNum)
  set triPos = getTriPos(spriteNum)
  
  -- メニューの内容
  set menuContents = getMenuContents(spriteNum)
  put the number of lines of menuContents into maxLine
  
  -- 最初に選ばれているのは何番目か
  set selNum = getFirstSelNum(spriteNum)
  if selNum <> 0 then
    put line selNum of menuContents into member memName
    put triMarker into char triPos of member memName
  else
    set selNum = 1
  end if
  
  put the height of member memName into lineHi
  put the loc of sprite spriteNum into orgLoc
end

on prepareFrame
  case menuSt of
    1:
      put orgLoc - point(0,lineHi*(selNum-1)) into _loc
      set the loc of sprite spriteNum = setInStage(_loc,0,lineHi*maxLine)
      put menuContents into member memName
      put marker into char 1 of line selNum of member memName
      set menuSt = 2
    3:
      closeMenu
      action spriteNum,selNum
    4:
      closeMenu
    otherwise nothing
  end case
end

on closeMenu
  set the loc of sprite spriteNum = orgLoc
  put line selNum of menuContents into member memName
  put triMarker into char triPos of member memName
  set menuSt = 0
end

on mouseDown
  set menuSt = 1
end

on mouseWithIn
  if menuSt <> 0 then
    put the mouseLine into _line
    if _line >= 1 and _line <= maxLine then
      if _line <> mLineOld then
        hilite line _line of member memName
        set mLineOld = _line
      end if
    end if
  end if
end

on mouseLeave
  hilite line (maxLine+1) of member memName
  set mLineOld = maxLine+1
end

on mouseUp
  put the mouseLine into _line
  if _line >= 1 and _line <= maxLine then
    put the mouseLine into selNum
    set menuSt = 3
  else
    set menuSt = 4
  end if
end

on mouseUpOutside
  set menuSt = 4
end


[startMovie]

on prepareMovie
  global gStageWi,gStageHi
  
  set gStageWi = the stageRight - the stageLeft
  set gStageHi = the stageBottom - the stageTop
  
  put " " into member "result"
end

-- 画面内に納める
on setInStage _loc,_w,_h
  global gStageWi,gStageHi
  if getAt(_loc,1) < 4 then setAt _loc,1,4
  if getAt(_loc,2) < 4 then setAt _loc,2,4
  if getAt(_loc,1)+_w+4 > gStageWi then setAt _loc,1,gStageWi-_w-4
  if getAt(_loc,2)+_h+4 > gStageHi then setAt _loc,2,gStageHi-_h-4
  return _loc
end


on getMarker _spriteNum
  case _spriteNum of
    7:return "・"
    8:return " "
  end case
end

on getTriMarker _spriteNum
  case _spriteNum of
    7:return "▼"
    8:return " "
  end case
end

on getTriPos _spriteNum
  case _spriteNum of
    7:return 6
    8:return 5
  end case
end

on getMenuContents _spriteNum
  set menuContents = ""
  case _spriteNum of
    7:
      -- "全角スペース&方向の名前&半角スペース・・・・"
      put " 上面図    " & return after menuContents
      put " 左面図    " & return after menuContents
      put " 前面図    " & return after menuContents
      put " 右面図    " & return after menuContents
      put " 後面図    " & return after menuContents
      put " 底面図    " after menuContents
      return menuContents
    8:
      repeat with i = 5 to 22
        if i <= 9 then
          put " " & i into _n
        else
          put i into _n
        end if
        put " " & _n & "個 " & RETURN after menuContents
      end repeat
      delete the last Char of menuContents
      return menuContents
  end case
end

on getFirstSelNum _spriteNum
  case _spriteNum of
    7:
      put the name of the member of sprite 6 into _picName
      case _picName of
        "上面図":return 1
        "左面図":return 2
        "前面図":return 3
        "右面図":return 4
        "後面図":return 5
        "底面図":return 6
      end case
    8:
      put " (答え)" into member the memberNum of sprite 8
      return 0
  end case
end

on action _spriteNum,_num
  case _spriteNum of
    7:
      case _num of
        1:put "上面図" into _picName
        2:put "左面図" into _picName
        3:put "前面図" into _picName
        4:put "右面図" into _picName
        5:put "後面図" into _picName
        6:put "底面図" into _picName
      end case
      set the member of sprite 6 = member _picName
    8:
      case _num of
        12:
          beep
          put "それが違うんだなぁ・・・" into member "result"
        13:put "大正解!赤い立方体が16個と外側の青い立方体がツ
1個の計17個。" into member "result"
        otherwise
          beep
          put "違います。" into member "result"
      end case
  end case
end