コード例 #1
0
 public TurretController(TurretModel model, Vector3 spawnPosition, Transform node)
 {
     _model         = model;
     _view          = TurretFactory.InstantiateView(spawnPosition, node, _model.PrefabName, this);
     _fireCountdown = 0f;
     _aimType       = new NearestPriority();
 }
コード例 #2
0
    private void LoadAllTurretParams()
    {
        foreach (TurretParams defaultTurretParams in GlobalVariables.DefaultTurretsParams)
        {
            foreach (string turretName in defaultTurretParams.Upgrades)
            {
                if (GlobalVariables.AllTurretParams.ContainsKey(turretName))
                {
                    return;
                }
                using (UnityWebRequest request = UnityWebRequest.Get("http://127.0.0.1:8000/turret-download?name=" + turretName))
                {
                    request.SendWebRequest();
                    while (!request.isDone)
                    {
                        new WaitForSeconds(0.1f);
                    }

                    if (request.isNetworkError || request.isHttpError)
                    {
                        Debug.Log(request.error);
                    }
                    else
                    {
                        string      responseBody = request.downloadHandler.text;
                        TurretModel model        = JsonUtility.FromJson <TurretModel>(responseBody);
                        GlobalVariables.AllTurretParams.Add(model.name, model.ToTurretParams());
                    }
                }
            }
        }
    }
コード例 #3
0
ファイル: TargetMode.cs プロジェクト: abrilrys/Clicking-game
    private void OnTurretClicked(TurretMessage m)
    {
        if (from == null)
        {
            from = m.TurretModel;
            turretCursor.transform.position = from.Position;
            turretCursor.SetType(TurretCursorType.Stop);
            return;
        }

        turretCursor.SetType(TurretCursorType.SelectHover);

        if (from == m.TurretModel)
        {
            m.TurretModel.TargetTurret.Model = null;
            m.TurretModel.NotifyChange();
            from = null;
            return;
        }

        from.TargetTurret.Model = m.TurretModel;
        from.NotifyChange();

        from = null;
    }
コード例 #4
0
ファイル: TargetMode.cs プロジェクト: abrilrys/Clicking-game
 private void OnTurretMouseOut(TurretMessage m)
 {
     if (m.TurretModel == hovered)
     {
         hovered = null;
     }
 }
コード例 #5
0
    /**
     * Une tourelle est fixée à une case
     * */
    private void BuildTurret()
    {
        TurretModel turretToBuild = BuildManager.GetInstance().GetTurretToBuild();

        if (turret != null)
        {
            Debug.Log("Can't build there !");
            return;
        }
        else if (GameController.Pay(turretToBuild.Price) != -1)
        {
            Vector3 spawnPosition = new Vector3(transform.position.x, 0.7f, transform.position.z);

            Debug.Log("Turret to build : " + turretToBuild);
            TurretController turretBuilt = new TurretController(turretToBuild, spawnPosition, this.transform);

            turret = turretBuilt;
        }
        else
        {
            //Not enough money
            Debug.Log("Not enough money");
            rend.material.color = errorColor;
        }
    }
コード例 #6
0
    protected override void OnSetupState()
    {
        // Setup Player
        TurretModel = new TurretModel(Game.TimekeeperModel);

        // Setup Environment
        WaveSystem = new WaveSystemModel(Game.GameCamera, Game.TimekeeperModel);
    }
コード例 #7
0
ファイル: TargetMode.cs プロジェクト: abrilrys/Clicking-game
 protected override void OnDisable()
 {
     base.OnDisable();
     from = null;
     Message.RemoveListener <TurretMessage>("click", OnTurretClicked);
     Message.RemoveListener <TurretMessage>("mouse_over", OnTurretMouseOver);
     Message.RemoveListener <TurretMessage>("mouse_exit", OnTurretMouseOut);
 }
コード例 #8
0
    public TurretModel GetTurretToBuild()
    {
        TurretModel building = _turretToBuild;

        _turretToBuild = null;
        _isWaiting     = false;

        return(building);
    }
コード例 #9
0
 protected override void OnViewDestroy()
 {
     base.OnViewDestroy();
     if (_model != null)
     {
         _model.TargetSetEvent -= OnTargetSetEvent;
         _model = null;
     }
 }
コード例 #10
0
 void Start()
 {
     self       = GetComponent <TurretConfig>();
     self.owner = transform.parent.parent.GetComponentInParent <PlayerConfig>();
     model      = self.model;
     targeting  = self.targeting;
     view       = self.view;
     InvokeRepeating("UpdateTarget", self.updateRate, self.updateRate);
 }
コード例 #11
0
    public void SellTurret()
    {
        PlayerStats.Money += turretModel.getSellCost();
        GameObject sellEffect = Instantiate(buildManager.sellEffectParticle, getBuildPosition(), Quaternion.identity);

        Destroy(sellEffect, 3f);
        Destroy(turret);
        turretModel = null;
    }
コード例 #12
0
 private void OnTurretClicked(TurretMessage m)
 {
     if (deletedThisFrame)
     {
         return;
     }                                 // Prevent click-trough
     m.TurretModel.Delete();
     hovered = null;
     turretCursor.SetType(TurretCursorType.Delete);
     deletedThisFrame = true;
 }
コード例 #13
0
    private void OnPlaceTurret(PlaceTurretMessage message)
    {
        TurretModel turretModel = new TurretModel();

        turretModel.Color        = TurretColors.GetRandom();
        turretModel.Position     = message.Position;
        turretModel.TargetTurret = new ModelRef <TurretModel>(null);

        Controller.Instantiate <TurretController>("Turret", turretModel, transform);
        model.Turrets.Add(turretModel);
    }
コード例 #14
0
        /// <summary>
        /// Returns a name for an turret given its properties. Format will follow "XL ARG Combat Turret Mk2"
        /// </summary>
        /// <param name="turret">populated turret object used to derive the name</param>
        /// <returns>readable name for the turret object</returns>
        private string GenerateTurretName(TurretModel turret)
        {
            string turretName = $"{turret.Size.ToString().ToUpper()} {turret.Faction} Turret {CultureInfo.CurrentCulture.TextInfo.ToTitleCase(turret.Type.ToString())} {CultureInfo.CurrentCulture.TextInfo.ToTitleCase(turret.Grade.ToString())}";

            if (turret.Version > 1)
            {
                turretName += $" {turret.Version.Value:00}";
            }

            return(turretName);
        }
コード例 #15
0
    public void selectNode(Node node)
    {
        if (selectedNode == node)
        {
            DeselectNode();
            return;
        }
        selectedNode  = node;
        turretToBuild = null;

        nodeUI.setUITargetOnNode(node);
    }
コード例 #16
0
        public void GenerateTurretName_WeaponHasVersion02()
        {
            TurretModel turret = new TurretModel {
                Faction = FactionType.BUC, Grade = WeaponSystemGrade.mk1, Name = "Some Weapon Name", Size = WeaponSystemSize.s, Type = WeaponSystemType.laser, Class = WeaponSystemClass.turret, Version = 2
            };
            TurretGetter turretGetter = new TurretGetter();
            MethodInfo   methodInfo   = typeof(TurretGetter).GetMethod("GenerateTurretName", BindingFlags.NonPublic | BindingFlags.Instance);

            object[] parameters = { turret };

            // Method under test
            string turretName = (string)methodInfo.Invoke(turretGetter, parameters);

            Assert.Equal("S BUC Turret Laser Mk1 02", turretName);
        }
コード例 #17
0
        public TurretModel PopulateTurretModel(string turretFilePath, List <string> turretFileNameSubParts)
        {
            TurretModel turret = new TurretModel();

            turretFileNameSubParts.ForEach(x => turret = ParseTurretSubstring(turret, x));

            XmlDocument turretXml = new XmlDocument();

            turretXml.Load(turretFilePath);
            turret.Properties = ParseTurretPropertiesXml(turretXml);

            turret.Faction ??= FactionType.GEN;

            turret.Name = GenerateTurretName(turret).Trim();

            return(turret);
        }
コード例 #18
0
ファイル: TargetMode.cs プロジェクト: abrilrys/Clicking-game
 private void OnTurretMouseOver(TurretMessage m)
 {
     hovered = m.TurretModel;
     turretCursor.transform.position = hovered.Position;
     if (m.TurretModel == from)
     {
         turretCursor.SetType(TurretCursorType.Stop);
     }
     else if (from == null)
     {
         turretCursor.SetType(TurretCursorType.SelectHover);
     }
     else
     {
         turretCursor.SetType(TurretCursorType.TargetHover);
     }
 }
コード例 #19
0
        public void ParseTurretSubstring_FactionFound()
        {
            const string weaponSubstring = "arg";
            TurretModel  turret          = new TurretModel();
            TurretGetter turretGetter    = new TurretGetter();
            MethodInfo   methodInfo      = typeof(TurretGetter).GetMethod("ParseTurretSubstring", BindingFlags.NonPublic | BindingFlags.Instance);

            object[] parameters = { turret, weaponSubstring };

            // Method under test
            turret = (TurretModel)methodInfo.Invoke(turretGetter, parameters);

            Assert.Equal(FactionType.ARG, turret.Faction);
            Assert.Null(turret.Size);
            Assert.Null(turret.Type);
            Assert.Null(turret.Grade);
            Assert.Null(turret.Version);
        }
コード例 #20
0
        public void ParseTurretSubstring_VersionFound_AllOthersPreviouslyPopulated()
        {
            const string weaponSubstring = "01";
            TurretGetter turretGetter    = new TurretGetter();
            TurretModel  turret          = new TurretModel {
                Faction = FactionType.BUC, Grade = WeaponSystemGrade.mk3, Name = "Some Weapon Name", Size = WeaponSystemSize.xl, Type = WeaponSystemType.laser
            };
            MethodInfo methodInfo = typeof(TurretGetter).GetMethod("ParseTurretSubstring", BindingFlags.NonPublic | BindingFlags.Instance);

            object[] parameters = { turret, weaponSubstring };

            // Method under test
            turret = (TurretModel)methodInfo.Invoke(turretGetter, parameters);

            Assert.Equal(FactionType.BUC, turret.Faction);
            Assert.Equal(WeaponSystemSize.xl, turret.Size);
            Assert.Equal(WeaponSystemType.laser, turret.Type);
            Assert.Equal(WeaponSystemGrade.mk3, turret.Grade);
            Assert.Equal(1, turret.Version);
        }
コード例 #21
0
        /// <summary>
        /// Parses a substring from an turret file name, determines which property that substring represents, and assigns the corresponding enum
        /// </summary>
        /// <param name="turretObject">original turret object</param>
        /// <param name="turretSubstring">substring taken from an turret's filename e.g. arg, xl, or mk2</param>
        /// <returns>object with the new property added</returns>
        private TurretModel ParseTurretSubstring(TurretModel turretObject, string turretSubstring)
        {
            if (turretObject.Version == null && int.TryParse(turretSubstring, out int turretVersion))
            {
                turretObject.Version = turretVersion;
                return(turretObject);
            }

            if (turretObject.Faction == null && Enum.TryParse(turretSubstring, true, out FactionType turretFaction))
            {
                turretObject.Faction = turretFaction;
                return(turretObject);
            }

            if (turretObject.Size == null && Enum.TryParse(turretSubstring, true, out WeaponSystemSize turretSize))
            {
                turretObject.Size = turretSize;
                return(turretObject);
            }

            if (turretObject.Type == null && Enum.TryParse(turretSubstring, true, out WeaponSystemType turretType))
            {
                turretObject.Type = turretType;

                return(turretObject);
            }

            if (turretObject.Grade == null && Enum.TryParse(turretSubstring, true, out WeaponSystemGrade turretGrade))
            {
                turretObject.Grade = turretGrade;
                return(turretObject);
            }

            if (turretObject.Class == null && Enum.TryParse(turretSubstring, true, out WeaponSystemClass turretClass))
            {
                turretObject.Class = turretClass;
                return(turretObject);
            }

            throw new Exception($"Failed to parse turret substring \"{turretSubstring}\"");
        }
コード例 #22
0
    public void buildTurret(TurretModel turretModelToBuild)
    {
        if (PlayerStats.Money < turretModelToBuild.cost)
        {
            SSTools.ShowMessage("Not Enough Money to Buy", SSTools.Position.bottom, SSTools.Time.oneSecond);
            return;
        }

        PlayerStats.Money -= turretModelToBuild.cost;

        //get turretmodel prefab
        GameObject _turretPrefab = Instantiate(turretModelToBuild.prefab, getBuildPosition(), Quaternion.identity);

        turret           = _turretPrefab;
        this.turretModel = turretModelToBuild;

        //build effect
        GameObject buildEffect = Instantiate(buildManager.buildEffectParticle, getBuildPosition(), Quaternion.identity);

        Destroy(buildEffect, 5f);
    }
コード例 #23
0
        public void ParseTurretSubstring_AllParsingFails()
        {
            const string weaponSubstring = "invalid string to parse";
            TurretModel  turret          = new TurretModel();
            TurretGetter turretGetter    = new TurretGetter();
            MethodInfo   methodInfo      = typeof(TurretGetter).GetMethod("ParseTurretSubstring", BindingFlags.NonPublic | BindingFlags.Instance);

            object[] parameters = { turret, weaponSubstring };


            // Method under test
            void Action() => turret = (TurretModel)methodInfo.Invoke(turretGetter, parameters);

            Exception exception = Assert.Throws <TargetInvocationException>(Action);

            Assert.Equal($"Failed to parse turret substring \"{weaponSubstring}\"", exception.InnerException.Message);

            Assert.Null(turret.Faction);
            Assert.Null(turret.Size);
            Assert.Null(turret.Type);
            Assert.Null(turret.Grade);
            Assert.Null(turret.Version);
        }
コード例 #24
0
 void Awake()
 {
     model     = GetComponent <TurretModel>();
     targeting = GetComponent <TurretTargeting>();
     view      = GetComponent <TurretView>();
 }
コード例 #25
0
 public void selectTurretToBuild(TurretModel turret)
 {
     turretToBuild = turret;
     DeselectNode();
 }
コード例 #26
0
 protected override void OnViewReady()
 {
     base.OnViewReady();
     _model = MVCUtil.GetModel <TurretModel>(this);
     _model.TargetSetEvent += OnTargetSetEvent;
 }
コード例 #27
0
 public void SetTurretToBuild(TurretModel model)
 {
     _turretToBuild = model;
     _isWaiting     = true;
 }
コード例 #28
0
 private void OnTurretMouseOver(TurretMessage m)
 {
     hovered = m.TurretModel;
     turretCursor.SetType(TurretCursorType.DeleteHover);
     turretCursor.transform.position = m.TurretModel.Position;
 }
コード例 #29
0
 public void Init()
 {
     gameObject = new GameObject();
     gameObject.AddComponent <TurretModel>();
     model = gameObject.GetComponent <TurretModel>();
 }
コード例 #30
0
 private void OnTurretMouseOut(TurretMessage m)
 {
     hovered = null;
     turretCursor.SetType(TurretCursorType.Delete);
 }