コード例 #1
0
 public ScriptSpawnTransformingUnitFast(DeathmatchMap Map)
     : base(Map, 140, 70, "Spawn Transforming Unit Fast", new string[] { "Spawn" }, new string[] { "Timer Ended", "Animation Ended", "SFX Ended" })
 {
     UnitSpawner          = new ScriptSpawnSquadHelper(Map, this);
     Leader               = new ScriptUnit(Map);
     _TransformationIndex = 0;
 }
コード例 #2
0
        public MainViewModel()
        {
            ExecuteScriptCommand = new RelayCommand <object>(async _ => await Task.Run(() =>
            {
                ScriptUnit.Execute();
            }));

            PauseCommand = new RelayCommand <object>(async _ => await Task.Run(() =>
            {
                ScriptUnit.Break();
            }));


            ResumeCommand = new RelayCommand <object>(async _ => await Task.Run(() =>
            {
                ScriptUnit.Resume();
            }));

            Script     = new PythonScript("./script.py");
            ScriptUnit = new PythonScriptUnit(Script, true);
            ConsoleVM  = new ConsoleViewModel();

            DeviceA = new Device();
            DeviceB = new Device();
            ConsoleVM.AppendGlobal("devA", DeviceA);
            ConsoleVM.AppendGlobal("devB", DeviceB);
            ScriptUnit.AppendGlobal("devA", DeviceA);
            ScriptUnit.AppendGlobal("devB", DeviceB);
        }
コード例 #3
0
 public ScriptSpawnSquadFast(DeathmatchMap Map)
     : base(Map, 140, 70, "Spawn Squad Fast", new string[] { "Spawn" }, new string[] { "Timer Ended", "Animation Ended", "SFX Ended" })
 {
     UnitSpawner = new ScriptSpawnSquadHelper(Map, this);
     Leader      = new ScriptUnit(Map);
     WingmanA    = new ScriptUnit(Map);
     WingmanB    = new ScriptUnit(Map);
 }
コード例 #4
0
            private void SpawnSquad()
            {
                ScriptUnit LeaderToSpawn   = (ScriptUnit)GetDataContainerByID(_LeaderToSpawnID, ScriptUnit.ScriptName);
                ScriptUnit WingmanAToSpawn = (ScriptUnit)GetDataContainerByID(_WingmanAToSpawnID, ScriptUnit.ScriptName);
                ScriptUnit WingmanBToSpawn = (ScriptUnit)GetDataContainerByID(_WingmanBToSpawnID, ScriptUnit.ScriptName);

                Squad RelativeSpawnSquad = null;

                for (int P = 0; P < Map.ListPlayer.Count && RelativeSpawnSquad == null; P++)
                {
                    for (int U = 0; U < Map.ListPlayer[P].ListSquad.Count && RelativeSpawnSquad == null; U++)
                    {
                        if (Map.ListPlayer[P].ListSquad[U].ID == _RelativeSpawnUnitID)
                        {
                            RelativeSpawnSquad = Map.ListPlayer[P].ListSquad[U];
                        }
                        else
                        {
                            continue;
                        }
                    }
                }

                if (Map.ListPlayer.Count > SpawnPlayer)
                {
                    //Don't spawn the unit if there's already on with this ID.
                    for (int U = 0; U < Map.ListPlayer[SpawnPlayer].ListSquad.Count; U++)
                    {
                        if (Map.ListPlayer[SpawnPlayer].ListSquad[U].ID == _LeaderToSpawnID)
                        {
                            return;
                        }
                    }
                }

                if (LeaderToSpawn != null && RelativeSpawnSquad != null)
                {
                    float SpawnPositionX = RelativeSpawnSquad.X + _RelativeSpawnPosition.X;
                    float SpawnPositionY = RelativeSpawnSquad.Y + _RelativeSpawnPosition.Y;
                    Microsoft.Xna.Framework.Vector3 FinalPosition;

                    Map.GetEmptyPosition(new Microsoft.Xna.Framework.Vector3(SpawnPositionX, SpawnPositionY, 0), out FinalPosition);

                    Squad NewSquad = new Squad("", LeaderToSpawn.SpawnUnit, WingmanAToSpawn.SpawnUnit, WingmanBToSpawn.SpawnUnit);

                    NewSquad.IsEventSquad       = IsEventSquad;
                    NewSquad.IsPlayerControlled = IsPlayerControlled;
                    AnimationPosition           = new Microsoft.Xna.Framework.Vector2(NewSquad.X * Map.TileSize.X, NewSquad.Y * Map.TileSize.Y);
                    UnitSpawned = true;

                    Map.SpawnSquad(SpawnPlayer, NewSquad, _LeaderToSpawnID, FinalPosition, _SpawnLayer);
                }
            }
コード例 #5
0
            public override void Update(Microsoft.Xna.Framework.GameTime gameTime)
            {
                ScriptUnit UnitToSpawn = (ScriptUnit)GetDataContainerByID(_UnitID, ScriptUnit.ScriptName);

                if (UnitToSpawn != null && !UnitToSpawn.DeleteAfterMission)
                {
                    if (_IsPresent)
                    {
                        UnitToSpawn.SpawnUnit.TeamTags.AddTag("Present");
                    }
                    if (_IsEvent)
                    {
                        UnitToSpawn.SpawnUnit.TeamTags.AddTag("Event");
                    }
                    Map.PlayerRoster.TeamUnits.Add(UnitToSpawn.SpawnUnit);
                }

                IsEnded = true;
            }
コード例 #6
0
 private void ParseScript(JSONObject obj)
 {
     switch (obj.type)
     {
         case JSONObject.Type.OBJECT:
             if (IsValidScript(obj))
             {
                 ScriptUnit unit = new ScriptUnit(obj.list[0].n, obj.list[1].str);
                 scriptList.Add(unit);
             }
             break;
         case JSONObject.Type.ARRAY:
             foreach (JSONObject subObj in obj.list)
             {
                 ParseScript(subObj);
             }
             break;
     }
 }