﻿# 界面都以class的方式来定义,初始化部分定义界面外观,处理消息部分定义界面内部逻辑
# "处理消息"并不是必须的.如果"处理消息"不返回一个非空值的话,则会在当前界面无限循环

## 注意:界面定义都是纯粹的python代码，所以定义界面的文件不能放到 剧本 目录下，必须放到 代码 目录下

# 定义游戏一开始时的界面
class 开始界面:

  # 定义开始界面中的元素布局
  def 初始化(self):
    图片(0, 0, "背景\\蒲公英.jpg") #显示一张图片
  
    按钮(550,300, 图片="界面\\START-1.png", 激活="界面\\START-点选.png", 返回值="开始游戏", 悬浮音效 = "鼠标悬浮.mp3") #按钮的返回值将在 处理消息(消息) 中处理
    按钮(590,380, 图片="界面\\LOAD-1.png", 激活="界面\\LOAD-点选.png", 返回值="读取进度", 悬浮音效 = "鼠标悬浮.mp3")
    按钮(630,465, 图片="界面\\EXIT-1.png", 激活="界面\\EXIT-点选.png", 返回值="退出", 悬浮音效 = "鼠标悬浮.mp3")
    
  
  # "消息" 即为所点击按钮的返回值
  def 处理消息(self, 消息):
    if 消息 == "开始游戏":
      跳到标签("游戏开始")   # 通过 跳到标签() 这个API直接退出当前界面并跳到标签处
    if 消息 == "读取进度":
      加载界面(读档界面)     # 点下LOAD按钮时, 加载 读档界面
    elif 消息 == "特殊":
      加载界面(特殊界面)     
    elif 消息 == "退出":
      加载界面(退出游戏界面) # 点下EXIT按钮时,加载 退出游戏界面    
    if 消息 == "退出":
      加载界面(退出游戏界面) # 点下EXIT按钮时,加载 退出游戏界面
      

# 定义一个特殊界面,用来演示界面特殊效果
class 特殊界面:
  def 初始化(self):
    图片(0, 0, "系统\\GrayBG.png")
    文本(400, 250, "程序:银月幽若\n剧本:银月幽若\n美工:Eero\n背景:商业素材\n音乐：商业素材",颜色=(0,255,0), 锚点="中中")
    按钮(400, 450, 文本="返回", 图片="界面\\按钮5.png", 激活="界面\\按钮高亮.png", 锚点 = "中中", 宽 = 100)  


# 定义退出游戏界面, 这个界面中需要处理消息.点下 "是" 按钮后通过API 退出游戏() 直接退出游戏
# 点击 "否" 按钮后需要返回上级菜单, 所以返回一个非空值 ("否"就是一个非空值).对这个情况而言返回任何非空值都可以    
class 退出游戏界面:
  def 初始化(self):
    图片(0, 0, "系统\\GrayBG.png")
    文本(400, 150, "确定要退出吗?", 颜色=(255,0,0), 锚点="中中")
    按钮(390, 200, 文本="是", 图片="界面\\按钮5.png", 激活="界面\\按钮高亮.png", 锚点="右中", 宽=100, 返回值="是", 字体 = ("华文琥珀", 22))
    按钮(410, 200, 文本="否", 图片="界面\\按钮5.png", 激活="界面\\按钮高亮.png", 锚点="左中", 宽=100, 返回值="否", 字体 = ("华文琥珀", 22))
    
  def 处理消息(self, 消息):
    if 消息 == "是":
      退出游戏()
    elif 消息 == "否":
      return "否"

  