Пример #1
0
        /// <summary>
        /// Sets the instances
        /// </summary>
        private GMInstance[] SetInstances()
        {
            // Get regular and block instances
            List <GMareInstance> gmareInstances = new List <GMareInstance>();

            gmareInstances.AddRange(App.Room.Instances.ToArray());

            // Create a game maker instance array
            GMInstance[] instances = new GMInstance[gmareInstances.Count];

            // Set room instances
            for (int i = 0; i < gmareInstances.Count; i++)
            {
                bool     studio = _project.GameMakerVersion == GMVersionType.GameMakerStudio;
                GMObject obj    = studio ? _project.Objects.Find(o => o.Name == gmareInstances[i].ObjectName) :
                                  _project.Objects.Find(o => o.Id == gmareInstances[i].ObjectId);

                // If the object does not exist in the target project, abort
                if (obj == null)
                {
                    string objMessage = studio ? gmareInstances[i].ObjectName : gmareInstances[i].Name + "(Id: " + gmareInstances[i].ObjectId + ")";
                    MessageBox.Show("Could not find the object: " + objMessage + " within the target export project.",
                                    "GMare", MessageBoxButtons.OK, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button1);
                    return(null);
                }

                // Get the sprite for the instance offsets
                GMSprite sprite = studio ? _project.Sprites.Find(s => s.Name == obj.SpriteName) :
                                  _project.Sprites.Find(s => obj.SpriteId == obj.SpriteId);

                // If the sprite does not exist in the target project, abort
                if (sprite == null)
                {
                    string spriteMessage = studio ? obj.SpriteName : obj.SpriteId.ToString();
                    MessageBox.Show("Could not find the sprite: " + spriteMessage + " within the target export project.",
                                    "GMare", MessageBoxButtons.OK, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button1);
                    return(null);
                }

                // Increment project last instance id
                _project.LastInstanceId++;

                // Create a new instance
                instances[i]              = new GMInstance();
                instances[i].Name         = GetUniqueName(false);
                instances[i].CreationCode = (string)gmareInstances[i].CreationCode.Clone();
                instances[i].Id           = _project.LastInstanceId;
                instances[i].ObjectName   = gmareInstances[i].ObjectName;
                instances[i].ObjectId     = gmareInstances[i].ObjectId;
                instances[i].X            = gmareInstances[i].X + sprite.OriginX;
                instances[i].Y            = gmareInstances[i].Y + sprite.OriginY;
                instances[i].ScaleX       = gmareInstances[i].ScaleX == 0 ? 1 : gmareInstances[i].ScaleX;
                instances[i].ScaleY       = gmareInstances[i].ScaleY == 0 ? 1 : gmareInstances[i].ScaleY;
                instances[i].Rotation     = gmareInstances[i].Rotation;
            }

            // Return an array of instances
            return(instances);
        }
Пример #2
0
 //进入状态机
 public override void Enter()
 {
     GMInstance.UIController.updateTeamScore(GMInstance.currentScoreOfAttackerTeam, GMInstance.currentScoreOfDefenderTeam);
     GMInstance.UIController.setTargetScore(GMInstance.targetScore);
     AudioSource.PlayClipAtPoint(GMInstance.gameStartAudio, GMInstance.localPlayer.transform.position);      //播放游戏开始音效
     if (PhotonNetwork.isMasterClient)
     {
         GMInstance.InitCountDown(PhotonNetwork.time + competeDuration);
     }
 }
Пример #3
0
    //进入状态机
    public override void Enter()
    {
        //显示夺宝状态的相关UI
        GMInstance.UIController.enableGuardHPUI(true);
        GMInstance.UIController.enableTimeAndProcessPanel(true);
        GMInstance.UIController.enableRemainDistance(false);
        AudioSource.PlayClipAtPoint(GMInstance.gameStartAudio, GMInstance.localPlayer.transform.position);  //播放游戏开始音效
        if (PhotonNetwork.isMasterClient)
        {
            GMInstance.InitCountDown(PhotonNetwork.time + getTreasureDuration);
        }

        GuardZombie = GameObject.FindWithTag("Guard");
        //僵尸生成池开始工作
        GMInstance.zombieGenerator.generatorStartWorking();

        /*
         * 添加骷髅兵 完成并完成生成池对骷髅兵调度(模仿僵尸生成池)
         */
        //骷髅生成池开始工作
        GMInstance.skeletonGenerator.generatorStartWorking();

        GuardZombie.GetComponent <GuardAI>().Born(); //守护者开始工作
        var maxHp = GuardZombie.GetComponent <ZombieHealth>().maxHP;

        GMInstance.UIController.setGuardMaxHp(maxHp);
        var team = PhotonNetwork.player.customProperties["Team"].ToString();

        if (team == "AttackerTeam")
        {
            GMInstance.UIController.updateProcessText("击败守护者,夺得宝物车!");
        }
        else
        {
            GMInstance.UIController.updateProcessText("保护守护者,阻止盗墓者入侵!");
        }
    }
Пример #4
0
 //状态机初始化
 public override void Init()
 {
     GMInstance.initMonsterGenerator();
 }
Пример #5
0
 //退出状态机
 public override void Exit()
 {
     GMInstance.LeaveRoom(); //退出房间
 }
Пример #6
0
 //状态机退出
 public override void Exit()
 {
     GMInstance.InstantiatePlayer(); //准备结束时初始化玩家实例
 }