예제 #1
0
        void CreateButton(UnitCreator creator)
        {
            GameObject       buttonObject = Instantiate <GameObject>(buttonPrefab, this.transform);
            UnitButtonScript button       = buttonObject.GetComponent <UnitButtonScript>();

            button.OnCreation(creator);
        }
예제 #2
0
        void CreateButton(UnitCreator creator)
        {
            GameObject            buttonObject = Instantiate <GameObject>(heroButtonPrefab, legalHeroes.transform);
            ClickableHeroUIScript button       = buttonObject.GetComponentInChildren <ClickableHeroUIScript>();

            button.OnCreation(creator);
        }
예제 #3
0
        public override void OnGUI(MazeCreationWorkflowBackEnd backend)
        {
            unitPrefab = EditorGUILayout.ObjectField("Unit Prefab:", unitPrefab, typeof(GameObject), false) as GameObject;

            if (unitPrefab != null)
            {
                var unit = unitPrefab.GetComponent <MazeUnit>();

                if (unit != null)
                {
                    if (unit.Dimension != backend.selectedMaze.RoomDimension)
                    {
                        EditorUtility.DisplayDialog("Wrong Size!", "The selected Prefab has not the correct dimensions!", "Ok");
                        unitPrefab = null;
                    }
                    else
                    {
                        unitDimensions = unit.Dimension;
                    }
                }
                else
                {
                    EditorUtility.DisplayDialog("Wrong Selection!", "The Selected Prefab is not a MazeUnit!", "Reset");
                    unitPrefab = null;
                }
            }

            unitDimensions = EditorGUILayout.Vector3Field("Cell Size: ", unitDimensions);

            if (unitPrefab == null && GUILayout.Button("Create new Unit"))
            {
                UnitCreator.OpenUnitCreator(backend.selectedMaze.RoomDimension, c => {
                    // get the created Unit prefab automaticaly back to the Editor Window
                    c.onUnitPrefabCreated += prefab =>
                    {
                        var mazeUnit = prefab.GetComponent <MazeUnit>();

                        if (mazeUnit != null)
                        {
                            unitPrefab = prefab;
                        }
                    };
                });
            }

            EditorGUILayout.Space();

            if (unitPrefab == null)
            {
                removeMode = GUILayout.Toggle(removeMode || Event.current.shift, "Remove", "Button");
                return;
            }

            EditorGUILayout.BeginHorizontal();

            addMode    = GUILayout.Toggle(!removeMode, "Add", "Button");
            removeMode = GUILayout.Toggle(!addMode || Event.current.shift, "Remove", "Button");

            EditorGUILayout.EndHorizontal();
        }
예제 #4
0
        static void Main(string[] args)
        {
            Creator creator = new UnitCreator();

            List <IUnit> characters = new List <IUnit>();

            characters.Add(creator.CreateUnit(UnitType.Fighter, 2));
            characters.Add(creator.CreateUnit(UnitType.Archer, 5));
            characters.Add(creator.CreateUnit(UnitType.Mage, 8));
            characters.Add(creator.CreateUnit(UnitType.Archer, 4));
            characters.Add(creator.CreateUnit(UnitType.Fighter, 6));


            foreach (var c in characters)
            {
                Console.WriteLine(c.SaySomething());
            }

            foreach (var c in characters)
            {
                Console.WriteLine(c.ShowDetails());
            }

            Console.ReadKey();
        }
예제 #5
0
        public GameObject AddButton(UnitCreator unit)
        {
            GameObject unitButton = Object.Instantiate(buttonPrefab, targetTransform);

            unitButton.name = unit.name;
            unitButton.GetComponent <UnitButtonScript>().OnCreation(unit);
            return(unitButton);
        }
예제 #6
0
        void SetToChosenHero()
        {
            Hero hero = UnitCreator.FindUnitPrefabByName(Global.instance.armySavingManager.currentSave.heroPrefabPath).GetComponent <Hero>();

            OnHeroChoice(hero.avatarTransparent);
            UnitStatShower.UpdateUnitInfo(hero);
            pedestal.ShowUnit(hero.gameObject);
        }
예제 #7
0
 public void AddUnit(UnitCreator unit)
 {
     if (ownedUnits.ContainsKey(unit) == false)
     {
         GameObject button = AddButton(unit);
         ownedUnits.Add(unit, button.GetComponent <UnitButtonScript>());
     }
     ownedUnits[unit].amount++;
     currentMoney -= unit.GetCost();
 }
예제 #8
0
    void InstantiateUnit(string unitID, int playerID, int index)
    {
        GameObject UnitObject       = UnitCreator.FindUnitPrefabByName(unitID);
        GameObject InstantiatedUnit = Instantiate(UnitObject, Vector3.zero, UnitObject.transform.rotation);
        Unit       myUnit           = InstantiatedUnit.GetComponent <Unit>();

        myUnit.index = index;
        Global.instance.playerTeams[playerID].players[0].AddUnit(myUnit);
        InstantiatedUnit.name = myUnit.info.unitName;
    }
예제 #9
0
        private void DivideQuantitiesWithSameUnits()
        {
            var myPascal = new UnitCreator(StandardUnitsCatalog.Kilogram).Divide(StandardUnitsCatalog.Meter, StandardUnitsCatalog.Second, StandardUnitsCatalog.Second).Create();
            var dividend = new Quantity <double>(782.0, StandardUnitsCatalog.Pascal);
            var divisor  = new Quantity <double>(100.0, myPascal);
            var result   = dividend / divisor;

            Console.WriteLine("--- Divide pressure with pressure ---");
            Console.WriteLine("{0} / {1} = {2}", dividend, divisor, result);
            Console.WriteLine();
        }
예제 #10
0
    public void OnCreation(UnitCreator creator)
    {
        myImage        = GetComponent <Image>();
        myImage.sprite = creator.prefab.GetComponent <Hero>().avatarTransparent;
        SpriteState ss = new SpriteState();

        ss.highlightedSprite = creator.prefab.GetComponent <Hero>().avatarHighlightedTransparent;
        GetComponentInChildren <Button>().spriteState = ss;
        unitCreator = creator;
        GetComponent <Button>().onClick.AddListener(TaskOnClick);
    }
예제 #11
0
        public void TryAddUnit(Button button)
        {
            UnitCreator unit = button.GetComponent <UnitButtonScript>().unitCreator;

            if (CanBeLegallyAdded(unit))
            {
                //This has to be manually these two cause you dont want the second one done on each AddUnit (not when loading army).
                AddUnit(unit);
                Global.instance.armySavingManager.currentSave.AddUnit(unit);
            }
        }
 void Start()
 {
     if (GetComponent <UnitButtonScript>() != null)
     {
         myUnit = GetComponent <UnitButtonScript>().unitCreator;
     }
     else
     {
         myUnit = GetComponent <ClickableHeroUIScript>().unitCreator;
     }
     pedestal = FindObjectOfType <Pedestal>();
 }
예제 #13
0
	private static bool IsInstance () {
		if (instance == null) {
			instance = FindObjectOfType (typeof (UnitCreator)) as UnitCreator;
			
			if (instance == null) {
				Debug.LogError ("Can't seem to find any Gameobject that has UnitCreator class");
				return false;
			}
		}
		
		return true;
	}
예제 #14
0
        public int GetQuantityOfUnit(UnitCreator unit)
        {
            int returnInt = 0;

            foreach (string possible in unitPrefabPaths)
            {
                if (unit.name == possible)
                {
                    returnInt++;
                }
            }
            return(returnInt);
        }
예제 #15
0
        private void CalculatePressureUnderWater()
        {
            var densityUnit      = new UnitCreator(StandardUnitsCatalog.Kilogram).Divide(StandardUnitsCatalog.CubicMeter).Create();
            var accelerationUnit = new UnitCreator(StandardUnitsCatalog.MetersPerSecond).Divide(StandardUnitsCatalog.Second).Create();
            var depth            = new Quantity <double>(30.0, StandardUnitsCatalog.Meter);
            var density          = new Quantity <double>(1000.0, densityUnit);
            var gravity          = new Quantity <double>(9.81, accelerationUnit);
            var pressure         = depth * gravity * density;

            Console.WriteLine("--- Pressure under water ---");
            Console.WriteLine("At {0}: {1}", depth, pressure);
            Console.WriteLine();
        }
    void CreateScriptableObject()
    {
        //CreateAssetMenuAttribute menuattribute = new CreateAssetMenuAttribute();

        UnitCreator obj = ScriptableObject.CreateInstance <UnitCreator>();

        obj.m_unitname      = m_unitname;
        obj.m_health        = m_health;
        obj.m_movementspeed = m_movementspeed;
        obj.m_damageamount  = m_damageamount;
        obj.m_buildcost     = m_buildcost;
        obj.m_worthkilling  = m_worthkilling;
        obj.m_unittype      = (UnitCreator.UnitType)m_unittype;
    }
        public void Simple()
        {
            var producing = UnitCreator.CreateUnit("simple producing unit");

            State.AddUnit(producing, new Vector2(0, 0));

            Engine.ProduceUnit(producing, "simple combat unit");
            FullUpdate();

            var expected = State.Units.FirstOrDefault(u => u.GetType() == typeof(SimpleCombatUnit));

            Assert.NotNull(expected);
            Assert.AreEqual(expected.Id, 1); // но это необязательно
            Assert.AreEqual(expected.Position, new Vector2(1, 1));
        }
예제 #18
0
    private static bool IsInstance()
    {
        if (instance == null)
        {
            instance = FindObjectOfType(typeof(UnitCreator)) as UnitCreator;

            if (instance == null)
            {
                Debug.LogError("Can't seem to find any Gameobject that has UnitCreator class");
                return(false);
            }
        }

        return(true);
    }
예제 #19
0
 public void OnCreation(UnitCreator _unitCreator)
 {
     screen         = FindObjectOfType <AMScreen_UnitsChoice>();
     unitCreator    = _unitCreator;
     myUnit         = unitCreator.prefab.GetComponent <Unit>();
     limit          = GetComponentsInChildren <Text>()[2];
     limit.fontSize = 20;
     theName        = GetComponentsInChildren <Text>()[0];
     value          = GetComponentsInChildren <Text>()[1];
     theName.text   = myUnit.info.unitName;
     this.GetComponent <Button>().onClick.AddListener(() => OnButtonPressed());
     limit.color   = Color.white;
     theName.color = Color.white;
     value.color   = Color.white;
     value.text    = myUnit.statistics.cost.ToString();
     amount        = 0;
 }
예제 #20
0
    //AudioManager aScript;

    // Use this for initialization
    void Start()
    {
        int x = 20;
        int y = 40;

        GameObject turnMan     = Instantiate(tmanager);
        GameObject mapCreator  = Instantiate(mcreator);
        GameObject unitCreator = Instantiate(ucreator);
        GameObject inputMan    = Instantiate(imanager);

        //GameObject audioMan = Instantiate (amanager);
        tScript         = turnMan.GetComponent <TurnManagerScript> ();
        mScript         = mapCreator.GetComponent <MapCreation> ();
        uScript         = unitCreator.GetComponent <UnitCreator> ();
        iScript         = inputMan.GetComponent <InputManagerScript> ();
        uScript.mapSize = new Vector2(20, 40);

        int[,] map = new int [x, y];
        for (int i = 0; i < x; ++i)
        {
            for (int j = 0; j < y; ++j)
            {
                if (i == 0 || i == x - 1 || j == 0 || j == y - 1)
                {
                    map [i, j] = 0;
                }
                else
                {
                    map [i, j] = Random.Range(1, 4);
                }
            }
        }
        //just to test
        map [10, 10] = -1;
        map [10, 20] = -1;
        mScript.setMatrix(map, x, y, new Vector3(45, -45, 0), 0.8f, Color.white);

        uScript.tutorialUnits();
        turnMan.GetComponent <TurnManagerScript> ().unitMap  = uScript.getUnitMap();
        turnMan.GetComponent <TurnManagerScript> ().unitList = uScript.getUnitLists();
        tScript.mapSize = new Vector2(20, 40);
        tScript.terrain = map;
        inputMan.GetComponent <InputManagerScript> ().setTurnMan(tScript);
        inputMan.GetComponent <InputManagerScript> ().setMapCreat(mScript);
    }
예제 #21
0
        public void Initialize(BattleLogicController battleLogicController, Dictionary <UnitType, int> unitCredits,
                               LevelConfiguration levelConfiguration)
        {
            var unitCreatorGO = Instantiate(unitCreatorPrefab);

            unitCreator = unitCreatorGO.GetComponent <UnitCreator>();
            unitCreator.Initialize();
            unitCreator.unitCreateEvent += OnUnitCreation;

            playerBar = GameObject.FindGameObjectWithTag("PlayerBar").GetComponent <ArmyBar>();
            enemyBar  = GameObject.FindGameObjectWithTag("EnemyBar").GetComponent <ArmyBar>();

            SetUpButtons(unitCredits);

            winScreen  = GameObject.FindGameObjectWithTag("WinCondition");
            loseScreen = GameObject.FindGameObjectWithTag("LoseCondition");

            this.battleLogicController = battleLogicController;
            this.levelConfiguration    = levelConfiguration;
        }
예제 #22
0
 void RemoveUnit(UnitCreator unit)
 {
     if (ownedUnits[unit].amount > 1)
     {
         ownedUnits[unit].amount--;
     }
     else
     {
         if (Application.isEditor)
         {
             Object.DestroyImmediate(ownedUnits[unit].gameObject);
         }
         else
         {
             Object.Destroy(ownedUnits[unit].gameObject);
         }
         ownedUnits.Remove(unit);
     }
     currentMoney += unit.GetCost();
     Global.instance.armySavingManager.currentSave.RemoveUnit(unit);
 }
예제 #23
0
    public void SpawnUnit(GameObject unit)
    {
        UnitCreator unitdataobj = unit.GetComponent <UnitDataGetter>().UnitData;

        if (unitdataobj.m_buildcost <= m_currentgold)
        {
            Instantiate(unit);
            if (unitdataobj.m_unittype == UnitCreator.UnitType.Miner)
            {
                unit.transform.position = m_minerunitspawnpointplayer.position;
            }
            else
            {
                unit.transform.position = m_unitspawnpointplayer.position;
            }
            m_currentgold -= unitdataobj.m_buildcost;
        }
        else
        {
            Debug.Log("That unit is to expenisve");
        }
    }
예제 #24
0
 public UnitController(GridNode[,] gridNodes)
 {
     this.gridNodes  = gridNodes;
     unitCreator     = new UnitCreator(gridNodes);
     moveHighlighter = Object.FindObjectOfType <MoveHighlighter>();
 }
예제 #25
0
 public void SetHero(UnitCreator hero)
 {
     heroPrefabPath = hero.name;
 }
예제 #26
0
        public void TryRemoveUnit(Button button)
        {
            UnitCreator unit = button.GetComponent <UnitButtonScript>().unitCreator;

            RemoveUnit(unit);
        }
예제 #27
0
 public void RemoveUnit(UnitCreator unit)
 {
     unitPrefabPaths.Remove(unit.name);
 }
예제 #28
0
 bool CanBeLegallyAdded(UnitCreator unitCreator)
 {
     return(currentMoney >= unitCreator.GetCost() && Global.instance.armySavingManager.currentSave.GetQuantityOfUnit(unitCreator) < unitCreator.GetLimit());
 }
예제 #29
0
        public MapEditorScreen(string map)
        {
            TransitionOnTime  = TimeSpan.FromSeconds(1.5);
            TransitionOffTime = TimeSpan.FromSeconds(0.5);

            UnitCreator.Initialize();

            _nullCursor = new Vector2(-1, -1);
            _terrains   = new[]
            {
                new Terrain("Plains", false, 1, 1, 1, 2, 1, 1, 1, -1, -1),
                new Terrain("Road", false, 0, 1, 1, 1, 1, 1, 1, -1, -1),
                new Terrain("Wood", true, 3, 1, 1, 3, 3, 2, 1, -1, -1),
                new Terrain("Mountain", false, 4, 2, 1, -1, -1, -1, 1, -1, -1),
                new Terrain("Wasteland", false, 2, 1, 1, 3, 3, 2, 1, -1, -1),
                new Terrain("Ruins", true, 1, 1, 1, 2, 1, 1, 1, -1, -1),
                new Terrain("Sea", false, 0, -1, -1, -1, -1, -1, 1, 1, 1),
                new Terrain("BridgeSea", false, 0, 1, 1, 1, 1, 1, 1, 1, 1),
                new Terrain("BridgeRiver", false, 0, 1, 1, 1, 1, 1, 1, 1, 1),
                new Terrain("River", false, 0, 2, 1, -1, -1, -1, 1, -1, -1),
                new Terrain("Beach", false, 0, 1, 1, 2, 2, 1, 1, -1, 1),
                new Terrain("Rough Sea", false, 0, -1, -1, -1, -1, -1, 1, 2, 2),
                new Terrain("Mist", true, 0, -1, -1, -1, -1, -1, 1, 1, 1),
                new Terrain("Reef", true, 0, -1, -1, -1, -1, -1, 1, 2, 2)
            };

            // Load map data from TXT file
            var flines = File.ReadLines("Content/Maps/" + map + ".txt")
                         .Where(l => l.Length != 0 && !l.StartsWith("#"))
                         .ToList();

            //_mapName = flines[0].Trim();
            _mapWidth  = Convert.ToInt32(flines[1].Trim());
            _mapHeight = Convert.ToInt32(flines[2].Trim());
            var plyers = flines.GetRange(3, 4).Where(l => !l.StartsWith("0")).ToArray();

            _players = new Player[plyers.Length];
            for (var i = 0; i < _players.Length; ++i)
            {
                _players[i] = new Player(i + 1, Convert.ToInt32(plyers[i].Trim()));
            }
            var terrainLines = new string[_mapHeight];
            var read         = 0;

            for (var i = 7; i < _mapHeight + 7; ++i)
            {
                var line = flines[i].Trim();
                terrainLines[read++] = line;
            }
            var buildings = flines;

            buildings.RemoveRange(0, _mapHeight + 7);

            // Generate terrain according to map data
            _mapTerrains = new Terrain[_mapHeight, _mapWidth];
            for (var y = 0; y < _mapHeight; ++y)
            {
                for (var x = 0; x < _mapWidth; ++x)
                {
                    var type = terrainLines[y][x] >= '0' && terrainLines[y][x] <= '9'
                                                ? terrainLines[y][x] - '0'
                                                : terrainLines[y][x] - 'a' + 10;
                    _mapTerrains[y, x] = _terrains[type];
                }
            }

            var bOrder = new[] { "Headquarter", "City", "Factory", "Port", "Airport" };

            _mapBuildings = new Building[_mapHeight, _mapWidth];
            _units        = new List <Unit>();
            foreach (var data in buildings.Select(b => b.Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries)))
            {
                var p = Convert.ToInt32(data[2]);
                if (data.Length == 5)
                {
                    var u = UnitCreator.Unit(
                        data[3],
                        _players[p - 1],
                        new Vector2(
                            Convert.ToInt32(data[1]),
                            Convert.ToInt32(data[0])));
                    u.Life = Convert.ToInt32(data[4]) * 10;
                    _units.Add(u);
                }
                else if (data.Length == 4)
                {
                    var x = Convert.ToInt32(data[1]);
                    var y = Convert.ToInt32(data[0]);
                    _mapBuildings[y, x] = new Building(bOrder[Convert.ToInt32(data[3])], p == 0 ? null : _players[p - 1], new Vector2(x, y));
                }
            }

            _camera = new Vector2(-50, -80);
        }
예제 #30
0
	void Awake () {
		instance = this;
	}
예제 #31
0
 private void Awake()
 {
     instance = this;
 }
예제 #32
0
 void Awake()
 {
     instance = this;
 }