//**********************************
    //какой то глюк с позицией планеты, если не в 0.0 то возвращает непонятно что
    //****************************************

    private void setVertices()
    {
        camPosition = worldToLocal(cam.transform.position);        // позиция камеры
        magic       = Quaternion.FromToRotation(curAxis, camPosition);
        //определяю магию для плавного нарастания детализации
        camDistance = Vector3.Magnitude(camPosition);        //   Mathf.Sqrt(camPosition.x*camPosition.x+camPosition.y*camPosition.y+camPosition.z*camPosition.z);
        float min = 0.8f;
        float max = 2.5f;

        if (camDistance >= 1.75f * radius)
        {
            coordCorrection = max;
        }
        else
        {
            if (camDistance <= radius)
            {
                coordCorrection = min;
            }
            else
            {
                float bebe = Mathf.Pow((camDistance / radius - 0.75f), 0.9f);
                coordCorrection = Mathf.Lerp(min, max, bebe);
            }
        }

        //ставлю точки

        float texCoorScale = 200f;

        for (int i = 0; i < vertOld.Length; i++)
        {
            //есть сохраненная позиция в меше которую легко повернуть к камере
            Vector3 turnedPos = vertOld[i];
            turnedPos.x *= coordCorrection;
            turnedPos.z *= coordCorrection;

            turnedPos = magic * turnedPos;
            turnedPos.Normalize();
            float height = MagicData.Height(turnedPos);
            vert[i] = turnedPos * radius * height;
            Vector3 pos   = turnedPos;
            float   xCoor = Mathf.Abs(pos.x);
            float   yCoor = Mathf.Abs(pos.y);
            float   zCoor = Mathf.Abs(pos.z);
            if (xCoor >= yCoor && xCoor >= zCoor)
            {
                uv[i] = new Vector2(pos.y / pos.x, pos.z / pos.x);
            }
            if (yCoor > xCoor && yCoor >= zCoor)
            {
                uv[i] = new Vector2(pos.x / pos.y, pos.z / pos.y);
            }
            if (zCoor > yCoor && zCoor > xCoor)
            {
                uv[i] = new Vector2(pos.y / pos.z, pos.x / pos.z);
            }
            uv[i] *= texCoorScale;
        }
    }
    // Use this for initialization
    void Start()
    {
        cam = GameObject.Find("Camera");
        //gameObject.transform.eulerAngles = new Vector3(0,0,0);
        mesh = gameObject.GetComponent <MeshFilter>().mesh;

        //сохраняю старые позиции точек

        vertOld = mesh.vertices;

        //подымаю от нуля позиции точек до 1
        for (int i = 0; i < vertOld.Length; i++)
        {
            vertOld[i] += new Vector3(0, 1, 0);
        }

        vert = new Vector3[vertOld.Length];
        uv   = new Vector2[vertOld.Length];
        Noise3D.init(125);

        MagicData.Init();


        CreateOcean();
        CreateClouds();
        CreateTrees();
    }
Example #3
0
        public bool unequipItem(ItemData.EQUIP slot)
        {
            int equipSlotIndex = (int)slot;

            if (player.getInventory().addItem(slots[equipSlotIndex].getItemId(), slots[equipSlotIndex].getItemAmount()))
            {
                if (slot == ItemData.EQUIP.HAT)
                {
                    if (RuneCraft.wearingTiara(player))
                    {
                        RuneCraft.toggleRuin(player, getItemInSlot(slot), false);
                    }
                }
                slots[equipSlotIndex].setItemId(-1);
                slots[equipSlotIndex].setItemAmount(0);
                player.getPackets().refreshEquipment();
                player.getUpdateFlags().setAppearanceUpdateRequired(true);
                refreshBonuses();
                player.setEntityFocus(65535);
                if (slot == ItemData.EQUIP.WEAPON)
                {
                    setWeapon();
                    MagicData.cancelAutoCast(player, true);
                }
                return(true);
            }
            return(false);
        }
Example #4
0
        public void SelectTargetWindows(MagicData c, int casts = 1, Random random = default)
        {
            var t = c.Target;

            SelectTargetWindows(t, casts, random);
            Command = Memory.KernelBin.BattleCommands[2];
            Magic   = c;
        }
Example #5
0
        public MagicReleaser CreateReleaser(MagicData magic, IReleaserTarget target, ReleaserType ty)
        {
            var view = View.CreateReleaserView(target.Releaser.View,
                                               target.ReleaserTarget.View,
                                               target.TargetPosition);
            var mReleaser = new MagicReleaser(magic, target, this.ReleaserControllor, view, ty);

            this.JoinElement(mReleaser);
            return(mReleaser);
        }
    public CommandUseMagicSkill(MagicData magicData, int skillID)
    {
        SkillData skillData = DataManager.Instance.GetSkillDataSet ().GetSkillData (skillID);

        commandType = CommandType.Attack;
        commandName = skillData.name;
        commandDescription = skillData.description;
        targetType = skillData.targetType;
        preExecutionSpeed = Mathf.RoundToInt(magicData.basicSPD * skillData.preSPDMultiplier);
        postExecutionRecover = skillData.postSPDMultiplier == 0 ? 0 : Mathf.RoundToInt(6000f / magicData.basicSPD / skillData.postSPDMultiplier);

        this.skillID = skillID;
    }
Example #7
0
 public MagicReleaser(
     MagicData magic,
     IReleaserTarget target,
     GControllor controllor,
     IMagicReleaser view,
     ReleaserType type)
     : base(controllor, view)
 {
     ReleaserTarget = target;
     Magic          = magic;
     RType          = type;
     OnExitedState  = ReleaseAll;
 }
    void camHandle()
    {
        //запрет на перемещение внутри планеты
        Vector3 camPosition       = ThisMeshPlanet.worldToLocal(transform.position);
        float   camDistance       = Vector3.Magnitude(camPosition);
        float   heightAtThisPoint = MagicData.Height(camPosition);
        Vector3 posit             = camPosition;

        posit.Normalize();
        if (camDistance < (posit * heightAtThisPoint * (ThisMeshPlanet.radius + height_of_sight)).magnitude)
        {
            transform.position = ThisMeshPlanet.localToWorld(posit * heightAtThisPoint * (ThisMeshPlanet.radius + height_of_sight));
        }
    }
Example #9
0
    public void ReleaseMagic(MagicData magic)
    {
        Resources.UnloadUnusedAssets();

        if (currentReleaser != null)
        {
            GObject.Destory(currentReleaser);
        }

        var per = curState.Perception as BattlePerception;

        this.currentReleaser = per.CreateReleaser(magic,
                                                  new GameLogic.Game.LayoutLogics.ReleaseAtTarget(this.releaser, this.target),
                                                  ReleaserType.Magic);
    }
Example #10
0
    public MagicData Load(string path)
    {
        if (File.Exists(path))
        {
            BinaryFormatter formatter = new BinaryFormatter();
            FileStream      file      = new FileStream(path, FileMode.Open);

            MagicData data = formatter.Deserialize(file) as MagicData;
            file.Close();

            return(data);
        }
        else
        {
            Debug.LogError("não encontrado");
            return(null);
        }
    }
Example #11
0
    void SetTree(int number, GameObject CurTree)
    {
        Vector3 pos = Random.insideUnitSphere;

        pos.Normalize();
        float height = MagicData.Height(pos);        //two.Height(pos);

        if (height > 1)
        {
            GameObject currentTree = (GameObject)Instantiate(CurTree);
            currentTree.transform.parent   = gameObject.transform;
            currentTree.transform.position = pos * (radius) * height;
            currentTree.transform.up       = pos;
            currentTree.transform.RotateAroundLocal(pos, Random.value * 360);
            Vector3 scale = new Vector3((0.5f + Random.value * 0.5f), (0.5f + Random.value * 0.5f), (0.5f + Random.value * 0.5f));
            currentTree.transform.localScale.Scale(scale);
        }
    }
Example #12
0
    public void Save(MagicData data)
    {
        BinaryFormatter formatter = new BinaryFormatter();

        if (!Directory.Exists(Directory.GetCurrentDirectory() + "\\Configs"))
        {
            Directory.CreateDirectory(Directory.GetCurrentDirectory() + "\\Configs");
        }
        string caminho = Directory.GetCurrentDirectory() + "\\Configs\\" + data.Name + ".mgc";

        print(caminho);
        FileStream file = new FileStream(caminho, FileMode.Create);

        formatter.Serialize(file, data);
        file.Close();

        //adicionar magia
        Magics = LoadAll();
    }
Example #13
0
        private void AddMagic(MagicData magicData)
        {
            RaycastGizmos(out var gizmo);

            if (!(gizmo is CommanderGizmo commanderGizmo))
            {
                return;
            }

            var magicOverride = commanderGizmo.Data.MagicOverrides.SingleOrDefault(x => x.Path == magicData.magicPath);

            if (magicOverride == null)
            {
                magicOverride = new MagicOverride(magicData.magicPath, 0);
                commanderGizmo.Data.MagicOverrides.Add(magicOverride);
            }
            magicOverride.MagicValue++;

            commanderGizmo.SetData(commanderGizmo.Data);
        }
Example #14
0
    private void Open()
    {
        if (data != null)
        {
            if (!EditorUtility.DisplayDialog("Cancel", "Open file will lost current edit,Do you want to over it", "Yes", "Cancel"))
            {
                return;
            }
        }
        var path = EditorUtility.OpenFilePanel("Open", Application.dataPath + "/Resources", "xml");

        if (string.IsNullOrEmpty(path))
        {
            return;
        }
        var xml = File.ReadAllText(path, XmlParser.UTF8);

        data        = XmlParser.DeSerialize <MagicData> (xml);
        currentPath = path;
    }
Example #15
0
    private void New()
    {
        if (data != null)
        {
            if (!EditorUtility.DisplayDialog("Cancel", "The operator will lost current edit,Do you want to over it!", "Yes", "Cancel"))
            {
                return;
            }
        }

        currentPath = null;
        data        = new MagicData()
        {
            key = "new_magic", name = "New Magic"
        };
        data.Containers.Add(new EventContainer()
        {
            type = Layout.EventType.EVENT_START
        });
    }
Example #16
0
            public static void Postfix(UnitManager __instance)
            {
                try
                {
                    String filePath = FindOverridenFile("Magic");
                    if (filePath is null)
                    {
                        Log.Warning($"[{nameof(UnitManager_ReadCSV_MagicData)}] File not found: Magic.json");
                        return;
                    }

                    Int32       language  = StWorkProxy.CurrentLanguage;
                    MagicData[] magicList = __instance.magicData;

                    foreach (Reference <TransifexEntry> pair in PrepareTexts(filePath).Enumerate())
                    {
                        String      text      = pair.Value.Text;
                        MagicDataId reference = MagicDataId.Parse(pair.Key);
                        MagicData   magic     = magicList[reference.Id];
                        switch (reference.Property)
                        {
                        case "Name":
                            magic.name[language] = text;
                            break;

                        case "Description":
                            magic.description[language] = text;
                            break;

                        default:
                            throw new NotSupportedException(reference.ToString());
                        }
                    }

                    Log.Message($"[{nameof(UnitManager_ReadCSV_MagicData)}] Loaded: Magic.json");
                }
                catch (Exception ex)
                {
                    Log.Error(ex, $"[{nameof(UnitManager_ReadCSV_MagicData)}] Failed to load Magic.json");
                }
            }
Example #17
0
    void ChangeMagic(int id)
    {
        if (id >= SaveMagic.saveMagic.Magics.Length)
        {
            id = 0;
        }
        else if (id < 0)
        {
            id = SaveMagic.saveMagic.Magics.Length - 1;
        }

        IdMmagic = id;
        magic    = SaveMagic.saveMagic.Magics[IdMmagic];

        if (magic.Type == (int)Magic.TypeMagic.Target)
        {
            Dot.GetComponent <Image>().color = Color.yellow;
        }
        else
        {
            Dot.GetComponent <Image>().color = Color.white;
            Dot.transform.GetChild(0).gameObject.SetActive(false);
        }
    }
Example #18
0
        public bool equipItem(int itemID, int slot)
        {
            ItemData.EQUIP equipType = ItemData.getItemType(itemID);
            int            amount    = player.getInventory().getAmountInSlot(slot);
            bool           stackable = ItemData.forId(itemID).isStackable();
            bool           twoHanded = ItemData.isTwoHanded(itemID);

            if (equipType == ItemData.EQUIP.NOTHING)
            {
                player.getPackets().sendMessage("Unable to find an item slot for item : " + itemID + " , please report this to a staff member.");
                return(false);
            }
            if (duelRuleActive(equipType))
            {
                return(true);
            }
            if (twoHanded)
            {
                if (player.getInventory().getTotalFreeSlots() < getNeeded2HSlots())
                {
                    player.getPackets().sendMessage("Not enough space in your inventory.");
                    return(false);
                }
            }
            if (!player.getInventory().deleteItem(itemID, slot, amount))
            {
                return(false);
            }
            if (twoHanded && getItemInSlot(ItemData.EQUIP.SHIELD) != -1)
            {
                if (!unequipItem(ItemData.EQUIP.SHIELD))
                {
                    return(false);
                }
            }
            if (equipType == ItemData.EQUIP.SHIELD)
            {
                if (getItemInSlot(ItemData.EQUIP.WEAPON) != -1)
                {
                    if (ItemData.isTwoHanded(slots[3].getItemId()))
                    {
                        if (!unequipItem(ItemData.EQUIP.WEAPON))
                        {
                            return(false);
                        }
                    }
                }
            }
            int equipSlot = Convert.ToInt32(equipType);

            if (slots[equipSlot].getItemId() != itemID && slots[equipSlot].getItemId() > 0)
            {
                if (!player.getInventory().addItem(slots[equipSlot].getItemId(), slots[equipSlot].getItemAmount(), slot))
                {
                    return(false);
                }
                if (equipType == ItemData.EQUIP.HAT)
                {
                    RuneCraft.toggleRuin(player, slots[equipSlot].getItemId(), false);
                    if (RuneCraft.getTiaraIndex(itemID) != -1)                   // switching from tiara to tiara.
                    {
                        RuneCraft.toggleRuin(player, itemID, true);
                    }
                }
            }
            else if (stackable && slots[equipSlot].getItemId() == itemID)
            {
                amount = slots[equipSlot].getItemAmount() + amount;
            }
            else if (slots[equipSlot].getItemId() != -1)
            {
                player.getInventory().addItem(slots[equipSlot].getItemId(), slots[equipSlot].getItemAmount(), slot);
            }
            slots[equipSlot].setItemId(itemID);
            slots[equipSlot].setItemAmount(amount);
            player.getPackets().refreshEquipment();
            player.getUpdateFlags().setAppearanceUpdateRequired(true);
            if (equipType == ItemData.EQUIP.HAT)
            {
                RuneCraft.toggleRuin(player, itemID, RuneCraft.wearingTiara(player));
            }
            if (equipType == ItemData.EQUIP.WEAPON)
            {
                setWeapon();
                MagicData.cancelAutoCast(player, true);
            }
            refreshBonuses();
            player.setEntityFocus(65535);
            return(true);
        }
Example #19
0
 void Start()
 {
     Cam            = Camera.main;
     magic          = SaveMagic.saveMagic.Magics[IdMmagic];
     Cursor.visible = false;
 }